class EacRubyUtils::GemsRegistry::Gem

Attributes

gemspec[R]
registry[R]

Public Class Methods

new(registry, gemspec) click to toggle source
# File lib/eac_ruby_utils/gems_registry/gem.rb, line 15
def initialize(registry, gemspec)
  @registry = registry
  @gemspec = gemspec
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/eac_ruby_utils/gems_registry/gem.rb, line 28
def <=>(other)
  sd = depend_on(other)
  od = other.depend_on(self)
  return 1 if sd && !od
  return -1 if od && !sd

  gemspec.name <=> other.gemspec.name
end
depend_on(gem) click to toggle source
# File lib/eac_ruby_utils/gems_registry/gem.rb, line 20
def depend_on(gem)
  dependencies.lazy.map(&:name).include?(gem.gemspec.name)
end
dependencies() click to toggle source
# File lib/eac_ruby_utils/gems_registry/gem.rb, line 24
def dependencies
  @dependencies ||= dependencies_uncached # dependencies_uncached
end
found?() click to toggle source
# File lib/eac_ruby_utils/gems_registry/gem.rb, line 37
def found?
  lib_file_found? && registered_module.is_a?(::Module)
end
lib_file_found?() click to toggle source
# File lib/eac_ruby_utils/gems_registry/gem.rb, line 41
def lib_file_found?
  gemspec.require_paths.any? do |require_path|
    ::Pathname.new(require_path).expand_path(gemspec.gem_dir).join(path_to_require + '.rb')
              .file?
  end
end
path_to_require() click to toggle source

@return [String]

# File lib/eac_ruby_utils/gems_registry/gem.rb, line 56
def path_to_require
  gemspec.name.gsub('-', '/') + '/' + registry.module_suffix.underscore
end
registered_module() click to toggle source
# File lib/eac_ruby_utils/gems_registry/gem.rb, line 48
def registered_module
  return nil unless lib_file_found?

  require path_to_require
  path_to_require.classify.constantize
end

Private Instance Methods

dependencies_uncached() click to toggle source
# File lib/eac_ruby_utils/gems_registry/gem.rb, line 62
def dependencies_uncached
  ::EacRubyUtils::RecursiveBuilder
    .new(gemspec) { |item| gem_item_dependencies(item) }
    .result
end
gem_item_dependencies(item) click to toggle source
# File lib/eac_ruby_utils/gems_registry/gem.rb, line 68
def gem_item_dependencies(item)
  ::Gem::Specification.find_by_name(item.name).dependencies
rescue ::Gem::MissingSpecError
  []
end