class NextRails::GemInfo
Attributes
gem_specification[R]
name[R]
version[R]
Public Class Methods
all()
click to toggle source
# File lib/next_rails/gem_info.rb, line 31 def self.all Gem::Specification.each.map do |gem_specification| new(gem_specification) end end
new(gem_specification)
click to toggle source
# File lib/next_rails/gem_info.rb, line 38 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/next_rails/gem_info.rb, line 44 def age created_at.strftime("%b %e, %Y") end
compatible_with_rails?(rails_version: Gem::Version.new("5.0"))
click to toggle source
# File lib/next_rails/gem_info.rb, line 83 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/next_rails/gem_info.rb, line 52 def created_at @created_at ||= gem_specification.date end
from_rails?()
click to toggle source
# File lib/next_rails/gem_info.rb, line 95 def from_rails? rails_gems.include?(name) end
latest_version()
click to toggle source
# File lib/next_rails/gem_info.rb, line 72 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/next_rails/gem_info.rb, line 48 def sourced_from_git? !!gem_specification.git_version end
state(rails_version)
click to toggle source
# File lib/next_rails/gem_info.rb, line 60 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/next_rails/gem_info.rb, line 87 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/next_rails/gem_info.rb, line 56 def up_to_date? version == latest_version.version end
Private Instance Methods
rails_gems()
click to toggle source
# File lib/next_rails/gem_info.rb, line 99 def rails_gems [ "rails", "activemodel", "activerecord", "actionmailer", "actioncable", "actionpack", "actionview", "activejob", "activestorage", "activesupport", "railties", ] end