我已经编写了一个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