class EacRubyUtils::GemsRegistry::Gem
def <=>(other)
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
def depend_on(gem)
def depend_on(gem) dependencies.lazy.map(&:name).include?(gem.gemspec.name) end
def dependencies
def dependencies @dependencies ||= dependencies_uncached # dependencies_uncached end
def dependencies_uncached
def dependencies_uncached ::EacRubyUtils::RecursiveBuilder .new(gemspec) { |item| gem_item_dependencies(item) } .result end
def found?
def found? lib_file_found? && registered_module.is_a?(::Module) end
def gem_item_dependencies(item)
def gem_item_dependencies(item) ::Gem::Specification.find_by_name(item.name).dependencies rescue ::Gem::MissingSpecError [] end
def initialize(registry, gemspec)
def initialize(registry, gemspec) @registry = registry @gemspec = gemspec end
def lib_file_found?
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
def path_to_require
-
(String)
-
def path_to_require gemspec.name.gsub('-', '/') + '/' + registry.module_suffix.underscore end
def registered_module
def registered_module return nil unless lib_file_found? require path_to_require path_to_require.classify.constantize end
def to_s
def to_s "#{self.class.name}[#{gemspec.name}]" end