Всякий раз, когда гем не будет обновлять задачи crontab - PullRequest
4 голосов
/ 09 февраля 2011

Я использовал драгоценный камень всякий раз на моем 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 ]

10 голосов
/ 10 февраля 2011

Если используется 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
0 голосов
/ 23 февраля 2015

В соответствии с README всегда:

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

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

namespace :deploy do
  desc "Update the crontab file"
  task update_crontab: :environment do
    `whenever -i cellar`
  end
end
...