Sha256: d3a630ac6766d1b27cab67aac3fddd1142cb6a285028f065feaf8ea30b308c64
Contents?: true
Size: 1.03 KB
Versions: 1
Compression:
Stored size: 1.03 KB
Contents
require "nokogiri" require "open-uri" module Rgversion class Spider def initialize(gems, selector) raise NoArguments, error_messages(:arguments) if gems.blank? @gems = gems @selector = selector @gems.sort! end def walk lines = [] errors = [] @gems.each do |gem| begin lines << grab_version(gem) rescue OpenURI::HTTPError errors << "#{gem} not found" end end { gems: lines, errors: errors } end private def error_messages(key) { arguments: "No gems passed as arguments. Try to use like this:\nrgversion rails sinatra", selector: "Selector #{@selector} doesn't exists on the page.\nRgversion should be updated." }[key].red end def grab_version(gem) gem_url = "https://rubygems.org/gems/#{gem}" gem_page = Nokogiri::HTML(open(gem_url)) raise WrongSelector, error_messages(:selector) if gem_page.at(@selector).nil? gem_page.at(@selector)["value"] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rgversion-1.1.7 | lib/rgversion/spider.rb |