Всякий раз, когда гем не будет обновлять задачи crontab

Я использовал драгоценный камень всякий раз на моем 2-летнем срезе на Slicehost. Однако я не могу сделать то же самое на моем новом срезе.

Основное отличие состоит в том, что я сейчас использую RVM как на своем MBP, так и на срезе. Я также использую Rails 3. У меня есть Rubygems v 1.5.0 и последние версии RVM, Ruby 1.9.2p136, Capistrano и обо всех остальных пакетах.

Я перепробовал миллион вещей, прочитал все документы, и на данный момент я использую Gem версии 0.6.2. Я также рассмотрел все вопросы по смежным темам в SO и Google.

Вот код в deploy.rb:

namespace :deploy do
  ...
  desc "Update the crontab file"
  task :update_crontab, :roles => :db do
    run "cd #{release_path} && whenever --update-crontab #{application}"
  end   
end

after 'deploy:update_code', 'deploy:update_crontab'

Вот сообщение об ошибке, которое я получаю после запуска 'cap deploy'

failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell '1.9.2' -c 'cd /home/deploy/public_html/lasource/releases/20110209201551 && /home/deploy/.rvm/gems/ruby-1.9.2-p136/bin/whenever --write-crontab'" on lasource.ohlalaweb.com

Любые предложения будут приветствоваться.

Кстати, где логи капистрано?

Добавив "bundle exec" благодаря предложению Simone, мне удалось завершить процедуру развертывания кэпа, так как все прошло хорошо. Новая проблема, однако, заключается в том, что мой файл crontab по-прежнему пуст от задач и не создал раздел с 4 задачами.

2 ответа

Решение

Если вы используете Rails 3, не забудьте выполнить команду с bundle exec,

namespace :deploy do
  desc "Update the crontab file"
  task :update_crontab, :roles => :app, :except => { :no_release => true } do
    run "cd #{release_path} && bundle exec whenever --update-crontab #{application}"
  end
end

В соответствии с README:

If a :path is not set it will default to the directory in which whenever was executed.

Таким образом, вы не должны иметь CD в папке. Кроме того, вы пытались использовать другие способы вызова команды оболочки? Я использую обратные метки, и это работает в моей среде

namespace :deploy do
  desc "Update the crontab file"
  task update_crontab: :environment do
    `whenever -i cellar`
  end
end
Другие вопросы по тегам