1

私が持っている Rails プロジェクトのコントローラーには、過去 1 週間に行われたデータベースへのすべての変更を含む電子メールを送信するヘルパー関数があります。また、Web アプリケーションに関連する多数の bash スクリプトを毎週末実行する Unix の cron ジョブもあります。スタンドアロンの .rb ファイルまたは bash スクリプトからコントローラーのヘルパー関数を実行する簡単な方法はありますか?

4

1 に答える 1

2

実際に crontab 内から Web リクエストを作成したい場合は、ターゲット URL に対してwgetorを呼び出すだけです。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 に答える