2012-01-25 7 views
0

私はRoRアプリケーションから多数の電子メールを送信する必要があり、これを行うにはどのように最善を尽くすかアドバイスしたいと思います。RoR - 電子メールを送信するプロセスを自動化します。

以前の質問(例:RoR - where to put a automated process)は、すべてのコードをモデルに配置します。しかし、私は電子メールを送信しているので、電子メールのビューにアクセスする必要があります。このモデルはこのための最良の場所ではないようです。

このプロセスをコントローラに入れてください。もしそうなら、それをcronjobから始めるための最良の方法は何ですか?

答えて

1

に、あなたがActiveMailerクラスを設定したい:

機能を使用すると、別々のファイルにそれらを分割し、次のディレクトリ構造を使用することができます巨大である場合

app/mailers /を使用して、ビューテンプレートをapp/views /に配置し、環境設定後にメールを正しく送信することができます。

あなたのメーラーにアクセスするには、実際に送信するか、あなたがそうのように、環境を必要とするのlib /タスク/ cron.rakeでrakeタスクを設定できます。

namespace :cron 

    desc "Sends some emails" 
    task :send_emails => [:environment] do 
    MailerName.some_email(:some_option => 'w00t').deliver 
    end 

end 

をあなたは、このレーキを打つことができbashシェルスクリプトを実行することで、次のような作業を行うことができます。

#!/bin/bash 
export GEM_HOME=/usr/local/lib/ruby/gems/1.9.1/gems 
export GEM_PATH=/usr/local/lib/ruby/gems/1.9.1 
cd "https://stackoverflow.com/users/yourname/railsapp" 
/usr/local/bin/rake cron:send_emails RAILS_ENV=production 

これは実行するたびに環境全体が読み込まれることに注意してください。 lotメールをメールで送信している場合は、curlを定期的に使用してサーバー上の特定のURLにアクセスする方がよい場合があります。そのため、実行ごとに新しいサーバーをスピンアップするのではなく、既存のサーバーRailsインスタンスを使用します。

1

rails 3.xを使用している場合は、app/mailerに配置することができます。それ以外の場合は、この目的のためにlibフォルダを使用することができます。

lib/notifier/a.rb 
lib/notifier/b.rb 

ので、Railsの3で

+0

私はそれらをapp/mailerに入れると、どこにメールビューファイルを置くのですか?現在これらはviews \ classnameフォルダにあります。これはメインレールのアプリケーションの外部から動作する予定ですか? – seanyboy

関連する問題