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