0

我有一个在 Linux 环境中工作的 RoR 应用程序。我必须将其移至 Windows 环境。当我跑

bundle exec rails server

我看到这个错误

There was a Errno::ENOENT while loading omniauth-cas.gemspec:
No such file or directory - git ls-files -- bin/* from

当我打开文件时,我看到了这些行

gem.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
gem.files         = `git ls-files`.split("\n")
gem.test_files    = `git ls-files -- {test,spec,features}/*`.split

在这些行中,我可以理解这ls-files是一个 Linux 命令,它在 Windows 中永远无法工作。我应该用什么替换这个语句以便它在 Windows 中运行?

4

1 回答 1

0

首先弄清楚您当前的工作目录是用于运行脚本的。在开头添加这一行:

puts Dir.pwd.

这将告诉您 ruby​​ 在哪个当前工作目录中运行您的脚本。你很可能会看到它不是你假设的地方。然后确保为 Windows 正确指定路径名。请参阅此处的文档如何正确格式化 Windows 的路径名:

http://www.ruby-doc.org/core/classes/IO.html

然后要么使用 Dir.chdir 将工作目录更改为 text.txt 所在的位置,要么根据上述 IO 文档中的说明指定文件的绝对路径名。那应该这样做...

添加第三种解决方案,如果您将文本文件放在脚本文件中,这可能是最方便的解决方案:

Dir.chdir(File.dirname(__FILE__))

这将自动将当前工作目录更改为与运行脚本的 .rb 文件相同的目录。

于 2013-08-01T13:03:25.863 回答