summaryrefslogtreecommitdiff
path: root/app/models/project.rb
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2014-12-04 14:22:57 +0100
committerKamil Trzcinski <ayufan@ayufan.eu>2015-01-12 19:48:45 +0100
commitfc08a10dba559a93427b6ef31b33c45cd2194c40 (patch)
treeec9f2d2509162ca3b8c8007b3e656242c961f916 /app/models/project.rb
parent31735615971642f74a9d84b153e5049782152b43 (diff)
downloadgitlab-ci-fc08a10dba559a93427b6ef31b33c45cd2194c40.tar.gz
Transplanted project notifications from GitLab
Diffstat (limited to 'app/models/project.rb')
-rw-r--r--app/models/project.rb30
1 files changed, 30 insertions, 0 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index 75be51c..9c93d08 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -39,6 +39,10 @@ class Project < ActiveRecord::Base
has_many :web_hooks, dependent: :destroy
has_many :jobs, dependent: :destroy
+ # Project services
+ has_many :services, dependent: :destroy
+ has_one :slack_service, dependent: :destroy
+
accepts_nested_attributes_for :jobs, allow_destroy: true
#
@@ -178,4 +182,30 @@ ls -la
prefix + auth
end
end
+
+ def available_services_names
+ %w(slack)
+ end
+
+ def build_missing_services
+ available_services_names.each do |service_name|
+ service = services.find { |service| service.to_param == service_name }
+
+ # If service is available but missing in db
+ # we should create an instance. Ex `create_gitlab_ci_service`
+ service = self.send :"create_#{service_name}_service" if service.nil?
+ end
+ end
+
+ def execute_services(data)
+ services.each do |service|
+
+ # Call service hook only if it is active
+ begin
+ service.execute(data) if service.active
+ rescue => e
+ logger.error(e)
+ end
+ end
+ end
end