Commit d2bf9dbc284117a6f52e3be5d8329234bc7efa80
1 parent
9523305a
Exists in
master
and in
1 other branch
merged with errbit/master
Showing
2 changed files
with
60 additions
and
1 deletions
Show diff stats
| ... | ... | @@ -0,0 +1,59 @@ |
| 1 | +class NotificationService | |
| 2 | + include Mongoid::Document | |
| 3 | + | |
| 4 | + include Rails.application.routes.url_helpers | |
| 5 | + default_url_options[:host] = ActionMailer::Base.default_url_options[:host] | |
| 6 | + | |
| 7 | + field :room_id, :type => String | |
| 8 | + field :user_id, :type => String | |
| 9 | + field :service_url, :type => String | |
| 10 | + field :service, :type => String | |
| 11 | + field :api_token, :type => String | |
| 12 | + field :subdomain, :type => String | |
| 13 | + field :sender_name, :type => String | |
| 14 | + field :notify_at_notices, :type => Array, :default => Errbit::Config.notify_at_notices | |
| 15 | + | |
| 16 | + embedded_in :app, :inverse_of => :notification_service | |
| 17 | + | |
| 18 | + validate :check_params | |
| 19 | + | |
| 20 | + if Errbit::Config.per_app_notify_at_notices | |
| 21 | + Fields = [[:notify_at_notices, | |
| 22 | + { :placeholder => 'comma separated numbers or simply 0 for every notice', | |
| 23 | + :label => 'notify on errors (0 for all errors)' | |
| 24 | + } | |
| 25 | + ]] | |
| 26 | + else | |
| 27 | + Fields = [] | |
| 28 | + end | |
| 29 | + | |
| 30 | + def notify_at_notices | |
| 31 | + Errbit::Config.per_app_notify_at_notices ? super : Errbit::Config.notify_at_notices | |
| 32 | + end | |
| 33 | + | |
| 34 | + # Subclasses are responsible for overwriting this method. | |
| 35 | + def check_params; true; end | |
| 36 | + | |
| 37 | + def notification_description(problem) | |
| 38 | + "[#{ problem.environment }][#{ problem.where }] #{problem.message.to_s.truncate(100)}" | |
| 39 | + end | |
| 40 | + | |
| 41 | + # Allows us to set the issue tracker class from a single form. | |
| 42 | + def type; self._type; end | |
| 43 | + def type=(t); self._type=t; end | |
| 44 | + | |
| 45 | + def url; nil; end | |
| 46 | + | |
| 47 | + # Retrieve tracker label from either class or instance. | |
| 48 | + Label = '' | |
| 49 | + def self.label; self::Label; end | |
| 50 | + def label; self.class.label; end | |
| 51 | + | |
| 52 | + def configured? | |
| 53 | + api_token.present? | |
| 54 | + end | |
| 55 | + | |
| 56 | + def problem_url(problem) | |
| 57 | + "http://#{Errbit::Config.host}/apps/#{problem.app.id}/problems/#{problem.id}" | |
| 58 | + end | |
| 59 | +end | ... | ... |
app/models/comment_observer.rb
| ... | ... | @@ -2,7 +2,7 @@ class CommentObserver < Mongoid::Observer |
| 2 | 2 | observe :comment |
| 3 | 3 | |
| 4 | 4 | def after_create(comment) |
| 5 | - Mailer.comment_notification(comment).deliver if comment.app.notifiable? | |
| 5 | + Mailer.comment_notification(comment).deliver if comment.app.emailable? | |
| 6 | 6 | end |
| 7 | 7 | |
| 8 | 8 | end | ... | ... |