2014-09-23 35 views
0

我需要在Ruby on Rails應用程序中運行後臺線程,該應用程序應在發生特定日期時發送電子郵件,具體取決於數據庫中的值(並且電子郵件正文應包含一些信息從這個數據庫)。用於在Ruby on Rails中發送電子郵件的後臺線程

實現此類行爲的最佳方法是什麼?

我使用Ruby on Rails 4.1.4 btw。

在此先感謝。

+0

你的意思是在特定時間運行的工作嗎? (工作恰好是電子郵件) – user3334690 2014-09-23 13:06:50

+0

@ user3334690更確切地說,在某種條件下。在這種情況下的條件是計算爲「date_in_some_column_of_the_table + 30」的日期 – FrozenHeart 2014-09-23 13:35:03

回答

2

您可以使用寶石時根據您的要求進行後臺工作。 查看這裏的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

+0

謝謝!你知道這個寶石是否適用於Heroku? – FrozenHeart 2014-09-23 13:53:45

+1

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

2

你最好使用像SidekiqResque這樣的框架,而不是自己做。使用Sidekiq,您可以使用Sidetiq插件安排具體操作。

0

的lib /任務/ mail_task.rake

namespace :mail_task do 
    desc "Send Mail" 
    task :send_mail => :environment do 
    ... 
    end 
end 

命令行

rake mail_task:send_mail 
+0

這是後臺工作嗎? – 2014-09-23 13:29:01

相關問題