2013-10-08 63 views
0

我想實現一個簡單的解決方案來幫助一些行爲。基本上我希望在一個特定的URL創建一個監聽器,像異步/事件驅動的請求簡單的方法Ruby on Rails網站

localhost:3000/listen 

我有一個正在發送JSON作爲POST請求第三方服務的回調。在我的rails路由中,我有路由設置,接受對該命名空間的發佈請求。

我想要發生的事情是,在任何時候發佈新帖子並運行該邏輯異步,而不會中斷正常的Web服務。例如,post請求將包含一些數據,如果數據有一個布爾值「true」,我們需要關閉一個Rails Mailer。我通常可以通過一個簡單的軌道控制器操作來做到這一點,但這是不正確的。

有關處理此問題的最佳方法的任何想法?這最好用像事件機器那樣的寶石嗎?如果任何人都可以提供他們的反饋意見來實現一個簡單的解決方案,那將是非常棒

回答

1

我會看看你的背景工作。我是一個Sidekiq粉絲,並且流行的替代品是ResqueDelayedJob

您的控制器將收到響應,並安排它在後臺執行。這將異步發送郵件(或任何你需要它做的)。

class CallbackController < ApplicationController 


    def listen_third_party 
    data = params.slice([:params, :you, :care, :about]) 
    if data[:boolean_field] == true 
     CallbackMailer.perform_async(data) 
    end 
    end 

end