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

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

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

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Ruby

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

Ruby on Rails 4

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

受付中

wheneverを動かしたらcronのログに「Can't connect to local MySQL server through socket」

s_diff
s_diff

総合スコア0

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Ruby

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

Ruby on Rails 4

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

2回答

0評価

0クリップ

46閲覧

投稿2019/04/11 08:55

編集2022/01/12 10:55

gemのwheneverを使って、定期処理を実装しようと思っています。
本番環境で

$ crontab -l

を実行すると、

Begin Whenever generated tasks for: myapp at: 2019-04-11 07:58:03 +0000

0 17 * * 4 /bin/bash -l -c 'cd /var/www/rails/myapp/releases/20190411075717 && bundle exec bin/rails runner -e production '''ProductUpMailer.inform_product_upload_once_a_week.deliver_now''' >> log/crontab.log 2>&1'
End Whenever generated tasks for: myapp at: 2019-04-11 07:58:03 +0000

と出力され、cronに問題なく登録されているようです。

しかし実際にcronを設定した時刻になってもタスクが実行されません。

###環境
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
Rails 4.2.6
whenever (0.10.0)
AWS EC2

###実装部分

ruby

# Gemfile group :production, :staging do gem 'whenever', require: false gem 'unicorn' gem 'unicorn-worker-killer' gem 'aws-sdk', '~> 3' end

ruby

# schedule.rb set :output, 'log/crontab.log' every :thursday, :at => '6:00 pm' do runner "ProductUpMailer.inform_product_upload_once_a_week.deliver_now" end

ruby

# config/database.yml default: &default adapter: mysql2 encoding: utf8 pool: 5 username: root password: development: <<: *default database: myapp_development socket: /tmp/mysql.sock staging: <<: *default database: myapp_staging username: myapp password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %> socket: /var/lib/mysql/mysql.sock production: <<: *default database: myapp_production username: myapp password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %> socket: /var/lib/mysql/mysql.sock

ruby

# Capfile require "capistrano/setup" require "capistrano/deploy" require "capistrano/scm/git" install_plugin Capistrano::SCM::Git require "capistrano/bundler" require "capistrano/rails" require "capistrano/rails/assets" require "capistrano/rails/migrations" require "capistrano/rbenv" require "capistrano3/unicorn" require "capistrano/sidekiq" require "capistrano/upload-config" require 'capistrano/rails/console' require "whenever/capistrano" Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }

###試したこと
・mysqlのソケットを調べましたが、問題ありませんでした

・コンソールで"ProductUpMailer.inform_product_upload_once_a_week.deliver_now"をたたくと、
メールは問題なく送られます。

・log/crontab.logを確認したところ、何も書かれてなく空のファイルでした。

・カレントディレクトリを/var/libにして"sudo chown mysql:mysql /tmp"コマンドを叩きましたが、変化はありません。

###実現したいこと
なぜwheneverをつかった定期処理がうまくいかないのかが知りたいです。
なにかご教示いただけることがあれば、何卒よろしくお願いいたします。

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

iwamot
iwamot

2019/04/18 14:01

"Can't connect to local MySQL server through socket" がどこに書かれていたのか、また、その前後のログはどのようなものだったか、追記いただくことは可能でしょうか。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Ruby

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

Ruby on Rails 4

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