From cb0cf76489774ac57947790bf0eec4403e17b45e Mon Sep 17 00:00:00 2001 From: Conrad Irwin Date: Wed, 14 Nov 2012 00:17:30 -0800 Subject: [PATCH] Add gem-open to open the gem in an editor --- lib/pry/commands/gem_open.rb | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 lib/pry/commands/gem_open.rb diff --git a/lib/pry/commands/gem_open.rb b/lib/pry/commands/gem_open.rb new file mode 100644 index 00000000..5bd29d2f --- /dev/null +++ b/lib/pry/commands/gem_open.rb @@ -0,0 +1,26 @@ +class Pry + Pry::Commands.create_command "gem-open" do |gem| + group 'Gems' + description "Opens the working directory of the gem in your editor" + command_options :argument_required => true + + banner <<-BANNER + Usage: gem-open GEM_NAME + + Change the current working directory to that in which the given gem is installed, + and then opens your text editor. + BANNER + + def process(gem) + specs = Gem::Specification.respond_to?(:each) ? Gem::Specification.find_all_by_name(gem) : Gem.source_index.find_name(gem) + spec = specs.sort { |a,b| Gem::Version.new(b.version) <=> Gem::Version.new(a.version) }.first + if spec + Dir.chdir(spec.full_gem_path) do + invoke_editor(".", 0, false) + end + else + raise CommandError, "Gem `#{gem}` not found." + end + end + end +end