class Gem::Commands::OpenCommand

Public Class Methods

new() click to toggle source
Calls superclass method Gem::Command::new
# File lib/rubygems/commands/open_command.rb, line 8
def initialize
  super "open", "Open gem sources in editor"

  add_option("-e", "--editor COMMAND", String,
             "Prepends COMMAND to gem path. Could be used to specify editor.") do |command, options|
    options[:editor] = command || get_env_editor
  end
  add_option("-v", "--version VERSION", String,
             "Opens specific gem version") do |version|
    options[:version] = version
  end
end

Public Instance Methods

execute() click to toggle source
# File lib/rubygems/commands/open_command.rb, line 49
def execute
  @version = options[:version] || Gem::Requirement.default
  @editor  = options[:editor] || get_env_editor

  found = open_gem(get_one_gem_name)

  terminate_interaction 1 unless found
end
get_env_editor() click to toggle source
# File lib/rubygems/commands/open_command.rb, line 42
def get_env_editor
  ENV["GEM_EDITOR"] ||
    ENV["VISUAL"] ||
    ENV["EDITOR"] ||
    "vi"
end
open_editor(path) click to toggle source
# File lib/rubygems/commands/open_command.rb, line 71
def open_editor(path)
  Dir.chdir(path) do
    system(*@editor.split(/\s+/) + [path])
  end
end
open_gem(name) click to toggle source
# File lib/rubygems/commands/open_command.rb, line 58
def open_gem(name)
  spec = spec_for name

  return false unless spec

  if spec.default_gem?
    say "'#{name}' is a default gem and can't be opened."
    return false
  end

  open_editor(spec.full_gem_path)
end
spec_for(name) click to toggle source
# File lib/rubygems/commands/open_command.rb, line 77
def spec_for(name)
  spec = Gem::Specification.find_all_by_name(name, @version).first

  return spec if spec

  say "Unable to find gem '#{name}'"
end