Всякий раз, когда гем не будет обновлять задачи 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