def install(gem_name, version_requirement = "> 0.0.0", force=false,
install_dir=Gem.dir, install_stub=true)
unless version_requirement.respond_to?(:satisfied_by?)
version_requirement = Version::Requirement.new [version_requirement]
end
installed_gems = []
begin
spec, source = find_gem_to_install(gem_name, version_requirement)
dependencies = find_dependencies_not_installed(spec.dependencies)
installed_gems << install_dependencies(dependencies, force, install_dir)
cache_dir = @options[:cache_dir] || File.join(install_dir, "cache")
destination_file = File.join(cache_dir, spec.full_name + ".gem")
download_gem(destination_file, source, spec)
installer = new_installer(destination_file)
installed_gems.unshift installer.install(force, install_dir, install_stub)
rescue RemoteInstallationSkipped => e
puts e.message
end
installed_gems.flatten
end