diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2017-05-12 13:33:26 +0300 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2017-05-12 15:16:25 +0300 |
commit | 1028e05378f1fd25b49d95f36cf577a2b819844d (patch) | |
tree | dd8be4f2a610fc1f344cef3950087248c2aebdcd | |
parent | f938f9441b908ed90c519f1ad208c68dcfb2dde2 (diff) | |
download | gitlab-ce-1028e05378f1fd25b49d95f36cf577a2b819844d.tar.gz |
Add parent full path to project list cache key
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
-rw-r--r-- | app/helpers/projects_helper.rb | 11 | ||||
-rw-r--r-- | app/models/namespace.rb | 4 | ||||
-rw-r--r-- | changelogs/unreleased/dz-project-list-cache-key.yml | 4 | ||||
-rw-r--r-- | spec/helpers/projects_helper_spec.rb | 6 | ||||
-rw-r--r-- | spec/models/namespace_spec.rb | 6 |
5 files changed, 30 insertions, 1 deletions
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 78b54dc20e5..fd85217debf 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -157,7 +157,16 @@ module ProjectsHelper end def project_list_cache_key(project) - key = [project.namespace.cache_key, project.cache_key, controller.controller_name, controller.action_name, current_application_settings.cache_key, 'v2.4'] + key = [ + 'parent/' + project.namespace.parent_full_path, + project.namespace.cache_key, + project.cache_key, + controller.controller_name, + controller.action_name, + current_application_settings.cache_key, + 'v2.4' + ] + key << pipeline_status_cache_key(project.pipeline_status) if project.pipeline_status.has_status? key diff --git a/app/models/namespace.rb b/app/models/namespace.rb index a7ede5e3b9e..cf82b56cc7a 100644 --- a/app/models/namespace.rb +++ b/app/models/namespace.rb @@ -224,6 +224,10 @@ class Namespace < ActiveRecord::Base parent.present? end + def parent_full_path + full_path.split('/')[0...-1].join('/') + end + private def repository_storage_paths diff --git a/changelogs/unreleased/dz-project-list-cache-key.yml b/changelogs/unreleased/dz-project-list-cache-key.yml new file mode 100644 index 00000000000..79d89b1c509 --- /dev/null +++ b/changelogs/unreleased/dz-project-list-cache-key.yml @@ -0,0 +1,4 @@ +--- +title: Add parent full path to project list cache key +merge_request: 11325 +author: diff --git a/spec/helpers/projects_helper_spec.rb b/spec/helpers/projects_helper_spec.rb index be97973c693..ceabf0caf31 100644 --- a/spec/helpers/projects_helper_spec.rb +++ b/spec/helpers/projects_helper_spec.rb @@ -70,6 +70,12 @@ describe ProjectsHelper do expect(helper.project_list_cache_key(project)).to include(project.namespace.cache_key) end + it "includes the parent namespace in case of subgroup" do + project = create(:project, group: create(:group, :nested)) + + expect(helper.project_list_cache_key(project)).to include("parent/#{project.namespace.parent.path}") + end + it "includes the project" do expect(helper.project_list_cache_key(project)).to include(project.cache_key) end diff --git a/spec/models/namespace_spec.rb b/spec/models/namespace_spec.rb index 8624616316c..ca61e34b78e 100644 --- a/spec/models/namespace_spec.rb +++ b/spec/models/namespace_spec.rb @@ -332,4 +332,10 @@ describe Namespace, models: true do it { expect(group.all_projects.to_a).to eq([project2, project1]) } end + + describe '#parent_full_path' do + let(:namespace) { create(:group, :nested) } + + it { expect(namespace.parent_full_path).to eq(namespace.parent.path) } + end end |