0

私は Windows で RoR を使用するのに比較的慣れていません。ActionMailer を使用して電子メールを送信する単純なアプリを Rails で作成しました。Windows スケジューラにタスクを追加して、コントローラ内で電子メール メソッドを呼び出すバッチ ルーチンを実行したいと考えています。これを行うと、Web アプリは実行されないため、CURL などを行うことはできません。いくつかの引数を指定して Ruby.exe を実行し、Rails アプリ (irb と同様) を起動して controller:method を呼び出す方法はありますか?

更新: 正解とマークした回答でアドバイスを受け取りましたが、私のような RoR 初心者がもう少しガイダンスが必要な場合に備えて、詳しく説明したいと思いました。

  1. フォルダー app\classes を作成し、クラスの .rb ファイルを作成しました
  2. セットアップを処理するために初期化メソッドを作成する必要がありました
  3. 単純に変数を返すメソッドをいくつか作成しました
  4. Railsコンソールでステップを実行できることを確認しました
  5. 以下のコードで lib\tasks にファイルを作成しました
  6. これをプロジェクト フォルダーの DOS で実行します - rake runMe --trace

    task :runMe => :environment do
    
        @s = ScrapeTools.new
    
        @bears = @s.getBears
    
        @bulls = @s.getBulls
    
        UserMailer.stock_email(@bears,@bulls).deliver
    
    end
    

エラーが表示された場合はお知らせください

4

2 に答える 2

1

がある。rails runner <path to script>指定されたスクリプトを Rails アプリで実行します。いくつかのドキュメントを持っている

于 2013-02-18T17:08:59.710 に答える
-1

これは、コントローラーにロジックを入れたくない理由の良い例です。その機能をコントローラーメソッドに入れるよりもはるかに優れており、モジュールまたはクラスのメソッドにリファクタリングします。次に、コントローラから、およびバッチ ルーチンで実行するのが簡単な rake タスクからそのメソッドを呼び出します。

于 2013-02-18T17:09:27.567 に答える