diff options
author | Shinya Maeda <shinya@gitlab.com> | 2018-12-25 18:48:26 +0900 |
---|---|---|
committer | Shinya Maeda <shinya@gitlab.com> | 2018-12-31 14:35:57 +0900 |
commit | 8f1e96c89bd3ffe6ae47c275df2d1e919d42c39a (patch) | |
tree | 783bdd82084985736a8a07ab13d0e9f335f2fcd0 /app/models/release.rb | |
parent | dc8a8c7d998e2c1f78fcf60f8dc45b572f62abe8 (diff) | |
download | gitlab-ce-8f1e96c89bd3ffe6ae47c275df2d1e919d42c39a.tar.gz |
Add spec for Release API
Add spec for all release API - GET, POST, PUT, DELETE.
Also, fixes some minior bugs.
Diffstat (limited to 'app/models/release.rb')
-rw-r--r-- | app/models/release.rb | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/app/models/release.rb b/app/models/release.rb index 7377af84e0b..df3dfe1cf2f 100644 --- a/app/models/release.rb +++ b/app/models/release.rb @@ -2,6 +2,7 @@ class Release < ActiveRecord::Base include CacheMarkdownField + include Gitlab::Utils::StrongMemoize cache_markdown_field :description @@ -15,25 +16,25 @@ class Release < ActiveRecord::Base delegate :repository, to: :project - def self.by_tag(project, tag) - self.find_by(project: project, tag: tag) - end - def commit - git_tag = repository.find_tag(tag) - repository.commit(git_tag.dereferenced_target) + strong_memoize(:commit) do + repository.commit(actual_sha) + end end - def sources_formats - @sources_formats ||= %w(zip tar.gz tar.bz2 tar).freeze + def tag_missing? + actual_tag.nil? end - # TODO: placeholder for frontend API compatibility - def links - [] + private + + def actual_sha + sha || actual_tag&.dereferenced_target end - def assets_count - links.size + sources_formats.size + def actual_tag + strong_memoize(:actual_tag) do + repository.find_tag(tag) + end end end |