class TenYearsRails::GemInfo
Attributes
gem_specification[R]
name[R]
version[R]
Public Class Methods
all()
click to toggle source
# File lib/ten_years_rails/gem_info.rb, line 41 def self.all Gem::Specification.each.map do |gem_specification| new(gem_specification) end end
new(gem_specification)
click to toggle source
# File lib/ten_years_rails/gem_info.rb, line 48 def initialize(gem_specification) @gem_specification = gem_specification @version = gem_specification.version @name = gem_specification.name end
Public Instance Methods
age()
click to toggle source
# File lib/ten_years_rails/gem_info.rb, line 54 def age if respond_to?(:time_ago_in_words) "#{time_ago_in_words(created_at)} ago" else created_at.strftime("%b %e, %Y") end end
compatible_with_rails?(rails_version: Gem::Version.new("5.0"))
click to toggle source
# File lib/ten_years_rails/gem_info.rb, line 97 def compatible_with_rails?(rails_version: Gem::Version.new("5.0")) unsatisfied_rails_dependencies(rails_version: rails_version).empty? end
created_at()
click to toggle source
# File lib/ten_years_rails/gem_info.rb, line 66 def created_at @created_at ||= gem_specification.date end
from_rails?()
click to toggle source
# File lib/ten_years_rails/gem_info.rb, line 109 def from_rails? rails_gems.include?(name) end
latest_version()
click to toggle source
# File lib/ten_years_rails/gem_info.rb, line 86 def latest_version @latest_version ||= begin latest_gem_specification = Gem.latest_spec_for(name) if latest_gem_specification GemInfo.new(latest_gem_specification) else NullGemInfo.new end end end
sourced_from_git?()
click to toggle source
# File lib/ten_years_rails/gem_info.rb, line 62 def sourced_from_git? !!gem_specification.git_version end
state(rails_version)
click to toggle source
# File lib/ten_years_rails/gem_info.rb, line 74 def state(rails_version) if compatible_with_rails?(rails_version: rails_version) :compatible elsif latest_version.compatible_with_rails?(rails_version: rails_version) :latest_compatible elsif latest_version.version == "NOT FOUND" :no_new_version else :incompatible end end
unsatisfied_rails_dependencies(rails_version:)
click to toggle source
# File lib/ten_years_rails/gem_info.rb, line 101 def unsatisfied_rails_dependencies(rails_version:) rails_dependencies = gem_specification.runtime_dependencies.select {|dependency| rails_gems.include?(dependency.name) } rails_dependencies.reject do |rails_dependency| rails_dependency.requirement.satisfied_by?(Gem::Version.new(rails_version)) end end
up_to_date?()
click to toggle source
# File lib/ten_years_rails/gem_info.rb, line 70 def up_to_date? version == latest_version.version end
Private Instance Methods
rails_gems()
click to toggle source
# File lib/ten_years_rails/gem_info.rb, line 113 def rails_gems [ "rails", "activemodel", "activerecord", "actionmailer", "actioncable", "actionpack", "actionview", "activejob", "activestorage", "activesupport", "railties", ] end