err.rb
1.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
class Err
include Mongoid::Document
include Mongoid::Timestamps
field :klass
field :component
field :action
field :environment
field :fingerprint
field :last_notice_at, :type => DateTime
field :resolved, :type => Boolean, :default => false
field :issue_link, :type => String
field :notices_count, :type => Integer, :default => 0
field :message
index :last_notice_at
index :app_id
belongs_to :app
has_many :notices
has_many :comments, :inverse_of => :err, :dependent => :destroy
validates_presence_of :klass, :environment
scope :resolved, where(:resolved => true)
scope :unresolved, where(:resolved => false)
scope :ordered, order_by(:last_notice_at.desc)
scope :in_env, lambda {|env| where(:environment => env)}
scope :for_apps, lambda {|apps| where(:app_id.in => apps.all.map(&:id))}
def self.for(attrs)
app = attrs.delete(:app)
app.errs.where(attrs).first || app.errs.create!(attrs)
end
def resolve!
self.update_attributes!(:resolved => true)
end
def unresolved?
!resolved?
end
def where
where = component.dup
where << "##{action}" if action.present?
where
end
def message
super || klass
end
end