wheneverを使って以下のように定期処理を実装しています。
ruby
1# config/schedule.rb 2 3set :output, 'log/crontab.log' 4 5every 1.hour , roles: %i(app) do 6 rake '-s sitemap:refresh RAILS_ENV=production' 7end 8 9every :monday, :at => '10:30 am' do 10 runner "SampleMailer.inform_sample_on_monday.deliver_now" 11end
ruby
1# Capfile 2 3require "capistrano/setup" 4 5require "capistrano/deploy" 6require "capistrano/scm/git" 7install_plugin Capistrano::SCM::Git 8 9require "capistrano/bundler" 10require "capistrano/rails" 11require "capistrano/rails/assets" 12require "capistrano/rails/migrations" 13require "capistrano/rbenv" 14require "capistrano3/unicorn" 15require "capistrano/sidekiq" 16require "capistrano/upload-config" 17require 'capistrano/rails/console' 18require "whenever/capistrano" 19 20Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
このタスクが本番環境で実行されず、その原因がなんなのかわかりません。
###試したこと
以下のようにコマンドを打ってwheneverのタスクを確認しましたが、問題がわかりませんでした。
$ bundle exec whenever
0 * * * * /bin/bash -l -c 'cd /Users/username/Desktop/job/myapp && RAILS_ENV=production bundle exec rake -s sitemap:refresh RAILS_ENV=production --silent >> log/crontab.log 2>&1'
30 10 * * 1 /bin/bash -l -c 'cd /Users/username/Desktop/job/myapp && bundle exec bin/rails runner -e production '''SampleMailer.inform_sample_on_monday.deliver_now''' >> log/crontab.log 2>&1'
[message] Above is your schedule file converted to cron syntax; your crontab file was not updated.
[message] Run `whenever --help' for more options.
$ crontab -l
Begin Whenever generated tasks for: /Users/username/Desktop/job/app/config/schedule.rb at: 2019-04-08 10:03:21 +0900
0 * * * * /bin/bash -l -c 'cd /Users/username/Desktop/job/myapp && RAILS_ENV=production bundle exec rake -s sitemap:refresh RAILS_ENV=production --silent >> log/crontab.log 2>&1'
5 10 * * 1 /bin/bash -l -c 'cd /Users/username/Desktop/job/myapp && bundle exec bin/rails runner -e production '''SampleMailer.inform_sample_on_monday.deliver_now''' >> log/crontab.log 2>&1'
End Whenever generated tasks for: /Users/username/Desktop/job/myapp/config/schedule.rb at: 2019-04-08 10:03:21 +0900
$ bundle exec cap production deploy
<省略>
INFO [12345678] Running $HOME/.rbenv/bin/rbenv exec bundle exec whenever --update-crontab myapp --set environment=production --roles=app,db,web as mycompany@52.193.00.000
DEBUG [12345678] Command: cd /var/www/rails/myapp/releases/20190409024624 && ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="" RAILS_ENV="production" ; $HOME/.rbenv/bin/rbenv exec bundle exec whenever --update-crontab myapp --set environment=production --roles=app,db,web )
DEBUG [5f34124e] [write] crontab file updated
<省略>
###実現したいこと
なぜwheneverのタスクが本番環境でうまくいかないのかを知りたいです。
なにかご教示いただけることがあれば、何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー