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,6 +17,7 @@ class Notice | ||
17 | belongs_to :err | 17 | belongs_to :err |
18 | belongs_to :backtrace, :index => true | 18 | belongs_to :backtrace, :index => true |
19 | index :created_at | 19 | index :created_at |
20 | + | ||
20 | index( | 21 | index( |
21 | [ | 22 | [ |
22 | [ :err_id, Mongo::ASCENDING ], | 23 | [ :err_id, Mongo::ASCENDING ], |
@@ -26,6 +27,8 @@ class Notice | @@ -26,6 +27,8 @@ class Notice | ||
26 | ) | 27 | ) |
27 | 28 | ||
28 | after_create :cache_attributes_on_problem, :unresolve_problem | 29 | after_create :cache_attributes_on_problem, :unresolve_problem |
30 | + after_create :email_notification | ||
31 | + after_create :services_notification | ||
29 | before_save :sanitize | 32 | before_save :sanitize |
30 | before_destroy :decrease_counter_cache, :remove_cached_attributes_from_problem | 33 | before_destroy :decrease_counter_cache, :remove_cached_attributes_from_problem |
31 | 34 | ||
@@ -160,5 +163,21 @@ class Notice | @@ -160,5 +163,21 @@ class Notice | ||
160 | end | 163 | end |
161 | end | 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 | end | 182 | end |
164 | 183 |
app/models/notice_observer.rb
@@ -1,13 +0,0 @@ | @@ -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,7 +55,7 @@ module Errbit | ||
55 | config.mongoid.preload_models = true | 55 | config.mongoid.preload_models = true |
56 | 56 | ||
57 | # Set up observers | 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 | # Configure the default encoding used in templates for Ruby 1.9. | 60 | # Configure the default encoding used in templates for Ruby 1.9. |
61 | config.encoding = "utf-8" | 61 | config.encoding = "utf-8" |
spec/models/notice_observer_spec.rb
1 | require 'spec_helper' | 1 | require 'spec_helper' |
2 | 2 | ||
3 | -describe NoticeObserver do | 3 | +describe "Callback on Notice" do |
4 | describe "email notifications (configured individually for each app)" do | 4 | describe "email notifications (configured individually for each app)" do |
5 | custom_thresholds = [2, 4, 8, 16, 32, 64] | 5 | custom_thresholds = [2, 4, 8, 16, 32, 64] |
6 | 6 |