2011-09-20 24 views
5

Tôi muốn biết cách tôi nên tiếp tục với dự án này. Tôi cần gửi email cho mọi người mỗi tuần một lần. Tuy nhiên, điều này phải được tạo tự động và gửi vào một thời điểm nhất định mỗi tuần. Mã này khó như thế nào? Tôi cần phải biết làm thế nào nếu có bất kỳ cuốn sách có thể được giúp đỡ hoặc nếu bất kỳ của bạn có thể chỉ đạo cho tôi. Nó phải được lập trình bằng ruby ​​trên đường ray. Do đó có một dịch vụ web và cơ sở dữ liệu tích hợp. Chúc mừngRuby on rails - cần phải gửi tin nhắn đến email vào một thời điểm cụ thể một tuần

+5

tại sao điều này được gắn thẻ email spam. Bạn đang cố gắng tạo spam? –

Trả lời

5

Tại sao phức tạp này?

Tất cả những gì bạn cần là lên lịch công việc. Bạn có thể sử dụng ví dụ Delayed::Job. Delayed::Job mang đến cho bạn khả năng sắp xếp một công việc vào thời điểm cụ thể bằng cách sử dụng biểu tượng run_at như thế này:

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

Công việc của bạn là một lớp học có để thực hiện các phương pháp perform. Bên trong phương thức này, bạn có thể gọi cho người gửi thư chịu trách nhiệm gửi email. Các scheduled_at có thể được lưu trữ trên cơ sở dữ liệu và cập nhật mỗi khi phương pháp perform chạy.

3

Bạn có thể sử dụng đá quý như whenever để lên lịch các tác vụ định kỳ.

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

Có lẽ bạn có thể thử 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') 
Các vấn đề liên quan