私が持っている Rails プロジェクトのコントローラーには、過去 1 週間に行われたデータベースへのすべての変更を含む電子メールを送信するヘルパー関数があります。また、Web アプリケーションに関連する多数の bash スクリプトを毎週末実行する Unix の cron ジョブもあります。スタンドアロンの .rb ファイルまたは bash スクリプトからコントローラーのヘルパー関数を実行する簡単な方法はありますか?
1 に答える
2
実際に crontab 内から Web リクエストを作成したい場合は、ターゲット URL に対してwget
orを呼び出すだけです。curl
0 * * * * wget http://yourdomain.com/path/to/request -o /dev/null
Web リクエストのコンテキスト外でこのメーラーを実行したい場合は、この種の動作をコントローラーで行うべきではありません。これがlib/
目的です。
lib/my_helpers.rb
を含むようなファイルを作成できます
module MyHelpers
extend self
def your_mailer(some, params, here)
# runthe mailer
end
end
これを任意のコントローラーに含めることができます。ApplicationController
include ::MyHelpers
どこに含まれていても、呼び出しyour_mailer(param1, param2, param3)
て実行するだけです。
次に、これを rake タスク内から含め、crontab から rake タスクを実行します。lib/tasks/your_mailer.rake
このようなものでファイルを作成します
include MyHelpers
namespace :myapp do
desc "Runs your_mailer"
task :mailer => :environment do
your_mailer(param1, param2, param3)
end
end
于 2012-12-17T23:54:51.867 に答える