使用Ruby的Dir.glob时实现多种操作系统一致性的最佳实践

时间:2018-09-10 18:10:15

标签: ruby canonicalization

我最近在调试会话中注意到Dir.glob(又名Dir[])的行为取决于操作系统。具体来说,文件返回的顺序是不同的。

当您知道该代码将在各种操作系统上使用时,建议在Ruby中使用Dir.glob的推荐方法是什么?

示例差异: 我在Linux和Windows中克隆了项目DeckSchrubber

Windows:

irb(main):003:0> puts Dir['./*']
./CHANGELOG.md
./LICENSE
./main.go
./README.md
./types.go
./util
=> nil

Linux:

irb(main):011:0> puts Dir['./*']
./main.go
./LICENSE
./util
./types.go
./README.md
./CHANGELOG.md
=> nil

我再一次要求解决方案和习惯用法,以确保输出规范。

1 个答案:

答案 0 :(得分:0)

通常,FS库在Mac和Linux上的行为方式不同。我不认为Windows是Ruby的平台。

因此,根据我的经验,仅添加一个条件运算符就足够了,该运算符可以检查当前平台名称,并以所需的方式对结果进行排序。据我所记得,区别在于返回文件的顺序。