class Binford::RubyGems

Attributes

gem[R]

Public Class Methods

new(gem) click to toggle source
Calls superclass method
# File lib/binford/ruby_gems.rb, line 7
def initialize(gem)
  super("https://rubygems.org/", serializer: Serializers::HTML.new)
  @gem = gem
end

Public Instance Methods

current(version) click to toggle source
# File lib/binford/ruby_gems.rb, line 21
def current(version)
  {
    version: version,
    released_at: (versions ? versions[version] : nil)
  }
end
data() click to toggle source
# File lib/binford/ruby_gems.rb, line 12
def data
  {
    name: gem,
    versions: versions,
    dependencies: dependencies,
    rails_dependencies: rails_dependencies
  }
end
dependencies() click to toggle source
# File lib/binford/ruby_gems.rb, line 34
def dependencies
  @dependencies ||= document&.css(".dependencies")&.css(".t-list__items")&.map do |node|
    parse_node_dependency(node)
  end
end
rails_dependencies() click to toggle source
# File lib/binford/ruby_gems.rb, line 40
def rails_dependencies
  dependencies&.select { |dependency, _| rails_gems.include?(dependency) }
end
versions() click to toggle source
# File lib/binford/ruby_gems.rb, line 28
def versions
  @versions ||= versions_document&.css(".t-list__items")&.css("li.gem__version-wrap")&.map do |node|
    parse_node_version(node)
  end&.to_h
end

Private Instance Methods

document() click to toggle source
# File lib/binford/ruby_gems.rb, line 59
def document
  @document ||= get("gems/#{gem}")
end
parse_node_dependency(node) click to toggle source
# File lib/binford/ruby_gems.rb, line 52
def parse_node_dependency(node)
  item = node.css(".t-list__item")
  dependency = item&.css("strong")&.text
  version = item&.text&.sub(dependency.to_s, "")
  [dependency.strip, version.strip.gsub("\n", "")]
end
parse_node_version(node) click to toggle source
# File lib/binford/ruby_gems.rb, line 46
def parse_node_version(node)
  version = node.css(".t-list__item")&.text
  date = node.css("small.gem__version__date")&.text&.sub("- ", "")
  [version, date]
end
rails_gems() click to toggle source
# File lib/binford/ruby_gems.rb, line 67
def rails_gems
  @rails_gems ||= %w[actionpack actionview actioncable actionmailer activerecord
                     active_model_serializers activejob activesupport activemodel activestorage activeadmin]
end
versions_document() click to toggle source
# File lib/binford/ruby_gems.rb, line 63
def versions_document
  @versions_document ||= get("gems/#{gem}/versions")
end