Khi một tài nguyên mới được tạo ra và nó cần phải làm một số dài chế biến trước tài nguyên đã sẵn sàng, làm thế nào để tôi gửi xử lý mà đi vào nền nơi nó sẽ không giữ lên yêu cầu hiện tại hoặc khác lưu lượng truy cập vào ứng dụng web của tôi?Ruby on Rails: Làm thế nào để chạy mọi thứ trong nền?
trong mô hình của tôi:
class User < ActiveRecord::Base
after_save :background_check
protected
def background_check
# check through a list of 10000000000001 mil different
# databases that takes approx one hour :)
if(check_for_record_in_www(self.username))
# code that is run after the 1 hour process is finished.
user.update_attribute(:has_record)
end
end
end
Những ngày này, hầu hết được sử dụng/lựa chọn tốt nhất hỗ trợ là [sidekiq] (https://github.com/mperham/sidekiq), [resque ] (https://github.com/defunkt/resque) và [delay_job] (https://github.com/collectiveidea/delayed_job). IMHO, Sidekiq là tốt nhất cho hàng đợi thông lượng cao, và delay_job là hàng tốt nhất cho thông lượng rất thấp. –
Một tùy chọn khác là [IronWorker] (http://www.iron.io) nếu bạn muốn xử lý nền "làm dịch vụ" và không bao giờ phải lo lắng về ý tưởng của máy chủ hoặc xếp hàng. IronMQ/IronWorker cũng cung cấp tính năng thử lại tự động, nhật ký tác vụ, webhook, v.v. Nó tích hợp độc đáo với Rails. Dưới đây là một số video: https://www.youtube.com/user/ironiodevelopers – Chad