我已經編寫了一個rake任務來通過系統運行一些其他rake任務(以便將ActiveRecord綁定到不同的數據庫,其他事情)。它在我的OS X機器上工作正常,但在我們的生產Linux機器上出現加載錯誤時失敗。任務平凡歸結爲:通過系統執行其他rake任務的rake任務失敗 - 沒有這樣的文件要加載rake
namespace :jobs do
task :foo => :environment do
system "rake jobs:bar"
end
task :bar => :environment do
puts "foobar"
end
和追蹤輸出爲:
-bash-3.2$ rake jobs:foo --trace
(in /the/path)
** Invoke jobs:foo (first_time)
** Invoke environment (first_time)
** Execute environment
** Erubis 2.6.6
** Execute jobs:foo
/usr/bin/rake:19:in `load': no such file to load -- rake (LoadError)
from /usr/bin/rake:19
我甩了一個看跌期權$:到/ usr/bin中/耙子,已經發現一些有趣的事情。主作業具有同時含有這些路徑的負載路徑:
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/bin
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib
而二次作業具有僅含負載路徑:
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib
這或許可以解釋負載誤差,但不適合的原因它。有任何想法嗎?
感謝您的建議,但不幸的是,似乎並不是這樣。 rake可執行文件本身執行require'rubygems'位,並且loadpath證實rubygems正在完成它的工作,在兩個上下文中略有不同。我很確定你是對的,但是我不能在我的生活中找出哪些是問題。 – 2010-11-15 18:51:53