Я написал задачу rake для запуска нескольких других задач rake через систему (помимо прочего, чтобы привязать ActiveRecord к различным базам данных). Он отлично работает на моем компьютере с OS X, но не работает на наших производственных компьютерах с ошибкой загрузки. Задачи тривиально сводятся к:
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
Я бросил команду put $: в / usr / bin / rake и обнаружил кое-что интересное. Основное задание имеет путь загрузки, содержащий оба этих пути:
/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
, что, вероятно, объясняет ошибку загрузки, но не является причиной ее возникновения. Есть идеи?