class GemsComparator::GemInfo
Constants
- GITHUB_URLS_PATH
Attributes
after[R]
before[R]
name[R]
Public Class Methods
new(name, before, after)
click to toggle source
# File lib/gems_comparator/gem_info.rb, line 11 def initialize(name, before, after) @name = name @before = before @after = after end
Public Instance Methods
compare_url()
click to toggle source
# File lib/gems_comparator/gem_info.rb, line 17 def compare_url return unless github_url repo = GithubRepository.new(github_url) repo.compare(before, after) rescue StandardError => e e.inspect end
github_url()
click to toggle source
# File lib/gems_comparator/gem_info.rb, line 26 def github_url return @github_url if instance_variable_defined?(:@github_url) @github_url = [ source_code_uri, homepage, github_url_from_yaml ].map(&method(:normalized_github_url)).compact.first end
homepage()
click to toggle source
# File lib/gems_comparator/gem_info.rb, line 36 def homepage spec&.homepage end
to_h()
click to toggle source
# File lib/gems_comparator/gem_info.rb, line 40 def to_h attr_names = %i[name before after homepage github_url compare_url] attr_names.map { |m| [m, send(m)] }.to_h end
Private Instance Methods
github_slugs()
click to toggle source
# File lib/gems_comparator/gem_info.rb, line 55 def github_slugs @github_slugs ||= YAML.load_file(GITHUB_URLS_PATH) end
github_url_from_yaml()
click to toggle source
# File lib/gems_comparator/gem_info.rb, line 59 def github_url_from_yaml "https://github.com/#{github_slugs[name]}" if github_slugs.key?(name) end
normalized_github_url(url)
click to toggle source
# File lib/gems_comparator/gem_info.rb, line 47 def normalized_github_url(url) return unless url.include?('github.com') Octokit::Repository.from_url(url).url rescue URI::InvalidURIError, Octokit::InvalidRepository, NoMethodError nil end
source_code_uri()
click to toggle source
# File lib/gems_comparator/gem_info.rb, line 75 def source_code_uri spec&.metadata&.fetch('source_code_uri', nil) end
spec()
click to toggle source
# File lib/gems_comparator/gem_info.rb, line 63 def spec @spec ||= Gem::Specification.load(spec_path) end
spec_path()
click to toggle source
# File lib/gems_comparator/gem_info.rb, line 67 def spec_path spec_paths = [ "#{Bundler.specs_path}/#{name}-#{after}.gemspec", "#{Bundler.specs_path}/#{name}-#{before}.gemspec" ] spec_paths.find { |path| File.exist?(path) } end