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