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

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

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

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

Ruby on Rails

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

Q&A

解決済

2回答

252閲覧

Railsのcron実行で記述コードの間違いを指摘してください。

koume

総合スコア458

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2018/01/31 09:21

編集2018/01/31 09:25

Rails5.1.3でWebアプリケーション制作の勉強をしています。
cronでファイルを実行させたいのですがどう記述しても読み込んでくれないので
何が悪いのか指摘していただけないでしょうか?

1分おきに実行するコードは読み込んで実行してくれました。

時間を指定すると読み込んでくれません。

コードは以下の2つになります。

config/schedule.rb every 1.minute do -------------------読み込み、実行OK every 1.day, :at => '18:00 pm' do ---読み込みせず実行されず。

every 1.day, :at => '18:00 pm' do のダメな点を指摘してください。

他に以下のコードを実行しても読み込んでくれませんでした。
every :day, :at => '18:00 pm' do もダメでした。
every :day, :at '18:00 pm' do もダメでした。
every 1.day, at: '18:00 pm' do もダメでした。

どなたか教えていただけないでしょうか?宜しくお願いします。

追記
まさかとは思いますが、ネットの内容は全てamで記述しているのでpmは使用できないとかではないですか?

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

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

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

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

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

guest

回答2

0

前スレからしつこい感じになってしまってすみません。ちょっと気になってしまって。

アプリ(Rails)のほうはタイムゾーンがTokyoになっていることが確認できていると思いますが、サーバ自体のタイムゾーンがUTCになっているのではないでしょうか。

具体的にはコマンドを打って

# date Thu May 31 16:25:06 UTC 2012

とUTCと出てきたら日本時間と比べて9時間ズレていることになります。なので、手っ取り早く試すにはマイナス9時間した値を設定してあげると動作確認できると思います。

<例>
朝の10時に動かしたいとなった場合

every :day, :at => '01:00 am' do

Railsが実行する処理だったらRailsのタイムゾーンですが、cronの場合はシステムの時間をベースにすると思うので。ご参考までに。

投稿2018/01/31 15:41

yatta47

総合スコア208

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

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

koume

2018/01/31 15:48

回答ありがとうございます。おっしゃる通り#dateとすると Wed Jan 31 15:44:05 UTC 2018と表示されました。 ズレているということですね!原因はわかりました。ありがとうございます。 サーバー自体のタイムゾーンをJSTにするにはどうすればいいのでしょうか?
yatta47

2018/02/01 01:01

サーバのタイムゾーンはOSによって設定が異なります。ちなみにOSは何を使われているのでしょう? CentOS7であれば、以下のサイトが参考になると思います。 https://eng-entrance.com/linux-time-timezone それ以外のOSでも「<OS名> UTC JST」という感じで調べれば確認方法も含めて結構出てくると思います。
koume

2018/02/01 01:13

yatta47さん、回答ありがとうございます。教えていただいたサイトに従って タイムゾーンを変更しました。早速、cronを試してみます。 今後とも宜しくお願いします。
guest

0

ベストアンサー

config.time_zone がJST用になってないのでconfig.time_zone = 'Tokyo'にする

投稿2018/01/31 14:09

kero1209

総合スコア431

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

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

koume

2018/01/31 14:14

回答ありがとうございます。 application.rbでconfig.time_zone = 'Tokyo'にしています。 他に何かありますでしょうか?
koume

2018/01/31 14:16

先日、.bash_profileにexport TZ="Asia/Tokyo"と記述しましたが それが何か悪影響しているとかありますか?
kero1209

2018/01/31 14:21

rails runner "p Time.zone.name" は何が表示されますか?
koume

2018/01/31 14:24

"Tokyo"と表示されます。
kero1209

2018/01/31 14:48

なんの問題も無さそうですね。 every 1.day, at: ['4:30 am', '6:30 pm'] do runner "Mymodel.task_to_run_in_two_times_every_day" end のように複数時間指定できるので1時間毎に24個指定したら実行されますか? これで実行できるなら何かが原因でタイムゾーンがおかしくなってます。
koume

2018/01/31 14:55

回答ありがとうございます。コンソールではTime.zone.nowを実行すると 正確に時間は取り出せています。教えていただいたコードヲ実行してみます。 実行結果でまた質問したいと思いますのでよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問