Commit 95bfe3f7f9720d1597860bfbd0e11d4ae22f0049
1 parent
94f860ac
Exists in
master
and in
1 other branch
Extract NoticeObserver to Notice model
I think the Observer Pattern in Model is too ackward and need to be avoid. This kind of stuff is delete on Rails 4 for example.
Showing
4 changed files
with
21 additions
and
15 deletions
Show diff stats
app/models/notice.rb
... | ... | @@ -17,6 +17,7 @@ class Notice |
17 | 17 | belongs_to :err |
18 | 18 | belongs_to :backtrace, :index => true |
19 | 19 | index :created_at |
20 | + | |
20 | 21 | index( |
21 | 22 | [ |
22 | 23 | [ :err_id, Mongo::ASCENDING ], |
... | ... | @@ -26,6 +27,8 @@ class Notice |
26 | 27 | ) |
27 | 28 | |
28 | 29 | after_create :cache_attributes_on_problem, :unresolve_problem |
30 | + after_create :email_notification | |
31 | + after_create :services_notification | |
29 | 32 | before_save :sanitize |
30 | 33 | before_destroy :decrease_counter_cache, :remove_cached_attributes_from_problem |
31 | 34 | |
... | ... | @@ -160,5 +163,21 @@ class Notice |
160 | 163 | end |
161 | 164 | end |
162 | 165 | |
166 | + private | |
167 | + | |
168 | + ## | |
169 | + # Send email notification if needed | |
170 | + def email_notification | |
171 | + return true unless should_email? | |
172 | + Mailer.err_notification(self).deliver | |
173 | + end | |
174 | + | |
175 | + ## | |
176 | + # Launch all notification define on the app associate to this notice | |
177 | + def services_notification | |
178 | + return true unless app.notification_service_configured? and should_notify? | |
179 | + app.notification_service.create_notification(problem) | |
180 | + end | |
181 | + | |
163 | 182 | end |
164 | 183 | ... | ... |
app/models/notice_observer.rb
... | ... | @@ -1,13 +0,0 @@ |
1 | -class NoticeObserver < Mongoid::Observer | |
2 | - observe :notice | |
3 | - | |
4 | - def after_create notice | |
5 | - # if the app has a notification service, fire it off | |
6 | - if notice.app.notification_service_configured? and notice.should_notify? | |
7 | - notice.app.notification_service.create_notification(notice.problem) | |
8 | - end | |
9 | - | |
10 | - Mailer.err_notification(notice).deliver if notice.should_email? | |
11 | - end | |
12 | - | |
13 | -end |
config/application.rb
... | ... | @@ -55,7 +55,7 @@ module Errbit |
55 | 55 | config.mongoid.preload_models = true |
56 | 56 | |
57 | 57 | # Set up observers |
58 | - config.mongoid.observers = :deploy_observer, :notice_observer, :comment_observer | |
58 | + config.mongoid.observers = :deploy_observer, :comment_observer | |
59 | 59 | |
60 | 60 | # Configure the default encoding used in templates for Ruby 1.9. |
61 | 61 | config.encoding = "utf-8" | ... | ... |