Я написал задачу рейка, чтобы выполнить несколько других задач рейка через систему (чтобы привязать ActiveRecord к различным базам данных, среди другие вещи). Он отлично работает на моем ящике OS X, но не работает на наших продуктовых Linux-боксах с ошибкой загрузки. Задачи тривиально сводятся к:Задача рейка, выполняющая другие задачи рейка через систему, не работает - нет такого файла для загрузки «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 требует бит «rubygems», а loadpath подтверждает, что rubygems выполняет свою работу, немного по-разному в двух контекстах. Я почти уверен, что вы правы, чтобы предположить, что это среда, хотя, но я не могу для жизни понять, какие из них являются проблемой. –