質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

2712閲覧

[Rails]wheneverがうまくいかない

s_diff

総合スコア107

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2019/04/08 07:45

編集2019/04/09 02:51

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のタスクが本番環境でうまくいかないのかを知りたいです。
なにかご教示いただけることがあれば、何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryochin

2019/04/08 23:58

cap の実行ログと、本番環境上での crontab -l の結果を頂けますか?
s_diff

2019/04/09 00:04

ご回答ありがとうございます。 ご指摘のログを追記しました。 ご確認お願いいたします
ryochin

2019/04/09 00:07

失礼しました、実際に cap production deploy 等でサーバにデプロイを行った際の実行ログをお願いできればと。
s_diff

2019/04/09 02:52

こちらこそ失礼致しました。 cap production deployのwheneverに関係したログを追記しました。
guest

回答1

0

ベストアンサー

crontab -l は本番環境で実行されたものですよね? 本番環境のcronデーモンが止まっているということはないですか?

動いているとしたら、--silent を外して log/crontab.log を確認してみるのはいかがでしょうか。

投稿2019/04/18 12:17

iwamot

総合スコア1154

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

s_diff

2019/04/19 07:43

iwamot様、ご回答ありがとうございます。 原因はただタイムゾーンが違っただけでした。 お騒がせしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問