我需要在Ruby on Rails應用程序中運行後臺線程,該應用程序應在發生特定日期時發送電子郵件,具體取決於數據庫中的值(並且電子郵件正文應包含一些信息從這個數據庫)。用於在Ruby on Rails中發送電子郵件的後臺線程
實現此類行爲的最佳方法是什麼?
我使用Ruby on Rails 4.1.4 btw。
在此先感謝。
我需要在Ruby on Rails應用程序中運行後臺線程,該應用程序應在發生特定日期時發送電子郵件,具體取決於數據庫中的值(並且電子郵件正文應包含一些信息從這個數據庫)。用於在Ruby on Rails中發送電子郵件的後臺線程
實現此類行爲的最佳方法是什麼?
我使用Ruby on Rails 4.1.4 btw。
在此先感謝。
您可以使用寶石時根據您的要求進行後臺工作。 查看這裏的github文檔。 Whenever
瑞恩·貝茨創造了約一個偉大的Railscast每當:Cron jobs Intro in rails
在配置/ schedule.rb
every 2.hours do
runner User.send_email_to_users
end
在用戶模式
def self.send_email_to_users
//write your logic here and call to action to send mails.
UserMailer.send_mail_persons(user).deliver
//pass any other data if required in arguments.
end
在app /郵寄/ user_mailer.rb
def send_mail_persons(user)
@user = user
mail :to => @user.email, :subject => "Amusement.", :from => MAIL_ADDRESS
末
創建HTML模板按規定,應用程序/視圖/ user_mailer文件/ send_mail_persons.html.erb
謝謝!你知道這個寶石是否適用於Heroku? – FrozenHeart 2014-09-23 13:53:45
for heroku使用調度程序插件https://addons.heroku.com/scheduler,詳細信息https://blog.heroku.com/archives/2011/11/12/heroku_scheduler_add_on_now_available – Bijendra 2014-09-23 14:19:45
的lib /任務/ mail_task.rake
namespace :mail_task do
desc "Send Mail"
task :send_mail => :environment do
...
end
end
命令行
rake mail_task:send_mail
這是後臺工作嗎? – 2014-09-23 13:29:01
你的意思是在特定時間運行的工作嗎? (工作恰好是電子郵件) – user3334690 2014-09-23 13:06:50
@ user3334690更確切地說,在某種條件下。在這種情況下的條件是計算爲「date_in_some_column_of_the_table + 30」的日期 – FrozenHeart 2014-09-23 13:35:03