class GemsBond::Fetchers::RubyGems
Fetches data from RubyGems
Public Class Methods
new(name)
click to toggle source
Initializes an instance @param name [String] name of the gem @return [GemsBond::Fetchers::RubyGems]
Calls superclass method
GemsBond::Fetchers::Fetcher::new
# File lib/gems_bond/fetchers/ruby_gems.rb, line 14 def initialize(name) super(name) @name = name end
Public Instance Methods
days_since_last_version()
click to toggle source
Returns number of days since last version @return [Integer]
# File lib/gems_bond/fetchers/ruby_gems.rb, line 75 def days_since_last_version return unless last_version_date Integer(Date.today - last_version_date) end
downloads_count()
click to toggle source
Returns number of downloads @return [Integer]
# File lib/gems_bond/fetchers/ruby_gems.rb, line 38 def downloads_count Gems.total_downloads(@name)[:total_downloads] end
info()
click to toggle source
Returns gem description @return [String]
# File lib/gems_bond/fetchers/ruby_gems.rb, line 32 def info @info["info"] end
last_version()
click to toggle source
Returns last version number @return [String]
# File lib/gems_bond/fetchers/ruby_gems.rb, line 63 def last_version versions&.first&.dig(:number) end
last_version_date()
click to toggle source
Returns last version date @return [Date]
# File lib/gems_bond/fetchers/ruby_gems.rb, line 69 def last_version_date versions&.first&.dig(:created_at) end
source_code_uri()
click to toggle source
Returns source code URI @return [String]
# File lib/gems_bond/fetchers/ruby_gems.rb, line 44 def source_code_uri @info["source_code_uri"] end
start()
click to toggle source
Starts the service @return [Boolean] @note rescue connection errors with nil
Calls superclass method
GemsBond::Fetchers::Fetcher#start
# File lib/gems_bond/fetchers/ruby_gems.rb, line 22 def start super # ensure gem exists (otherwise it raises Gems error) @info = Gems.info(@name) rescue Gems::NotFound stop end
versions()
click to toggle source
Returns versions data (number, date and if it is a prerelease) @return [Array<Hash>] @note each hash structure: { number: String, created_at: Date, prerelease: Boolean }
# File lib/gems_bond/fetchers/ruby_gems.rb, line 51 def versions Gems.versions(@name).map do |version| { number: version["number"], created_at: Date.parse(version["created_at"]), prerelease: version["prerelease"] } end end