# 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 10
    def initialize
      super 'open', 'Open gem sources in editor'

      add_option('-e', '--editor EDITOR', String,
                 "Opens gem sources in EDITOR") do |editor, options|
        options[:editor] = editor || 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 51
    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 44
    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 67
    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 60
    def open_gem name
      spec = spec_for name
      return false unless spec

      open_editor(spec.full_gem_path)
    end

spec_for(name) click to toggle source

    # File lib/rubygems/commands/open_command.rb, line 73
    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