1

最新の出来事について、すべてのユーザーに毎週メールを送信する必要があります。ActionMailer を使用して他のメール タスクを実行していますが、毎週のメールを自動化する方法がわかりません。

アップデート

cron ジョブのスケジュールに使用できる gem をいつでも見つけました。これは、私が意図している毎週のメールを送信するために使用できると思います。ActionMailerで動作させる方法をまだ探していますが、解決策が見つかったら更新されます

更新 2

これは私がこれまで行ってきたことです

schedule.rbで

every 1.minute do
    runner "User.weekly_update", :environment => 'development'
end

users_mailer.rb で

def weekly_mail(email)
    mail(:to => email, :subject => "Weekly email from footyaddicts")
end

users.rbで

def self.weekly_update
    @user = User.all
    @user.each do |u|
      UsersMailer.weekly_mail(u.email).deliver
    end
end

コンソールから User.weekly_update を実行しようとすると、メールを取得できます。開発モードでテストし、rvm を使用しています。crontab ファイルを確認したところ、適切なものが含まれています。

ただし、アプリから自動的にメールが届きません。何が間違っているのでしょうか?

ありがとう、

4

2 に答える 2

2

OK、それはいつでも宝石のパスの問題であることが判明し、別のバージョンのルビーをインストールしたときに問題が発生しました。

私のマシンでは、新しいバージョンの Ruby が /usr/local/bin/ruby にインストールされています。Rails アプリでは、ファイル script/rails に移動し、#!/usr/bin/env ruby​​ を #!/usr/local/bin/ruby に置き換える必要がありました。

このエラーメッセージを示したcron.logファイルにアクセスして、これを見つけました:- /usr/bin/env: ruby​​: No such file or directory

cron エラーをログに記録する cron.log ファイルを作成しました。これは、質問に書かれた schedule.rb コードで行ったことです:-

every 2.minutes do
    runner "User.weekly_update", :environment => 'development', :output => 'log/cron.log' 
end 

現在定期的にメールが来ています。

于 2011-12-08T20:45:54.063 に答える