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

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

ただいまの
回答率

90.51%

  • Ruby on Rails

    8835questions

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

[Rails]wheneverでの定期処理がうまくいかない

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 80

r_dual

score 87

wheneverで毎時間サイトマップを送信し、毎週火曜日に処理を実行したいと思っていますが、どちらも上手くいきません。

環境

Rails 4.2.6
mysql  Ver 8.0.15 for osx10.13 on x86_64 (Homebrew)
nokogiri (1.10.1)

実装部分

schedule.rb

require File.expand_path(File.dirname(__FILE__) + "/environment")

set :output, { :error => '#{Rails.root}/log/whenever.log', :standard => '#{Rails.root}/log/cron_log.log' }

every 1.hour , roles: %i(app) do
  rake '-s sitemap:refresh RAILS_ENV=production'
end

every :tuesday, :at => '07:07 pm' do
  runner "ProductUpMailer.inform_product_uplode_once_a_week.deliver_now"
end

以下コマンドで下記のように出力されます。

$ bundle exec whenever 

0 * * * * /bin/bash -l -c 'cd /Users/username/Desktop/rails_application && RAILS_ENV=production bundle exec rake -s sitemap:refresh RAILS_ENV=production --silent >> #{Rails.root}/log/cron_log.log 2>> #{Rails.root}/log/whenever.log'

7 19 * * 2 /bin/bash -l -c 'cd /Users/username/Desktop/rails_application && bundle exec bin/rails runner -e production '\''ProductUpMailer.inform_product_uplode_once_a_week.deliver_now'\'' >> #{Rails.root}/log/cron_log.log 2>> #{Rails.root}/log/whenever.log'

[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/rails_application/schedule.rb at: 2019-03-08 16:59:37 +0900 0 * * * * /bin/bash -l -c 'cd /Users/username/Desktop/rails_application && RAILS_ENV=production bundle exec rake -s sitemap:refresh RAILS_ENV=production --silent >> #{Rails.root}/log/cron_log.log 2>> #{Rails.root}/log/whenever.log'

7 19 * * 2 /bin/bash -l -c 'cd /Users/username/Desktop/rails_application && bundle exec bin/rails runner -e production '\''ProductUpMailer.inform_product_uplode_once_a_week.deliver_now'\'' >> #{Rails.root}/log/cron_log.log 2>> #{Rails.root}/log/whenever.log'

 End Whenever generated tasks for: /Users/username/Desktop/rails_application/config/schedule.rb at: 2019-03-08 16:59:37 +0900

Capfile.rbで

require "whenever/capistrano"

の記述があります。

whenever.logを見ると、

Mysql2::Error: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) /Users/username/Desktop/rails_application/config/sitemap.rb:18:in block in run' /Users/username/Desktop/rails_application/config/sitemap.rb:4:in run' /Users/username/.rbenv/versions/2.3.1/bin/bundle:23:in load' /Users/username/.rbenv/versions/2.3.1/bin/bundle:23:in <main>' Tasks: TOP => sitemap:refresh => sitemap:create (See full trace by running task with --trace) bundler: failed to load command: rake (/usr/local/bin/rake) Bundler::GemNotFound: Could not find nokogiri-1.10.1 in any of the sources   /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/spec_set.rb:87:in block in materialize'   /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/spec_set.rb:81:in map!'   /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/spec_set.rb:81:in materialize'   /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/definition.rb:170:in specs'   /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/definition.rb:237:in specs_for'   /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/definition.rb:226:in requested_specs'   /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/runtime.rb:108:in block in definition_method'   /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/runtime.rb:20:in setup'   /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler.rb:107:in setup'   /Library/Ruby/Gems/2.3.0/gems/bundler-2.0.1/lib/bundler/setup.rb:20:in <top (required)>'   /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in require'   /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in require'

試したこと

mysqlやnokogiriを入れ直しましたが改善されませんでした。

どのように修正すれば2つの処理が上手く動くようになるのでしょうか。
ご教示いただけることがあれば何卒よろしくお願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

MySQL2:Errorが出ているようですが、
productionモードでの起動は確認出来ていますでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • Ruby on Rails

    8835questions

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