class Rabbit::GemFinder
Public Class Methods
new(logger=nil)
click to toggle source
# File lib/rabbit/gem-finder.rb, line 23 def initialize(logger=nil) @logger = logger || Logger.default end
Public Instance Methods
find(name, prefix)
click to toggle source
# File lib/rabbit/gem-finder.rb, line 27 def find(name, prefix) normalized_name = name.downcase unless normalized_name.start_with?(prefix) normalized_name = "#{prefix}#{normalized_name}" end retried = false spec = nil begin spec = Gem::Specification.find_by_name(name) rescue Gem::LoadError begin spec = Gem::Specification.find_by_name(normalized_name) rescue Gem::LoadError unless retried retried = true require "rubygems/dependency_installer" options = {} if File.writable?(Gem.dir) @logger.info(_("Installing gem: %s") % normalized_name) else options[:user_install] = true format = _("Installing gem in user install mode: %s") @logger.info(format % normalized_name) end installer = Gem::DependencyInstaller.new(options) installer.install(normalized_name, Gem::Requirement.default) retry end end end spec end