以前質問したときはどなたからも回答が得られなかったので質問内容を変えて質問させていただきます。
仮想マシンを利用しRails5.1.3でWebアプリケーション制作の勉強中です。毎月1回だけ実行させたい。1年に1回だけ実行させたいという場合は
cron で行うのが一般的です。と回答をいただいたことがあります。
自分でも調べてみましたが、良くわからないのでどなたか教えていただけないでしょうか?
Gemfileに以下を記述とありました。
gem 'whenever', :require => false $ bundle install $ bundle exec wheneverize . [add] writing `./config/schedule.rb' [done] wheneverized!
ネットで上記のように紹介されていました。
1つ目はここでの疑問です。
これだけ記述して実行すればいいのでしょうか? $ bundle exec wheneverize .
それとも3行を以下のどちらかの方法で記述するのでしょうか?
このように1行で空白文字を挟んで記述して実行すればいいのでしょうか? $ bundle exec wheneverize . [add] writing `./config/schedule.rb' [done] wheneverized! それとも以下のように空白は入れずに連続してコードを記述するのでしょうか? $ bundle exec wheneverize .[add] writing `./config/schedule.rb'[done] wheneverized!
次に config/schedule.rb の中に実行するモデル・メソッドを記述するとありました。
ここで 毎月1日に countモデルのpointメソッドを実行するにはどう記述すればいいのでしょうか?
また、1月1日に countモデルのresetメソッドを実行するにはどう記述すればいいのでしょうか?
config/schedule.rb # ログの出力先を設定 set :output, 'log/crontab.log' ---------------------------これは必要なのでしょうか? # production 環境で cron 実行 set :environment, :production # 1月1日の 00:00に every 1.year, 1.month, do ----------------------------------これで1月1日に実行されるのでしょうか・ # Count モデルの reset クラスメソッドを実行 runner "Count.reset" end # 毎月1日の 00:00に every '0 0 1 * *' do-------------------------------------------これで毎月1日に実行されるのでしょうか? # Count モデルの point クラスメソッドを実行 runner "Count.point" end
count.rb def self.reset ここに処理を記述。 end def self.point ここに処理を記述。 end
特に every 1.year, 1.month, do と every '0 0 1 * *' do のところが全くわかりません。
その他、メソッド名もこれでいいのかどうか疑問です。
以前質問したときはどなたからも回答が得られませんでしたのでどなたか解決方法を教えていただけないでしょうか?
宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/23 08:25