2011-09-20 18 views
5

Bu projeyle nasıl başlayacağımı bilmek isterim. İnsanlara haftada bir e-posta göndermem gerek. Ancak bu, her hafta otomatik olarak oluşturulmalı ve belirli bir zamanda gönderilmelidir. Bu kod ne kadar zor? Yardımcı olabilecek herhangi bir kitap olup olmadığını ya da herhangi birinin beni yönlendirebileceğini bilmem gerek. Raylar üzerinde yakut kullanılarak programlanmalıdır. Dolayısıyla bir web servisi ve veritabanı entegre edilmiştir. ŞerefeRaylar üzerinde Ruby - haftada belirli bir zamanda e-postalara mesaj göndermeniz gerekir

+5

neden bu etiketli bir e-posta spam olduğunu deneyebilirsiniz. Spam oluşturmaya mı çalışıyorsunuz? –

cevap

5

Bu neden karmaşık?

Tek ihtiyacınız olan şey bir iş zamanlamak. Örneğin, Delayed::Job'u kullanabilirsiniz. Delayed::Job böyle run_at sembolü kullanarak belirli bir zamanda bir işi planlamak için imkanı verir:

Delayed::Job.enqueue(SendEmailJob.new(...), :run_at => scheduled_at)  

İşiniz perform yöntemi uygulamak zorunda olduğu bir sınıftır. Bu yöntemde e-postayı göndermek için sorumlu maili arayabilirsiniz. scheduled_at veritabanı üzerinde saklanabilir ve perform yönteminin her çalıştırıldığında güncellenir.

3

Yinelenen görevleri zamanlamak için whenever gibi bir mücevher kullanabilirsiniz.

every :sunday, :at => '12pm' do 
    runner "User.send_emails"  
end 
1

Belki clockwork

require 'clockwork' 
include Clockwork 

handler do |job| 
    puts "Running #{job}" 
end 

every(10.seconds, 'frequent.job') 
every(3.minutes, 'less.frequent.job') 
every(1.hour, 'hourly.job') 

every(1.day, 'midnight.job', :at => '00:00')