0

私はタスクのオプションをスケジューリングしていて、このコードをいつからでも見つけました。レールでタスクをスケジュールする

case @environment 
when 'production' 
every 1.day, :at => "#{Time.parse('12:00 A').getlocal.strftime("%H:%M")}" do 
    runner "Company.send_later(:create_daily_stories!)" 
end 
when 'staging' 
    every 15.minutes do 
    command "thinking_sphinx_searchd reindex" 
    end 
end 

私はかなり新しいルビーです。私はここで「会社」が何を表しているのかよく分かりません。言い換えれば、私は人々に電子メールを送りたいと思っています。私はsendEmailというメソッドを持っているemail_controllerというコントローラクラスを持っています。これを使って電子メールを送信したいのですが?私はランナー "email_controller.sendEmail"とかそのようなものを言うべきですか?私はかなりそれを得ることはありません。注 - 私は会社の代わりにモデルまたはコントローラを使用していますか?

答えて

2

この場合、Companyは、create_daily_stories!というクラス/シングルトンメソッドを持つサンプルモデルです。

class Company < ActiveRecord::Base 

    # Send out daily stories to all companies 
    def self.create_daily_stories! 
    # Do some stuff 
    end 
end 

理想的には、電子メールを生成することは、ビジネスロジックに常駐し、thusly(あなたはレールのようなMVCフレームワークを使用していると仮定)モデル内に含まれるべきである。理論的には、それはおそらく、このようになります。

+0

ありがとうございます。私はそれをモデルに入れます!それをそこから呼び出す。 :D – CodeGeek123

1

Resqueはタスクをスケジュールするのに最適です。
Resque Railscastをご覧ください。

またはおそらくthis Rails: Cron Job Scheduling using Redis, Resque and Rufusです。

+0

私はどちらを使うべきかわからない。タスクの頻度は1日あたり最大1です。より良いresqueですか? – CodeGeek123

+0

@ CodeGeek123 - Resqueではすべてのスケジューリングを行っていますが、実行する必要がある多くのタスクがあります。結局、今働いていれば、もっと少なくなるようにしてください。 –

+0

私はあなたのチュートリアルを試しましたが、コンソール上でrufus-schedulerをテストする方法はわかりません。また、rake resque:resqueスケジューラのスケジューラは、 "rake aborted!"というタスクを作成する方法を知らない。 'resque:scheduler' "エラー。 – CodeGeek123

関連する問題