deploy.rb
947 Bytes
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
class Deploy
include Mongoid::Document
include Mongoid::Timestamps
field :username
field :repository
field :environment
field :revision
field :message
index(created_at: -1)
embedded_in :app, inverse_of: :deploys
after_create :resolve_app_errs, if: :should_resolve_app_errs?
after_create :store_cached_attributes_on_problems
after_create :deliver_email
validates_presence_of :username, :environment
def resolve_app_errs
app.problems.unresolved.in_env(environment).each(&:resolve!)
end
def short_revision
revision.to_s[0, 7]
end
protected
def should_resolve_app_errs?
app.resolve_errs_on_deploy?
end
def store_cached_attributes_on_problems
Problem.where(app_id: app.id).update_all(
last_deploy_at: created_at
)
end
def deliver_email
if app.notify_on_deploys? && app.notification_recipients.any?
Mailer.deploy_notification(self).deliver_now
end
end
end