2011-01-14 13 views
5

Kendimi bir etkinlik/dinleyici modeline borç veren bir uygulamam var. Birkaç farklı veri türü yayınlanır (olay), daha sonra birçok farklı şey bu veriler üzerinde harekete geçmeye ihtiyaç duyabilir veya olmayabilir (dinleyiciler). Dinleyicilerin içeri girmesi gereken belirli bir düzen yoktur ve her dinleyici olayda harekete geçip geçmeyeceğini belirler.Olay/Gözlemci Tahrikli Raylar Üzerinde Ruby

Bu görevi gerçekleştirmek için Rails uygulamaları için hangi araçlar var? Bunu kendim yapmak zorunda değil umuyorum

Düzenleme (. Büyütülecek bir şey değil elimden rağmen.): Gözlemci deseni daha iyi bir seçim olabilir Muhtemelen isteyeceksiniz bu

+1

Bu dinleyiciler ayrı süreçler mi olacaklar yoksa veri yayınlama sırasında çağrılabilecek basit kod blokları mı? – Nemo157

+0

Muhtemelen basit kod, zamanın% 80'ini engeller. Ayrı süreçler daha nadir vaka olacaktı ama yine de muhtemelen meydana gelecekti. – Drew

cevap

4

için ActiveRecord'un Observer sınıfına bağlanın. Bununla beraber

http://api.rubyonrails.org/v3.2.13/classes/ActiveRecord/Observer.html

, Modellerinizin birkaç yaşam döngüsü olaylar için özel mantık yürütebilirsiniz: Doğru, amacınızı anlamak

http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

yapmanız gerekir tüm yöntemleri çağırmak olduğunu Bu, dinleyicinizin eylemini, bu geri çağrılardan gelen bir etkinliğe temsil eder.

+0

Bu çok yakın ancak yayınlanacak olan her şey bir ActiveRecord değil. ActiveRecord'a bağlı olmadan benzer bir şeyi nasıl yaparım? – Drew

+0

ActiveRecord: Observer'ı dahil ederek ActiveRecord işlevini ActiveRecord olmayan bir sınıfa her zaman getirebilirsiniz. Daha fazla bilgi burada: http://yehudakatz.com/2010/01/10/activemodel-make-any-ruby-object-feel-like-activerecord/ – Shaun

2

:

İşte iyi bir giriştir.

Olay tepkilerine olay gönderimini ayırma için genel amaçlı bir köprüdür. Tek bir web isteği sırasında tüm dinleyicileri çalıştırmaya yöneliktir, EventMachine'den farklı olarak, birçok eş zamanlı olayın gerçekleşmesine neden olmuştur. event_dispatcher

Bu taş abone ve basit ve etkili bir şekilde uygulamanızda olayları dinlemek için izin basit bir gözlemci uygulamasını sağlar:

0

Ben bu kullanım şeklini tam olarak yanıt bir yakut mücevher oluşturduk.

İlgili konular