From 790eef9706f0732be2e8815af145ec8353f39635 Mon Sep 17 00:00:00 2001 From: Ippei UKAI Date: Mon, 23 Mar 2015 21:34:09 +0900 Subject: [PATCH 1/2] No point calling RbStory.trackers twice. This is very expensive. --- app/models/rb_issue_history.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/rb_issue_history.rb b/app/models/rb_issue_history.rb index 515343b8f..056272e4e 100644 --- a/app/models/rb_issue_history.rb +++ b/app/models/rb_issue_history.rb @@ -90,7 +90,7 @@ def filter_release(days) def self.issue_type(tracker_id) return nil if tracker_id.nil? || tracker_id == '' tracker_id = tracker_id.to_i - return :story if RbStory.trackers && RbStory.trackers.include?(tracker_id) + return :story if (RbStory.trackers || []).include?(tracker_id) return :task if tracker_id == RbTask.tracker return nil end From 4900caac114585fcf1a7ab37ebec956fd471abd2 Mon Sep 17 00:00:00 2001 From: Ippei UKAI Date: Tue, 24 Mar 2015 11:33:36 +0900 Subject: [PATCH 2/2] avoid expensive RbStory.trackers only to check id inclusion. --- app/models/rb_issue_history.rb | 13 ++++++++----- app/models/rb_story.rb | 6 ++++++ app/models/rb_task.rb | 4 ++++ lib/backlogs_issue_patch.rb | 4 ++-- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/app/models/rb_issue_history.rb b/app/models/rb_issue_history.rb index 056272e4e..1c43f3eff 100644 --- a/app/models/rb_issue_history.rb +++ b/app/models/rb_issue_history.rb @@ -88,11 +88,14 @@ def filter_release(days) end def self.issue_type(tracker_id) - return nil if tracker_id.nil? || tracker_id == '' - tracker_id = tracker_id.to_i - return :story if (RbStory.trackers || []).include?(tracker_id) - return :task if tracker_id == RbTask.tracker - return nil + return nil if tracker_id.blank? + if RbStory.trackers_include?(tracker_id) + :story + elsif RbTask.tracker?(tracker_id) + :task + else + nil + end end def expand diff --git a/app/models/rb_story.rb b/app/models/rb_story.rb index 1845ca675..2bdb44ca4 100644 --- a/app/models/rb_story.rb +++ b/app/models/rb_story.rb @@ -203,6 +203,12 @@ def self.trackers(options = {}) end end + def self.trackers_include?(tracker_id) + tracker_ids = Backlogs.setting[:story_trackers] || [] + tracker_ids = tracker_ids.map(&:to_i) + tracker_ids.include?(tracker_id.to_i) + end + def self.has_settings_table ActiveRecord::Base.connection.tables.include?('settings') end diff --git a/app/models/rb_task.rb b/app/models/rb_task.rb index 7042828c7..52eec87a2 100644 --- a/app/models/rb_task.rb +++ b/app/models/rb_task.rb @@ -9,6 +9,10 @@ def self.tracker return Integer(task_tracker) end + def self.tracker?(tracker_id) + self.tracker == tracker_id.to_i + end + # unify api between story and task. FIXME: remove this when merging to tracker-free-tasks # required for RbServerVariablesHelper.workflow_transitions def self.trackers diff --git a/lib/backlogs_issue_patch.rb b/lib/backlogs_issue_patch.rb index c0df63542..57ba057fc 100644 --- a/lib/backlogs_issue_patch.rb +++ b/lib/backlogs_issue_patch.rb @@ -41,11 +41,11 @@ def release_burnchart_day_caches(release_id) end def is_story? - return RbStory.trackers.include?(tracker_id) + RbStory.trackers_include?(tracker_id) end def is_task? - return (tracker_id == RbTask.tracker) + RbTask.tracker?(tracker_id) end def story