Sha256: e3a22c0bc909d9f54cf162ead85047964e743f2070ec5023e55734866a8c6dfe

Contents?: true

Size: 1.08 KB

Versions: 42

Compression:

Stored size: 1.08 KB

Contents

# frozen_string_literal: true

# Retrieve GemInfo from RubyGems.org
class GemInfo
  attr_reader :name
  attr_reader :version
  attr_reader :description

  def initialize(name, version, description)
    @name = name
    @version = version
    @description = description
  end

  def debug
    puts "name: #{name}"
    puts "version: #{version}"
    puts "description: #{description}"
  end

  class << self
    def get(name)
      gem_info = query_ruby_gems(name)

      return gem_info if gem_info

      return query_ruby_gems(name.gsub('_', '-')) if name.include?('_')
      return query_ruby_gems(name.gsub('-', '_')) if name.include?('-')

      abort "Cannot find GEM (#{name}) on RubyGems.org"
    end

    private

    def query_ruby_gems(name)
      link = "https://rubygems.org/api/v1/gems/#{name.downcase}.json"
      info = Net::HTTP.get(URI.parse(link))
      json = JSON.parse(info)

      new(json['name'], json['version'], json['info'])
    rescue SocketError
      abort 'Internet connection cannot be established to RubyGems.org'
    rescue JSON::ParserError
      nil
    end
  end
end

Version data entries

42 entries across 42 versions & 1 rubygems

Version Path
rails_app_generator-0.2.22 tasks/gem_info.rb
rails_app_generator-0.2.21 tasks/gem_info.rb
rails_app_generator-0.2.20 tasks/gem_info.rb
rails_app_generator-0.2.19 tasks/gem_info.rb
rails_app_generator-0.2.18 tasks/gem_info.rb
rails_app_generator-0.2.17 tasks/gem_info.rb
rails_app_generator-0.2.16 tasks/gem_info.rb
rails_app_generator-0.2.15 tasks/gem_info.rb
rails_app_generator-0.2.14 tasks/gem_info.rb
rails_app_generator-0.2.13 tasks/gem_info.rb
rails_app_generator-0.2.12 tasks/gem_info.rb
rails_app_generator-0.2.11 tasks/gem_info.rb
rails_app_generator-0.2.10 tasks/gem_info.rb
rails_app_generator-0.2.9 tasks/gem_info.rb
rails_app_generator-0.2.8 tasks/gem_info.rb
rails_app_generator-0.2.7 tasks/gem_info.rb
rails_app_generator-0.2.6 tasks/gem_info.rb
rails_app_generator-0.2.5 tasks/gem_info.rb
rails_app_generator-0.2.4 tasks/gem_info.rb
rails_app_generator-0.2.3 tasks/gem_info.rb