2013-08-01 40 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文件所在的目錄相同。