現在、Railsアプリケーションを作成していますが、特定のタスクを特定の時間に実行するようにスケジュールする方法を知りたいと思います。
たとえば、管理者は午前8時にユーザーにメールを送信したいと考えており、そのメールを送信するためだけに早起きしたくない場合があります。したがって、彼/彼女はその時に電子メールを送信するタスクをスケジュールしたいと思うでしょう。
それで、タスクを特定の時間に実行するようにスケジュールできる方法、またはもっと良いのは宝石はありますか?ありがとう!
現在、Railsアプリケーションを作成していますが、特定のタスクを特定の時間に実行するようにスケジュールする方法を知りたいと思います。
たとえば、管理者は午前8時にユーザーにメールを送信したいと考えており、そのメールを送信するためだけに早起きしたくない場合があります。したがって、彼/彼女はその時に電子メールを送信するタスクをスケジュールしたいと思うでしょう。
それで、タスクを特定の時間に実行するようにスケジュールできる方法、またはもっと良いのは宝石はありますか?ありがとう!
ここでの私の好ましい解決策は、いつでも宝石です。
これを使用すると、schedule.rb
rakeタスクの実行、メソッドの実行、さらには任意のシェルコマンドの実行など、特定のことをいつ実行する必要があるかを指定するファイルができます。
いつでもreadmeから恥知らずにコピーされたschedule.rbファイルの例:
every 3.hours do
runner "MyModel.some_process"
rake "my:rake:task"
command "/usr/bin/my_great_command"
end
every 1.day, :at => '4:30 am' do
runner "MyModel.task_to_run_at_four_thirty_in_the_morning"
end
every :hour do # Many shortcuts available: :hour, :day, :month, :year, :reboot
runner "SomeModel.ladeeda"
end
every :sunday, :at => '12pm' do # Use any day of the week or :weekend, :weekday
runner "Task.do_something_great"
end
every '0 0 27-31 * *' do
command "echo 'you can use raw cron syntax too'"
end
# run this task only on servers with the :app role in Capistrano
# see Capistrano roles section below
every :day, :at => '12:20am', :roles => [:app] do
rake "app_server:task"
end
私は、毎日の電子メールの送信を含む多くのタスクにいつでも使用します。