railsで定期メール配信 heroku scheduler

本家サイト

gem wheneverはherokuで使用できないようです。

まず、

とします。

時間設定するための画面は以下のコード打つ事でブラウザが開きます。

taskの登録をします。

schedulerの場所はお好きな名前で。この場合、

ができます。

スポンサーリンク

今作成したscheduler.rakeにコードを書きます。

ArticleDBからランダムに1つのレコードを取り出しarticleoneに入れました。
@articleにarticleoneに入ってるレコードの内wordカラムだけ入れます。
それをArticleMailerのevery_articleメソッドに渡します。

そのあとmailerはviewを見に行きます。

に =@article としてDBから取ってきた情報を表示。

先ほどブラウザで立ち上げたherokuのschedulerに実行してほしいファイルを書きます。


これ、人によって書き方違いました。
頭に、heroku runをつけてる人もいましたが、私はそれでは動かなかったです。
なのでここはケースバイケースで打ち込んでください。

スポンサーリンク

最初は確認のために10分ごとに送信を設定した方が良いと思います。
10分待ってメール来たら一日1回に変更したら良いかと。heorkuはUS時間で表示されているため、
日本時間に変更してからセットすると良いかもです。
(でもherokuのschedulerで変更されないのが不安)

結果、まとめますと
mailerに書いたメール送信アクションを
lib/tasks/scheduler.rakeで呼び出す。

sheduler.rakeでは欲しい情報をDBからSQLで抜き出し、インスタンス変数に入れる。そこでActionMailerのメソッドを呼び出す。その際に今抜き出したインスタンス変数も渡す。
インスタンス変数に入れるのは、mailerがviewを探しに行き、そこで=@する事でそこで表示されたものがメールとなって送信されるため。

git push heroku masterした後にherokuの挙動見たい場合、

で確認できます。

一番苦しかったのはやっぱりscheduler.rakeの書き方とviewです。
何度もsql文を修正してはトライを繰り返しました。wordなんて知らないと何度も言われました(泣)

rails cを使用して頑張りました!

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)