2013-08-01 68 views
0

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

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

'ls-files'不是一个linux命令。它是'git'命令的一个参数。 – sawa

+0

运行'bundle install'后是否收到错误? – mihai

+0

你的Windows机器上安装了Git吗?如果您使用的是Bundler 1.3,并且在您的Linux机器上运行'bundle package --all',它会立即评估'gemspec',并且当应用程序移动到Windows机器时您不应该遇到此问题。有关更多信息,请参阅此“捆绑器”问题:https://github.com/bundler/bundler/issues/2287。 –

回答

0

首先确定您的当前工​​作目录是否适合您的运行脚本。 在开头添加此行:

puts Dir.pwd

这会告诉你在哪个当前工作目录下ruby正在运行你的脚本。你很可能会看到它不是你认为它的地方。然后确保你正确地为Windows指定了路径名。请参阅该文档在这里如何正确格式的路径名的窗口:

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

然后,使用Dir.chdir改变工作目录到的text.txt是的地方,或根据指定的绝对路径名的文件到上述IO文档中的说明。应该这样做......

添加,如果你把你的脚本文件中的文本文件,这可能是最方便的一个第三方案:

Dir.chdir(File.dirname(__FILE__))

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