Class: LibyearBundler::Models::Gem
- Inherits:
-
Object
- Object
- LibyearBundler::Models::Gem
- Defined in:
- lib/libyear_bundler/models/gem.rb
Overview
Logic and information pertaining to the installed and newest versions of a gem
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(name, installed_version, newest_version, release_date_cache, http) ⇒ Gem
constructor
A new instance of Gem.
- #installed_version ⇒ Object
- #installed_version_release_date ⇒ Object
- #installed_version_sequence_index ⇒ Object
- #libyears ⇒ Object
- #name ⇒ Object
- #newest_version ⇒ Object
- #newest_version_release_date ⇒ Object
- #newest_version_sequence_index ⇒ Object
- #version_number_delta ⇒ Object
- #version_sequence_delta ⇒ Object
Constructor Details
#initialize(name, installed_version, newest_version, release_date_cache, http) ⇒ Gem
Returns a new instance of Gem.
10 11 12 13 14 15 16 17 18 19 |
# File 'lib/libyear_bundler/models/gem.rb', line 10 def initialize(name, installed_version, newest_version, release_date_cache, http) unless release_date_cache.nil? || release_date_cache.is_a?(ReleaseDateCache) raise TypeError, 'Invalid release_date_cache' end @name = name @installed_version = installed_version @newest_version = newest_version @release_date_cache = release_date_cache @http = http end |
Class Method Details
.release_date(gem_name, gem_version, http) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/libyear_bundler/models/gem.rb', line 22 def release_date(gem_name, gem_version, http) uri = URI.parse( "https://rubygems.org/api/v2/rubygems/#{gem_name}/versions/#{gem_version}.json" ) request = Net::HTTP::Get.new(uri) response = http.request(request) if response.is_a?(Net::HTTPSuccess) parsed_response = JSON.parse(response.body) Date.parse(parsed_response["version_created_at"]) else report_problem( gem_name, "Release date not found: #{gem_name}: rubygems.org responded with #{response.code}" ) nil end rescue StandardError => e report_problem(gem_name, "Release date not found: #{gem_name}: #{e.inspect}") end |
Instance Method Details
#installed_version ⇒ Object
53 54 55 |
# File 'lib/libyear_bundler/models/gem.rb', line 53 def installed_version ::Gem::Version.new(@installed_version) end |
#installed_version_release_date ⇒ Object
57 58 59 60 61 62 63 |
# File 'lib/libyear_bundler/models/gem.rb', line 57 def installed_version_release_date if @release_date_cache.nil? self.class.release_date(name, installed_version, @http) else @release_date_cache[name, installed_version] end end |
#installed_version_sequence_index ⇒ Object
65 66 67 |
# File 'lib/libyear_bundler/models/gem.rb', line 65 def installed_version_sequence_index versions_sequence.index(installed_version.to_s) end |
#libyears ⇒ Object
69 70 71 72 73 74 |
# File 'lib/libyear_bundler/models/gem.rb', line 69 def libyears ::LibyearBundler::Calculators::Libyear.calculate( installed_version_release_date, newest_version_release_date ) end |
#name ⇒ Object
76 77 78 |
# File 'lib/libyear_bundler/models/gem.rb', line 76 def name @name end |
#newest_version ⇒ Object
80 81 82 |
# File 'lib/libyear_bundler/models/gem.rb', line 80 def newest_version ::Gem::Version.new(@newest_version) end |
#newest_version_release_date ⇒ Object
88 89 90 91 92 93 94 |
# File 'lib/libyear_bundler/models/gem.rb', line 88 def newest_version_release_date if @release_date_cache.nil? self.class.release_date(name, newest_version, @http) else @release_date_cache[name, newest_version] end end |
#newest_version_sequence_index ⇒ Object
84 85 86 |
# File 'lib/libyear_bundler/models/gem.rb', line 84 def newest_version_sequence_index versions_sequence.index(newest_version.to_s) end |
#version_number_delta ⇒ Object
96 97 98 99 100 101 |
# File 'lib/libyear_bundler/models/gem.rb', line 96 def version_number_delta ::LibyearBundler::Calculators::VersionNumberDelta.calculate( installed_version, newest_version ) end |
#version_sequence_delta ⇒ Object
103 104 105 106 107 108 |
# File 'lib/libyear_bundler/models/gem.rb', line 103 def version_sequence_delta ::LibyearBundler::Calculators::VersionSequenceDelta.calculate( installed_version_sequence_index, newest_version_sequence_index ) end |