diff options
author | Douwe Maan <douwe@gitlab.com> | 2018-11-28 15:36:26 +0300 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2018-11-28 15:36:26 +0300 |
commit | ae563565387177e8d15b2402246cab6315e9a04b (patch) | |
tree | d63722883c38ee62f8643d461ec32e72f0c9044c /app | |
parent | 06d1db85b807c9d390bdab624ca095138bc86863 (diff) | |
parent | 329a890f8baebb2da3b30d4b2fdfc0cc1f96b5e6 (diff) |
Merge branch '51061-readme-url-n-1-rpc-call-resolved' into 'master'
Resolves N+1 RPC call for Project#readme_url
Closes #51061
See merge request gitlab-org/gitlab-ce!23357
Diffstat (limited to 'app')
-rw-r--r-- | app/models/project.rb | 6 | ||||
-rw-r--r-- | app/models/repository.rb | 9 |
2 files changed, 10 insertions, 5 deletions
diff --git a/app/models/project.rb b/app/models/project.rb index 844b96241c2..185fd76cbbc 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -878,9 +878,9 @@ class Project < ActiveRecord::Base end def readme_url - readme = repository.readme - if readme - Gitlab::Routing.url_helpers.project_blob_url(self, File.join(default_branch, readme.path)) + readme_path = repository.readme_path + if readme_path + Gitlab::Routing.url_helpers.project_blob_url(self, File.join(default_branch, readme_path)) end end diff --git a/app/models/repository.rb b/app/models/repository.rb index 427dac99b79..35dd120856d 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -35,7 +35,7 @@ class Repository # # For example, for entry `:commit_count` there's a method called `commit_count` which # stores its data in the `commit_count` cache key. - CACHED_METHODS = %i(size commit_count rendered_readme contribution_guide + CACHED_METHODS = %i(size commit_count rendered_readme readme_path contribution_guide changelog license_blob license_key gitignore gitlab_ci_yml branch_names tag_names branch_count tag_count avatar exists? root_ref has_visible_content? @@ -48,7 +48,7 @@ class Repository # changed. This Hash maps file types (as returned by Gitlab::FileDetector) to # the corresponding methods to call for refreshing caches. METHOD_CACHES_FOR_FILE_TYPES = { - readme: :rendered_readme, + readme: %i(rendered_readme readme_path), changelog: :changelog, license: %i(license_blob license_key license), contributing: :contribution_guide, @@ -591,6 +591,11 @@ class Repository head_tree&.readme end + def readme_path + readme&.path + end + cache_method :readme_path + def rendered_readme return unless readme |