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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Ruby

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

Ruby on Rails

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

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Q&A

解決済

1回答

1182閲覧

Vagrant,Centos7, Rails5.1.3での cron の使い方を教えてください。

koume

総合スコア458

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Ruby

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

Ruby on Rails

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

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

0グッド

0クリップ

投稿2017/10/23 00:16

以前質問したときはどなたからも回答が得られなかったので質問内容を変えて質問させていただきます。

仮想マシンを利用し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 のところが全くわかりません。
その他、メソッド名もこれでいいのかどうか疑問です。

以前質問したときはどなたからも回答が得られませんでしたのでどなたか解決方法を教えていただけないでしょうか?
宜しくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Rails門戸外のにわかPythonistですが、一行目からやるせない気持ちを感じたので回答させていただきます。

まず一つ目の質問ですが、

shell

1$ bundle install

これだけを実行です。
すると、

shell

1[add] writing `./config/schedule.rb'                     2[done] wheneverized!

と表示されるかと思います。

その前にGemfileにこれを記述するのかと思います。

ruby

1gem 'whenever', :require => false

あと自分が回答できるのは、

ruby

1# 毎月1日の 00:00に 2every '0 0 1 * *' do #-------------------------------------------これで毎月1日に実行されるのでしょうか?

この記述に関してでしょうか。

こちらの記述に関しては、Linuxに crontab というものがすでにあり、その記述に則ったものとなります。

crontabの書き方 | server-memo.net

こちらのページに、どういった書式なのかが書いているので、一度目を通すと、幸せになれるかもしれません。

以上、拙い回答で申し訳ありませんが、参考になれば幸いです。

投稿2017/10/23 07:21

manzyun

総合スコア2244

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

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

koume

2017/10/23 08:25

回答ありがとうございます。以前から何回も質問していましたが、具体的な回答をいただいたのは初めてです。参考にさせていただきます。今後とも宜しくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問