Rake-задача, которая выполняет другие rake-задачи через систему, не выполняется - такой файл для загрузки rake отсутствует - PullRequest
0 голосов
/ 15 ноября 2010

Я написал задачу 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

, что, вероятно, объясняет ошибку загрузки, но не является причиной ее возникновения. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 21 ноября 2010

Если вы действительно пытаетесь вызвать рейк-задачу из другой рейк-задачи. Почему бы не сделать это? "Rake :: Task. [ 'Работы: бар'] вызов". Вы даже можете сделать это в цикле, например, Array #, каждый из которых изменяет переменные ENV и т. Д. Я делал это раньше в задачах.

Хотя, если ваш пример был надуманным и вы на самом деле не вызывали одну задачу, а просто спрашивали, почему в вспомогательной оболочке есть другие настройки PATH, я не знаю. Возможно, если это трудно, то намек на то, что это нужно сделать по-другому.

0 голосов
/ 15 ноября 2010

Убедитесь, что в вашей установке правильно установлены необходимые переменные среды. http://docs.rubygems.org/read/chapter/3 Такая же проблема возникла у меня при использовании «export RUBYOPT = RUBYGEM» вместо «export RUBYOPT = RUBYGEMS». Ааа, разница, которую может сделать один персонаж.

...