summaryrefslogtreecommitdiff
path: root/app/models/project.rb
diff options
context:
space:
mode:
authorPaco Guzman <pacoguzmanp@gmail.com>2016-06-27 16:06:04 +0200
committerPaco Guzman <pacoguzmanp@gmail.com>2016-06-27 16:06:04 +0200
commit85b21487808fd18a0d4b984103af62f098448922 (patch)
tree63163b60cf9126ab6a09bce13564fad472e9953c /app/models/project.rb
parent6acdf1fcb56c1564c4ba3649bdc74bd039adf576 (diff)
downloadgitlab-ce-proper-default-issue-tracker.tar.gz
Avoid open/close transaction in each gon helper callproper-default-issue-tracker
require 'benchmark/ips' Project.first # To load database things GitlabIssueTrackerService.first # To load database things Benchmark.ips do |x| x.config(:time => 5, :warmup => 2) x.report("current") do Project.new.default_issue_tracker.to_param end x.report("") do Project.default_issue_tracker_service_name end x.compare! end Calculating ------------------------------------- current 3.000 i/100ms 22.466k i/100ms ------------------------------------------------- current 39.875 (±15.0%) i/s - 192.000 1.444M (±14.8%) i/s - 6.605M Comparison: : 1443612.8 i/s current: 39.9 i/s - 36203.16x slower
Diffstat (limited to 'app/models/project.rb')
-rw-r--r--app/models/project.rb14
1 files changed, 13 insertions, 1 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index ca3bc04e2dd..d9d572e81c3 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -372,6 +372,14 @@ class Project < ActiveRecord::Base
def remove_gitlab_exports!
Gitlab::Popen.popen(%W(find #{Gitlab::ImportExport.storage_path} -not -path #{Gitlab::ImportExport.storage_path} -mmin +1440 -delete))
end
+
+ def default_issue_tracker_service
+ :gitlab_issue_tracker_service
+ end
+
+ def default_issue_tracker_service_name
+ reflect_on_association(default_issue_tracker_service).klass::NAME
+ end
end
def team
@@ -583,8 +591,12 @@ class Project < ActiveRecord::Base
get_issue(issue_id)
end
+ def default_issue_tracker_service
+ self.class.default_issue_tracker_service
+ end
+
def default_issue_tracker
- gitlab_issue_tracker_service || create_gitlab_issue_tracker_service
+ association(default_issue_tracker_service).target || association(default_issue_tracker_service).create
end
def issues_tracker