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) ⇒ 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) ⇒ Gem
10 11 12 13 14 15 16 17 18 |
# File 'lib/libyear_bundler/models/gem.rb', line 10 def initialize(name, installed_version, newest_version, release_date_cache) 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 end |
Class Method Details
.release_date(gem_name, gem_version) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/libyear_bundler/models/gem.rb', line 21 def release_date(gem_name, gem_version) dep = nil begin dep = ::Bundler::Dependency.new(gem_name, gem_version) rescue ::Gem::Requirement::BadRequirementError => e report_problem(gem_name, <<-MSG) Could not find release date for: #{gem_name} #{e} Maybe you used git in your Gemfile, which libyear doesn't support yet. Contributions welcome. MSG return nil end tuples, _errors = ::Gem::SpecFetcher.fetcher.search_for_dependency(dep) if tuples.empty? report_problem(gem_name, "Could not find release date for: #{gem_name}") return nil end tup, source = tuples.first # Gem::NameTuple spec = source.fetch_spec(tup) # raises Gem::RemoteFetcher::FetchError spec.date.to_date end |
Instance Method Details
#installed_version ⇒ Object
54 55 56 |
# File 'lib/libyear_bundler/models/gem.rb', line 54 def installed_version ::Gem::Version.new(@installed_version) end |
#installed_version_release_date ⇒ Object
58 59 60 61 62 63 64 |
# File 'lib/libyear_bundler/models/gem.rb', line 58 def installed_version_release_date if @release_date_cache.nil? self.class.release_date(name, installed_version) else @release_date_cache[name, installed_version] end end |
#installed_version_sequence_index ⇒ Object
66 67 68 |
# File 'lib/libyear_bundler/models/gem.rb', line 66 def installed_version_sequence_index versions_sequence.index(installed_version.to_s) end |
#libyears ⇒ Object
70 71 72 73 74 75 |
# File 'lib/libyear_bundler/models/gem.rb', line 70 def libyears ::LibyearBundler::Calculators::Libyear.calculate( installed_version_release_date, newest_version_release_date ) end |
#name ⇒ Object
77 78 79 |
# File 'lib/libyear_bundler/models/gem.rb', line 77 def name @name end |
#newest_version ⇒ Object
81 82 83 |
# File 'lib/libyear_bundler/models/gem.rb', line 81 def newest_version ::Gem::Version.new(@newest_version) end |
#newest_version_release_date ⇒ Object
89 90 91 92 93 94 95 |
# File 'lib/libyear_bundler/models/gem.rb', line 89 def newest_version_release_date if @release_date_cache.nil? self.class.release_date(name, newest_version) else @release_date_cache[name, newest_version] end end |
#newest_version_sequence_index ⇒ Object
85 86 87 |
# File 'lib/libyear_bundler/models/gem.rb', line 85 def newest_version_sequence_index versions_sequence.index(newest_version.to_s) end |
#version_number_delta ⇒ Object
97 98 99 100 101 102 |
# File 'lib/libyear_bundler/models/gem.rb', line 97 def version_number_delta ::LibyearBundler::Calculators::VersionNumberDelta.calculate( installed_version, newest_version ) end |
#version_sequence_delta ⇒ Object
104 105 106 107 108 109 |
# File 'lib/libyear_bundler/models/gem.rb', line 104 def version_sequence_delta ::LibyearBundler::Calculators::VersionSequenceDelta.calculate( installed_version_sequence_index, newest_version_sequence_index ) end |