1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

[bundler/bundler] Fix open default gem error

792d724752
This commit is contained in:
Zehan Zhao 2016-08-15 22:44:19 +08:00 committed by Hiroshi SHIBATA
parent 98841b2b19
commit d80f5399ad
2 changed files with 22 additions and 5 deletions

View file

@ -15,11 +15,15 @@ module Bundler
return Bundler.ui.info("To open a bundled gem, set $EDITOR or $BUNDLER_EDITOR") unless editor return Bundler.ui.info("To open a bundled gem, set $EDITOR or $BUNDLER_EDITOR") unless editor
return unless spec = Bundler::CLI::Common.select_spec(name, :regex_match) return unless spec = Bundler::CLI::Common.select_spec(name, :regex_match)
path = spec.full_gem_path path = spec.full_gem_path
Dir.chdir(path) do if spec.default_gem?
command = Shellwords.split(editor) + [path] Bundler.ui.info "Unable to open #{name} because it's a default gem, so the directory it would normally be installed to does not exist."
Bundler.with_original_env do else
system(*command) Dir.chdir(path) do
end || Bundler.ui.info("Could not run '#{command.join(" ")}'") command = Shellwords.split(editor) + [path]
Bundler.with_original_env do
system(*command)
end || Bundler.ui.info("Could not run '#{command.join(" ")}'")
end
end end
end end
end end

View file

@ -91,4 +91,17 @@ RSpec.describe "bundle open" do
expect(out).not_to include("BUNDLE_GEMFILE=") expect(out).not_to include("BUNDLE_GEMFILE=")
end end
end end
context "when opening a default gem" do
before do
install_gemfile <<-G
gem "json"
G
end
it "throws proper error when trying to open default gem" do
bundle "open json", :env => { "EDITOR" => "echo editor", "VISUAL" => "echo visual", "BUNDLER_EDITOR" => "echo bundler_editor" }
expect(out).to include("Unable to open json because it's a default gem, so the directory it would normally be installed to does not exist.")
end
end
end end