我有一個適用於事件/偵聽器模型的應用程序。幾種不同的數據被髮布(事件),然後許多不同的事情可能需要或可能不需要對數據(聽衆)進行操作。聽衆沒有特定的順序需要發生,每個聽衆都會決定是否需要採取行動。事件/觀察者驅動的Ruby on Rails
Rails應用程序有哪些工具可以完成此任務?我希望沒有做到這一點我自己
編輯(雖然,我不能這不是什麼大不了的事。):Observer模式可能是一個更好的選擇。這
我有一個適用於事件/偵聽器模型的應用程序。幾種不同的數據被髮布(事件),然後許多不同的事情可能需要或可能不需要對數據(聽衆)進行操作。聽衆沒有特定的順序需要發生,每個聽衆都會決定是否需要採取行動。事件/觀察者驅動的Ruby on Rails
Rails應用程序有哪些工具可以完成此任務?我希望沒有做到這一點我自己
編輯(雖然,我不能這不是什麼大不了的事。):Observer模式可能是一個更好的選擇。這
結賬EventMachine。這是一個非常受歡迎的Ruby事件處理庫。它看起來相當不錯,很多其他庫似乎都利用它(Cramp)。
你可能會想鉤入ActiveRecord的Observer
類。
http://api.rubyonrails.org/v3.2.13/classes/ActiveRecord/Observer.html
有了它,你的模型可以用於多種生命週期事件執行自定義邏輯:
http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
如果我正確理解你的意圖,所有你需要做的是調用的方法代表您的偵聽者對這些回調事件的操作。
您可能需要使用的ActiveSupport :: Notifications.instrument。
它是解耦事件發送到事件響應的通用橋樑。它適合於在單個Web請求期間執行所有監聽器,與EventMachine不同,它適應於大量併發事件的發生。
我創建了一個紅寶石的寶石正是應對這種使用情況:event_dispatcher
這種寶石提供了一個簡單的觀察器實現,允許您訂閱和監聽用一個簡單而有效的方式在你的應用程序事件。
這些監聽器是單獨的進程嗎?還是他們在數據發佈期間可以調用的簡單代碼塊? – Nemo157 2011-01-14 21:52:36
80%的時間可能都是簡單的代碼塊。單獨的過程將是罕見的情況,但仍可能發生。 – Drew 2011-01-14 21:55:39