module Busser::RubyGems

RubyGems API abstraction logic, used to install and verify plugins.

@author Fletcher Nichol <fnichol@nichol.ca>

Public Instance Methods

gem_installed?(name, version) click to toggle source
# File lib/busser/rubygems.rb, line 30
def gem_installed?(name, version)
  version = Gem::Requirement.default unless version
  ! Gem::Dependency.new(name, version).matching_specs.empty?
end
install_gem(gem, version) click to toggle source
# File lib/busser/rubygems.rb, line 35
def install_gem(gem, version)
  version = Gem::Requirement.default unless version

  inst = Gem::DependencyInstaller.new(rbg_options)
  specs = inst.install(gem, Gem::Requirement.create(version))

  Gem.clear_paths
  specs.find { |s| s.name == gem }
end
rbg_options() click to toggle source
# File lib/busser/rubygems.rb, line 45
def rbg_options
  @rbg_options ||= Gem::DependencyInstaller::DEFAULT_OPTIONS.merge(
    :suggest_alternate => false,
    :version => Gem::Requirement.default,
    :without_groups => [],
    :minimal_deps => true,
    :http_proxy => ENV.fetch("http_proxy", ENV.fetch("HTTP_PROXY", nil))
  )
end
silence_gem_ui() { || ... } click to toggle source
# File lib/busser/rubygems.rb, line 55
def silence_gem_ui
  interaction = Gem::DefaultUserInteraction.ui
  if !Gem.configuration.really_verbose
    Gem::DefaultUserInteraction.ui = Gem::SilentUI.new
  end
  yield
ensure
  Gem::DefaultUserInteraction.ui = interaction
end