bundler 1.3.0.pre.3 → 1.3.0.pre.4
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of bundler might be problematic. Click here for more details.
- data/CHANGELOG.md +15 -1
- data/bin/bundle +5 -0
- data/bin/bundle_ruby +56 -0
- data/lib/bundler.rb +1 -0
- data/lib/bundler/cli.rb +26 -1
- data/lib/bundler/dsl.rb +2 -8
- data/lib/bundler/installer.rb +16 -5
- data/lib/bundler/ruby_dsl.rb +11 -0
- data/lib/bundler/settings.rb +1 -1
- data/lib/bundler/version.rb +1 -1
- data/spec/other/binstubs_spec.rb +135 -0
- data/spec/other/bundle_ruby_spec.rb +112 -0
- data/spec/runtime/executable_spec.rb +12 -0
- data/spec/support/helpers.rb +26 -0
- metadata +81 -143
data/CHANGELOG.md
CHANGED
@@ -1,13 +1,27 @@
|
|
1
|
-
## 1.3.0.pre.3
|
1
|
+
## 1.3.0.pre.4 (Jan 3, 2013)
|
2
|
+
|
3
|
+
Features:
|
4
|
+
|
5
|
+
- `bundle binstubs <gem>` to setup individual binstubs
|
6
|
+
- `bundle install --binstubs ""` will remove binstubs option
|
7
|
+
|
8
|
+
Bugfixes:
|
9
|
+
|
10
|
+
- Avoid stack traces when Ctrl+C during bundle command (@mitchellh)
|
11
|
+
- fix YAML parsing in in ruby-preview2
|
12
|
+
|
13
|
+
## 1.3.0.pre.3 (Dec 21, 2012)
|
2
14
|
|
3
15
|
Features:
|
4
16
|
|
5
17
|
- pushing gems during `rake release` can be disabled (@trans)
|
6
18
|
- installing gems with `rake install` is much faster (@utkarshkukreti)
|
19
|
+
- added platforms :ruby_20 and :mri_20, since the ABI has changed
|
7
20
|
|
8
21
|
Bugfixes:
|
9
22
|
|
10
23
|
- :git gems with extensions now work with Rubygems >= 2.0 (@jeremy)
|
24
|
+
- revert SemVer breaking change to :github
|
11
25
|
- `outdated` exits non-zero if outdated gems found (@rohit, #2021)
|
12
26
|
- https Gist URLs for compatibility with Gist 2.0 (@NARKOZ)
|
13
27
|
- namespaced gems no longer generate a superfluous directory (@banyan)
|
data/bin/bundle
CHANGED
data/bin/bundle_ruby
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
Signal.trap("INT") { exit 1 }
|
4
|
+
|
5
|
+
require 'bundler/ruby_version'
|
6
|
+
require 'bundler/ruby_dsl'
|
7
|
+
require 'bundler/shared_helpers'
|
8
|
+
|
9
|
+
module Bundler
|
10
|
+
class GemfileError < RuntimeError; end
|
11
|
+
class Dsl
|
12
|
+
include RubyDsl
|
13
|
+
|
14
|
+
attr_accessor :ruby_version
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
@ruby_version = nil
|
18
|
+
end
|
19
|
+
|
20
|
+
def eval_gemfile(gemfile, contents = nil)
|
21
|
+
contents ||= File.open(gemfile, "rb") { |f| f.read }
|
22
|
+
instance_eval(contents, gemfile.to_s, 1)
|
23
|
+
rescue SyntaxError => e
|
24
|
+
bt = e.message.split("\n")[1..-1]
|
25
|
+
raise GemfileError, ["Gemfile syntax error:", *bt].join("\n")
|
26
|
+
rescue ScriptError, RegexpError, NameError, ArgumentError => e
|
27
|
+
e.backtrace[0] = "#{e.backtrace[0]}: #{e.message} (#{e.class})"
|
28
|
+
STDERR.puts e.backtrace.join("\n ")
|
29
|
+
raise GemfileError, "There was an error in your Gemfile," \
|
30
|
+
" and Bundler cannot continue."
|
31
|
+
end
|
32
|
+
|
33
|
+
def source(source, options = {})
|
34
|
+
end
|
35
|
+
|
36
|
+
def gem(name, *args)
|
37
|
+
end
|
38
|
+
|
39
|
+
def group(*args, &blk)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
dsl = Bundler::Dsl.new
|
45
|
+
begin
|
46
|
+
dsl.eval_gemfile(Bundler::SharedHelpers.default_gemfile)
|
47
|
+
ruby_version = dsl.ruby_version
|
48
|
+
if ruby_version
|
49
|
+
puts ruby_version
|
50
|
+
else
|
51
|
+
puts "No ruby version specified"
|
52
|
+
end
|
53
|
+
rescue Bundler::GemfileError => e
|
54
|
+
puts e.message
|
55
|
+
exit(-1)
|
56
|
+
end
|
data/lib/bundler.rb
CHANGED
@@ -31,6 +31,7 @@ module Bundler
|
|
31
31
|
autoload :RemoteSpecification, 'bundler/remote_specification'
|
32
32
|
autoload :Resolver, 'bundler/resolver'
|
33
33
|
autoload :RubyVersion, 'bundler/ruby_version'
|
34
|
+
autoload :RubyDsl, 'bundler/ruby_dsl'
|
34
35
|
autoload :Runtime, 'bundler/runtime'
|
35
36
|
autoload :Settings, 'bundler/settings'
|
36
37
|
autoload :SharedHelpers, 'bundler/shared_helpers'
|
data/lib/bundler/cli.rb
CHANGED
@@ -216,7 +216,8 @@ module Bundler
|
|
216
216
|
Bundler.settings[:path] = "vendor/bundle" if opts[:deployment]
|
217
217
|
Bundler.settings[:path] = opts[:path] if opts[:path]
|
218
218
|
Bundler.settings[:path] ||= "bundle" if opts[:standalone]
|
219
|
-
Bundler.settings[:bin]
|
219
|
+
Bundler.settings[:bin] = opts["binstubs"] if opts["binstubs"]
|
220
|
+
Bundler.settings[:bin] = nil if opts["binstubs"] && opts["binstubs"].empty?
|
220
221
|
Bundler.settings[:shebang] = opts["shebang"] if opts[:shebang]
|
221
222
|
Bundler.settings[:no_prune] = true if opts["no-prune"]
|
222
223
|
Bundler.settings[:disable_shared_gems] = Bundler.settings[:path] ? '1' : nil
|
@@ -330,6 +331,30 @@ module Bundler
|
|
330
331
|
end
|
331
332
|
map %w(list) => "show"
|
332
333
|
|
334
|
+
desc "binstubs [GEM]", "install the binstubs of the listed gem"
|
335
|
+
long_desc <<-D
|
336
|
+
This command will install bundler generated binstubs of the [GEM] specified in
|
337
|
+
the bin directory specified by --binstubs or the default location.
|
338
|
+
D
|
339
|
+
method_option "path", :type => :string, :lazy_default => "bin", :banner =>
|
340
|
+
"the directory to put the binstubs, defaults to ./bin"
|
341
|
+
method_option "force", :type => :boolean, :default => false, :banner =>
|
342
|
+
"forces the writing of a binstub, even if it already exists"
|
343
|
+
def binstubs(gem_name)
|
344
|
+
Bundler.definition.validate_ruby!
|
345
|
+
Bundler.settings[:bin] = options["path"] if options["path"]
|
346
|
+
Bundler.settings[:bin] = nil if options["path"] && options["path"].empty?
|
347
|
+
installer = Installer.new(Bundler.root, Bundler.definition)
|
348
|
+
spec = installer.specs.find{|s| s.name == gem_name }
|
349
|
+
raise GemNotFound, not_found_message(name, Bundler.load.specs) unless spec
|
350
|
+
|
351
|
+
if spec.name == "bundler"
|
352
|
+
Bundler.ui.warn "Skipping bundler since can't bundle bundler."
|
353
|
+
else
|
354
|
+
installer.generate_bundler_executable_stubs(spec, :force => options[:force])
|
355
|
+
end
|
356
|
+
end
|
357
|
+
|
333
358
|
desc "outdated [GEM]", "list installed gems with newer versions available"
|
334
359
|
long_desc <<-D
|
335
360
|
Outdated lists the names and versions of gems that have a newer version available
|
data/lib/bundler/dsl.rb
CHANGED
@@ -2,6 +2,8 @@ require 'bundler/dependency'
|
|
2
2
|
|
3
3
|
module Bundler
|
4
4
|
class Dsl
|
5
|
+
include RubyDsl
|
6
|
+
|
5
7
|
def self.evaluate(gemfile, lockfile, unlock)
|
6
8
|
builder = new
|
7
9
|
builder.eval_gemfile(gemfile)
|
@@ -171,14 +173,6 @@ module Bundler
|
|
171
173
|
@env = old
|
172
174
|
end
|
173
175
|
|
174
|
-
def ruby(ruby_version, options = {})
|
175
|
-
raise GemfileError, "Please define :engine_version" if options[:engine] && options[:engine_version].nil?
|
176
|
-
raise GemfileError, "Please define :engine" if options[:engine_version] && options[:engine].nil?
|
177
|
-
|
178
|
-
raise GemfileError, "ruby_version must match the :engine_version for MRI" if options[:engine] == "ruby" && options[:engine_version] && ruby_version != options[:engine_version]
|
179
|
-
@ruby_version = RubyVersion.new(ruby_version, options[:engine], options[:engine_version])
|
180
|
-
end
|
181
|
-
|
182
176
|
def method_missing(name, *args)
|
183
177
|
location = caller[0].split(':')[0..1].join(':')
|
184
178
|
raise GemfileError, "Undefined local variable or method `#{name}' for Gemfile\n" \
|
data/lib/bundler/installer.rb
CHANGED
@@ -93,8 +93,6 @@ module Bundler
|
|
93
93
|
generate_standalone(options[:standalone]) if options[:standalone]
|
94
94
|
end
|
95
95
|
|
96
|
-
private
|
97
|
-
|
98
96
|
def install_gem_from_spec(spec, standalone = false)
|
99
97
|
# Download the gem to get the spec, because some specs that are returned
|
100
98
|
# by rubygems.org are broken and wrong.
|
@@ -128,7 +126,7 @@ module Bundler
|
|
128
126
|
raise Bundler::InstallError, msg
|
129
127
|
end
|
130
128
|
|
131
|
-
def generate_bundler_executable_stubs(spec)
|
129
|
+
def generate_bundler_executable_stubs(spec, options = {})
|
132
130
|
# double-assignment to avoid warnings about variables that will be used by ERB
|
133
131
|
bin_path = bin_path = Bundler.bin_path
|
134
132
|
template = template = File.read(File.expand_path('../templates/Executable', __FILE__))
|
@@ -136,13 +134,26 @@ module Bundler
|
|
136
134
|
ruby_command = ruby_command = Thor::Util.ruby_command
|
137
135
|
|
138
136
|
spec.executables.each do |executable|
|
137
|
+
write = true
|
138
|
+
binstub_path = "#{bin_path}/#{executable}"
|
139
139
|
next if executable == "bundle"
|
140
|
-
File.
|
141
|
-
|
140
|
+
if File.exists?(binstub_path) && !options[:force]
|
141
|
+
write = false
|
142
|
+
Bundler.ui.warn <<-MSG
|
143
|
+
Skipping #{executable} since it already exists. Pass --force to overwrite.
|
144
|
+
MSG
|
145
|
+
end
|
146
|
+
|
147
|
+
if write
|
148
|
+
File.open binstub_path, 'w', 0755 do |f|
|
149
|
+
f.puts ERB.new(template, nil, '-').result(binding)
|
150
|
+
end
|
142
151
|
end
|
143
152
|
end
|
144
153
|
end
|
145
154
|
|
155
|
+
private
|
156
|
+
|
146
157
|
def generate_standalone_bundler_executable_stubs(spec)
|
147
158
|
# double-assignment to avoid warnings about variables that will be used by ERB
|
148
159
|
bin_path = Bundler.bin_path
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Bundler
|
2
|
+
module RubyDsl
|
3
|
+
def ruby(ruby_version, options = {})
|
4
|
+
raise GemfileError, "Please define :engine_version" if options[:engine] && options[:engine_version].nil?
|
5
|
+
raise GemfileError, "Please define :engine" if options[:engine_version] && options[:engine].nil?
|
6
|
+
|
7
|
+
raise GemfileError, "ruby_version must match the :engine_version for MRI" if options[:engine] == "ruby" && options[:engine_version] && ruby_version != options[:engine_version]
|
8
|
+
@ruby_version = RubyVersion.new(ruby_version, options[:engine], options[:engine_version])
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
data/lib/bundler/settings.rb
CHANGED
@@ -128,7 +128,7 @@ module Bundler
|
|
128
128
|
|
129
129
|
def load_config(config_file)
|
130
130
|
if config_file.exist? && !config_file.size.zero?
|
131
|
-
Hash[config_file.read.scan(/^(BUNDLE_.+): '?(.+?)'?$/)]
|
131
|
+
Hash[config_file.read.scan(/^(BUNDLE_.+): ['"]?(.+?)['"]?$/)]
|
132
132
|
else
|
133
133
|
{}
|
134
134
|
end
|
data/lib/bundler/version.rb
CHANGED
@@ -2,5 +2,5 @@ module Bundler
|
|
2
2
|
# We're doing this because we might write tests that deal
|
3
3
|
# with other versions of bundler and we are unsure how to
|
4
4
|
# handle this better.
|
5
|
-
VERSION = "1.3.0.pre.
|
5
|
+
VERSION = "1.3.0.pre.4" unless defined?(::Bundler::VERSION)
|
6
6
|
end
|
@@ -0,0 +1,135 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "bundle binstubs <gem>" do
|
4
|
+
context "when the gem exists in the lockfile" do
|
5
|
+
it "sets up the binstub" do
|
6
|
+
install_gemfile <<-G
|
7
|
+
source "file://#{gem_repo1}"
|
8
|
+
gem "rack"
|
9
|
+
G
|
10
|
+
|
11
|
+
bundle "binstubs rack"
|
12
|
+
|
13
|
+
expect(bundled_app("bin/rackup")).to exist
|
14
|
+
end
|
15
|
+
|
16
|
+
it "does not install other binstubs" do
|
17
|
+
install_gemfile <<-G
|
18
|
+
source "file://#{gem_repo1}"
|
19
|
+
gem "rack"
|
20
|
+
gem "rails"
|
21
|
+
G
|
22
|
+
|
23
|
+
bundle "binstubs rails"
|
24
|
+
|
25
|
+
expect(bundled_app("bin/rackup")).not_to exist
|
26
|
+
expect(bundled_app("bin/rails")).to exist
|
27
|
+
end
|
28
|
+
|
29
|
+
it "does not bundle the bundler binary" do
|
30
|
+
install_gemfile <<-G
|
31
|
+
source "file://#{gem_repo1}"
|
32
|
+
G
|
33
|
+
|
34
|
+
bundle "binstubs bundler"
|
35
|
+
|
36
|
+
expect(bundled_app("bin/bundle")).not_to exist
|
37
|
+
expect(out).to eq("Skipping bundler since can't bundle bundler.")
|
38
|
+
end
|
39
|
+
|
40
|
+
it "install binstubs from git gems" do
|
41
|
+
FileUtils.mkdir_p(lib_path("foo/bin"))
|
42
|
+
FileUtils.touch(lib_path("foo/bin/foo"))
|
43
|
+
build_git "foo", "1.0", :path => lib_path("foo") do |s|
|
44
|
+
s.executables = %w(foo)
|
45
|
+
end
|
46
|
+
install_gemfile <<-G
|
47
|
+
gem "foo", :git => "#{lib_path('foo')}"
|
48
|
+
G
|
49
|
+
|
50
|
+
bundle "binstubs foo"
|
51
|
+
|
52
|
+
expect(bundled_app("bin/foo")).to exist
|
53
|
+
end
|
54
|
+
|
55
|
+
it "installs binstubs from path gems" do
|
56
|
+
FileUtils.mkdir_p(lib_path("foo/bin"))
|
57
|
+
FileUtils.touch(lib_path("foo/bin/foo"))
|
58
|
+
build_lib "foo" , "1.0", :path => lib_path("foo") do |s|
|
59
|
+
s.executables = %w(foo)
|
60
|
+
end
|
61
|
+
install_gemfile <<-G
|
62
|
+
gem "foo", :path => "#{lib_path('foo')}"
|
63
|
+
G
|
64
|
+
|
65
|
+
bundle "binstubs foo"
|
66
|
+
|
67
|
+
expect(bundled_app("bin/foo")).to exist
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context "--path" do
|
72
|
+
it "sets the binstubs dir" do
|
73
|
+
install_gemfile <<-G
|
74
|
+
source "file://#{gem_repo1}"
|
75
|
+
gem "rack"
|
76
|
+
G
|
77
|
+
|
78
|
+
bundle "binstubs rack --path exec"
|
79
|
+
|
80
|
+
expect(bundled_app("exec/rackup")).to exist
|
81
|
+
end
|
82
|
+
|
83
|
+
it "setting is saved for bundle install" do
|
84
|
+
install_gemfile <<-G
|
85
|
+
source "file://#{gem_repo1}"
|
86
|
+
gem "rack"
|
87
|
+
gem "rails"
|
88
|
+
G
|
89
|
+
|
90
|
+
bundle "binstubs rack --path exec"
|
91
|
+
bundle :install
|
92
|
+
|
93
|
+
expect(bundled_app("exec/rails")).to exist
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
context "when the bin already exists" do
|
98
|
+
it "don't override it and warn" do
|
99
|
+
FileUtils.mkdir_p(bundled_app("bin"))
|
100
|
+
File.open(bundled_app("bin/rackup"), 'wb') do |file|
|
101
|
+
file.print "OMG"
|
102
|
+
end
|
103
|
+
|
104
|
+
install_gemfile <<-G
|
105
|
+
source "file://#{gem_repo1}"
|
106
|
+
gem "rack"
|
107
|
+
G
|
108
|
+
|
109
|
+
bundle "binstubs rack"
|
110
|
+
|
111
|
+
expect(bundled_app("bin/rackup")).to exist
|
112
|
+
expect(File.read(bundled_app("bin/rackup"))).to eq("OMG")
|
113
|
+
expect(out).to eq("Skipping rackup since it already exists. Pass --force to overwrite.")
|
114
|
+
end
|
115
|
+
|
116
|
+
context "when using --force" do
|
117
|
+
it "overrides the binstub" do
|
118
|
+
FileUtils.mkdir_p(bundled_app("bin"))
|
119
|
+
File.open(bundled_app("bin/rackup"), 'wb') do |file|
|
120
|
+
file.print "OMG"
|
121
|
+
end
|
122
|
+
|
123
|
+
install_gemfile <<-G
|
124
|
+
source "file://#{gem_repo1}"
|
125
|
+
gem "rack"
|
126
|
+
G
|
127
|
+
|
128
|
+
bundle "binstubs rack --force"
|
129
|
+
|
130
|
+
expect(bundled_app("bin/rackup")).to exist
|
131
|
+
expect(File.read(bundled_app("bin/rackup"))).not_to eq("OMG")
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "bundle_ruby" do
|
4
|
+
it "returns the ruby version" do
|
5
|
+
gemfile <<-G
|
6
|
+
source "file://#{gem_repo1}"
|
7
|
+
ruby "1.9.3", :engine => 'ruby', :engine_version => '1.9.3'
|
8
|
+
|
9
|
+
gem "foo"
|
10
|
+
G
|
11
|
+
|
12
|
+
bundle_ruby
|
13
|
+
|
14
|
+
expect(out).to eq("ruby 1.9.3")
|
15
|
+
end
|
16
|
+
|
17
|
+
it "engine defaults to MRI" do
|
18
|
+
gemfile <<-G
|
19
|
+
source "file://#{gem_repo1}"
|
20
|
+
ruby "1.9.3"
|
21
|
+
|
22
|
+
gem "foo"
|
23
|
+
G
|
24
|
+
|
25
|
+
bundle_ruby
|
26
|
+
|
27
|
+
expect(out).to eq("ruby 1.9.3")
|
28
|
+
end
|
29
|
+
|
30
|
+
it "handles jruby" do
|
31
|
+
gemfile <<-G
|
32
|
+
source "file://#{gem_repo1}"
|
33
|
+
ruby "1.8.7", :engine => 'jruby', :engine_version => '1.6.5'
|
34
|
+
|
35
|
+
gem "foo"
|
36
|
+
G
|
37
|
+
|
38
|
+
bundle_ruby
|
39
|
+
|
40
|
+
expect(out).to eq("ruby 1.8.7 (jruby 1.6.5)")
|
41
|
+
end
|
42
|
+
|
43
|
+
it "handles rbx" do
|
44
|
+
gemfile <<-G
|
45
|
+
source "file://#{gem_repo1}"
|
46
|
+
ruby "1.8.7", :engine => 'rbx', :engine_version => '1.2.4'
|
47
|
+
|
48
|
+
gem "foo"
|
49
|
+
G
|
50
|
+
|
51
|
+
bundle_ruby
|
52
|
+
|
53
|
+
expect(out).to eq("ruby 1.8.7 (rbx 1.2.4)")
|
54
|
+
end
|
55
|
+
|
56
|
+
it "raises an error if engine is used but engine version is not" do
|
57
|
+
gemfile <<-G
|
58
|
+
source "file://#{gem_repo1}"
|
59
|
+
ruby "1.8.7", :engine => 'rbx'
|
60
|
+
|
61
|
+
gem "foo"
|
62
|
+
G
|
63
|
+
|
64
|
+
bundle_ruby :exitstatus => true
|
65
|
+
expect(exitstatus).not_to eq(0)
|
66
|
+
|
67
|
+
bundle_ruby
|
68
|
+
expect(out).to eq("Please define :engine_version")
|
69
|
+
end
|
70
|
+
|
71
|
+
it "raises an error if engine_version is used but engine is not" do
|
72
|
+
gemfile <<-G
|
73
|
+
source "file://#{gem_repo1}"
|
74
|
+
ruby "1.8.7", :engine_version => '1.2.4'
|
75
|
+
|
76
|
+
gem "foo"
|
77
|
+
G
|
78
|
+
|
79
|
+
bundle_ruby :exitstatus => true
|
80
|
+
expect(exitstatus).not_to eq(0)
|
81
|
+
|
82
|
+
bundle_ruby
|
83
|
+
expect(out).to eq("Please define :engine")
|
84
|
+
end
|
85
|
+
|
86
|
+
it "raises an error if engine version doesn't match ruby version for mri" do
|
87
|
+
gemfile <<-G
|
88
|
+
source "file://#{gem_repo1}"
|
89
|
+
ruby "1.8.7", :engine => 'ruby', :engine_version => '1.2.4'
|
90
|
+
|
91
|
+
gem "foo"
|
92
|
+
G
|
93
|
+
|
94
|
+
bundle_ruby :exitstatus => true
|
95
|
+
expect(exitstatus).not_to eq(0)
|
96
|
+
|
97
|
+
bundle_ruby
|
98
|
+
expect(out).to eq("ruby_version must match the :engine_version for MRI")
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should print if no ruby version is specified" do
|
102
|
+
gemfile <<-G
|
103
|
+
source "file://#{gem_repo1}"
|
104
|
+
|
105
|
+
gem "foo"
|
106
|
+
G
|
107
|
+
|
108
|
+
bundle_ruby
|
109
|
+
|
110
|
+
expect(out).to eq("No ruby version specified")
|
111
|
+
end
|
112
|
+
end
|
@@ -99,6 +99,18 @@ describe "Running bin/* commands" do
|
|
99
99
|
expect(bundled_app("bin/rackup")).not_to exist
|
100
100
|
end
|
101
101
|
|
102
|
+
it "allows you to stop installing binstubs" do
|
103
|
+
bundle "install --binstubs bin/"
|
104
|
+
bundled_app("bin/rackup").rmtree
|
105
|
+
bundle "install --binstubs \"\""
|
106
|
+
|
107
|
+
expect(bundled_app("bin/rackup")).not_to exist
|
108
|
+
#expect(bundled_app("rackup")).not_to exist
|
109
|
+
|
110
|
+
bundle "config bin"
|
111
|
+
expect(out).to include("You have not configured a value for `bin`")
|
112
|
+
end
|
113
|
+
|
102
114
|
it "remembers that the option was specified" do
|
103
115
|
gemfile <<-G
|
104
116
|
source "file://#{gem_repo1}"
|
data/spec/support/helpers.rb
CHANGED
@@ -81,6 +81,32 @@ module Spec
|
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
+
def bundle_ruby(options = {})
|
85
|
+
expect_err = options.delete(:expect_err)
|
86
|
+
exitstatus = options.delete(:exitstatus)
|
87
|
+
options["no-color"] = true unless options.key?("no-color")
|
88
|
+
|
89
|
+
bundle_bin = File.expand_path('../../../bin/bundle_ruby', __FILE__)
|
90
|
+
|
91
|
+
requires = options.delete(:requires) || []
|
92
|
+
requires << File.expand_path('../fakeweb/'+options.delete(:fakeweb)+'.rb', __FILE__) if options.key?(:fakeweb)
|
93
|
+
requires << File.expand_path('../artifice/'+options.delete(:artifice)+'.rb', __FILE__) if options.key?(:artifice)
|
94
|
+
requires_str = requires.map{|r| "-r#{r}"}.join(" ")
|
95
|
+
|
96
|
+
env = (options.delete(:env) || {}).map{|k,v| "#{k}='#{v}' "}.join
|
97
|
+
args = options.map do |k,v|
|
98
|
+
v == true ? " --#{k}" : " --#{k} #{v}" if v
|
99
|
+
end.join
|
100
|
+
|
101
|
+
cmd = "#{env}#{Gem.ruby} -I#{lib} #{requires_str} #{bundle_bin}"
|
102
|
+
|
103
|
+
if exitstatus
|
104
|
+
sys_status(cmd)
|
105
|
+
else
|
106
|
+
sys_exec(cmd, expect_err){|i| yield i if block_given? }
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
84
110
|
def ruby(ruby, options = {})
|
85
111
|
expect_err = options.delete(:expect_err)
|
86
112
|
env = (options.delete(:env) || {}).map{|k,v| "#{k}='#{v}' "}.join
|
metadata
CHANGED
@@ -1,60 +1,66 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: bundler
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: -803975870
|
5
5
|
prerelease: 6
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
- pre
|
11
|
+
- 4
|
12
|
+
version: 1.3.0.pre.4
|
6
13
|
platform: ruby
|
7
|
-
authors:
|
8
|
-
-
|
14
|
+
authors:
|
15
|
+
- "Andr\xC3\xA9 Arko"
|
9
16
|
- Terence Lee
|
10
17
|
- Carl Lerche
|
11
18
|
- Yehuda Katz
|
12
19
|
autorequire:
|
13
20
|
bindir: bin
|
14
21
|
cert_chain: []
|
15
|
-
|
16
|
-
|
17
|
-
|
22
|
+
|
23
|
+
date: 2013-01-04 00:00:00 Z
|
24
|
+
dependencies:
|
25
|
+
- !ruby/object:Gem::Dependency
|
18
26
|
name: ronn
|
19
|
-
requirement: !ruby/object:Gem::Requirement
|
20
|
-
none: false
|
21
|
-
requirements:
|
22
|
-
- - ! '>='
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version: '0'
|
25
|
-
type: :development
|
26
27
|
prerelease: false
|
27
|
-
|
28
|
-
none: false
|
29
|
-
requirements:
|
30
|
-
- - ! '>='
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '0'
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: rspec
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
28
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
36
29
|
none: false
|
37
|
-
requirements:
|
38
|
-
- -
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
hash: 3
|
34
|
+
segments:
|
35
|
+
- 0
|
36
|
+
version: "0"
|
41
37
|
type: :development
|
38
|
+
version_requirements: *id001
|
39
|
+
- !ruby/object:Gem::Dependency
|
40
|
+
name: rspec
|
42
41
|
prerelease: false
|
43
|
-
|
42
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
44
43
|
none: false
|
45
|
-
requirements:
|
44
|
+
requirements:
|
46
45
|
- - ~>
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
hash: 21
|
48
|
+
segments:
|
49
|
+
- 2
|
50
|
+
- 11
|
51
|
+
version: "2.11"
|
52
|
+
type: :development
|
53
|
+
version_requirements: *id002
|
54
|
+
description: Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably
|
55
|
+
email:
|
52
56
|
- andre@arko.net
|
53
|
-
executables:
|
57
|
+
executables:
|
54
58
|
- bundle
|
55
59
|
extensions: []
|
60
|
+
|
56
61
|
extra_rdoc_files: []
|
57
|
-
|
62
|
+
|
63
|
+
files:
|
58
64
|
- .gitignore
|
59
65
|
- .rspec
|
60
66
|
- .travis.yml
|
@@ -67,6 +73,7 @@ files:
|
|
67
73
|
- Rakefile
|
68
74
|
- UPGRADING.md
|
69
75
|
- bin/bundle
|
76
|
+
- bin/bundle_ruby
|
70
77
|
- bundler.gemspec
|
71
78
|
- lib/bundler.rb
|
72
79
|
- lib/bundler/capistrano.rb
|
@@ -96,6 +103,7 @@ files:
|
|
96
103
|
- lib/bundler/psyched_yaml.rb
|
97
104
|
- lib/bundler/remote_specification.rb
|
98
105
|
- lib/bundler/resolver.rb
|
106
|
+
- lib/bundler/ruby_dsl.rb
|
99
107
|
- lib/bundler/ruby_version.rb
|
100
108
|
- lib/bundler/rubygems_ext.rb
|
101
109
|
- lib/bundler/rubygems_integration.rb
|
@@ -208,6 +216,8 @@ files:
|
|
208
216
|
- spec/integration/inject.rb
|
209
217
|
- spec/lock/git_spec.rb
|
210
218
|
- spec/lock/lockfile_spec.rb
|
219
|
+
- spec/other/binstubs_spec.rb
|
220
|
+
- spec/other/bundle_ruby_spec.rb
|
211
221
|
- spec/other/check_spec.rb
|
212
222
|
- spec/other/clean_spec.rb
|
213
223
|
- spec/other/config_spec.rb
|
@@ -259,130 +269,58 @@ files:
|
|
259
269
|
- spec/update/gems_spec.rb
|
260
270
|
- spec/update/git_spec.rb
|
261
271
|
- spec/update/source_spec.rb
|
262
|
-
- lib/bundler/man/bundle
|
263
|
-
- lib/bundler/man/bundle-config
|
264
|
-
- lib/bundler/man/bundle-config.txt
|
265
272
|
- lib/bundler/man/bundle-exec
|
266
|
-
- lib/bundler/man/bundle
|
273
|
+
- lib/bundler/man/bundle
|
267
274
|
- lib/bundler/man/bundle-install
|
268
|
-
- lib/bundler/man/
|
269
|
-
- lib/bundler/man/bundle-package
|
270
|
-
- lib/bundler/man/bundle-package.txt
|
275
|
+
- lib/bundler/man/gemfile.5
|
271
276
|
- lib/bundler/man/bundle-platform
|
272
|
-
- lib/bundler/man/bundle-
|
277
|
+
- lib/bundler/man/bundle-package
|
273
278
|
- lib/bundler/man/bundle-update
|
279
|
+
- lib/bundler/man/bundle-exec.txt
|
280
|
+
- lib/bundler/man/gemfile.5.txt
|
274
281
|
- lib/bundler/man/bundle-update.txt
|
282
|
+
- lib/bundler/man/bundle-config
|
283
|
+
- lib/bundler/man/bundle-platform.txt
|
284
|
+
- lib/bundler/man/bundle-config.txt
|
275
285
|
- lib/bundler/man/bundle.txt
|
276
|
-
- lib/bundler/man/
|
277
|
-
- lib/bundler/man/
|
286
|
+
- lib/bundler/man/bundle-package.txt
|
287
|
+
- lib/bundler/man/bundle-install.txt
|
278
288
|
homepage: http://gembundler.com
|
279
|
-
licenses:
|
289
|
+
licenses:
|
280
290
|
- MIT
|
281
291
|
post_install_message:
|
282
292
|
rdoc_options: []
|
283
|
-
|
293
|
+
|
294
|
+
require_paths:
|
284
295
|
- lib
|
285
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
296
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
286
297
|
none: false
|
287
|
-
requirements:
|
288
|
-
- -
|
289
|
-
- !ruby/object:Gem::Version
|
298
|
+
requirements:
|
299
|
+
- - ">="
|
300
|
+
- !ruby/object:Gem::Version
|
301
|
+
hash: 57
|
302
|
+
segments:
|
303
|
+
- 1
|
304
|
+
- 8
|
305
|
+
- 7
|
290
306
|
version: 1.8.7
|
291
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
307
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
292
308
|
none: false
|
293
|
-
requirements:
|
294
|
-
- -
|
295
|
-
- !ruby/object:Gem::Version
|
309
|
+
requirements:
|
310
|
+
- - ">="
|
311
|
+
- !ruby/object:Gem::Version
|
312
|
+
hash: 23
|
313
|
+
segments:
|
314
|
+
- 1
|
315
|
+
- 3
|
316
|
+
- 6
|
296
317
|
version: 1.3.6
|
297
318
|
requirements: []
|
319
|
+
|
298
320
|
rubyforge_project: bundler
|
299
321
|
rubygems_version: 1.8.24
|
300
322
|
signing_key:
|
301
323
|
specification_version: 3
|
302
324
|
summary: The best way to manage your application's dependencies
|
303
|
-
test_files:
|
304
|
-
|
305
|
-
- spec/bundler/cli_rspec.rb
|
306
|
-
- spec/bundler/definition_spec.rb
|
307
|
-
- spec/bundler/dsl_spec.rb
|
308
|
-
- spec/bundler/gem_helper_spec.rb
|
309
|
-
- spec/bundler/psyched_yaml_spec.rb
|
310
|
-
- spec/bundler/source_spec.rb
|
311
|
-
- spec/cache/gems_spec.rb
|
312
|
-
- spec/cache/git_spec.rb
|
313
|
-
- spec/cache/path_spec.rb
|
314
|
-
- spec/cache/platform_spec.rb
|
315
|
-
- spec/install/deploy_spec.rb
|
316
|
-
- spec/install/gems/c_ext_spec.rb
|
317
|
-
- spec/install/gems/dependency_api_spec.rb
|
318
|
-
- spec/install/gems/env_spec.rb
|
319
|
-
- spec/install/gems/flex_spec.rb
|
320
|
-
- spec/install/gems/groups_spec.rb
|
321
|
-
- spec/install/gems/packed_spec.rb
|
322
|
-
- spec/install/gems/platform_spec.rb
|
323
|
-
- spec/install/gems/post_install_spec.rb
|
324
|
-
- spec/install/gems/resolving_spec.rb
|
325
|
-
- spec/install/gems/simple_case_spec.rb
|
326
|
-
- spec/install/gems/standalone_spec.rb
|
327
|
-
- spec/install/gems/sudo_spec.rb
|
328
|
-
- spec/install/gems/win32_spec.rb
|
329
|
-
- spec/install/gemspec_spec.rb
|
330
|
-
- spec/install/git_spec.rb
|
331
|
-
- spec/install/invalid_spec.rb
|
332
|
-
- spec/install/path_spec.rb
|
333
|
-
- spec/install/upgrade_spec.rb
|
334
|
-
- spec/integration/inject.rb
|
335
|
-
- spec/lock/git_spec.rb
|
336
|
-
- spec/lock/lockfile_spec.rb
|
337
|
-
- spec/other/check_spec.rb
|
338
|
-
- spec/other/clean_spec.rb
|
339
|
-
- spec/other/config_spec.rb
|
340
|
-
- spec/other/console_spec.rb
|
341
|
-
- spec/other/exec_spec.rb
|
342
|
-
- spec/other/ext_spec.rb
|
343
|
-
- spec/other/help_spec.rb
|
344
|
-
- spec/other/init_spec.rb
|
345
|
-
- spec/other/newgem_spec.rb
|
346
|
-
- spec/other/open_spec.rb
|
347
|
-
- spec/other/outdated_spec.rb
|
348
|
-
- spec/other/platform_spec.rb
|
349
|
-
- spec/other/show_spec.rb
|
350
|
-
- spec/quality_spec.rb
|
351
|
-
- spec/realworld/dependency_api_spec.rb
|
352
|
-
- spec/realworld/edgecases_spec.rb
|
353
|
-
- spec/resolver/basic_spec.rb
|
354
|
-
- spec/resolver/platform_spec.rb
|
355
|
-
- spec/runtime/executable_spec.rb
|
356
|
-
- spec/runtime/load_spec.rb
|
357
|
-
- spec/runtime/platform_spec.rb
|
358
|
-
- spec/runtime/require_spec.rb
|
359
|
-
- spec/runtime/setup_spec.rb
|
360
|
-
- spec/runtime/with_clean_env_spec.rb
|
361
|
-
- spec/spec_helper.rb
|
362
|
-
- spec/support/artifice/endopint_marshal_fail_basic_authentication.rb
|
363
|
-
- spec/support/artifice/endpoint.rb
|
364
|
-
- spec/support/artifice/endpoint_500.rb
|
365
|
-
- spec/support/artifice/endpoint_api_missing.rb
|
366
|
-
- spec/support/artifice/endpoint_basic_authentication.rb
|
367
|
-
- spec/support/artifice/endpoint_extra.rb
|
368
|
-
- spec/support/artifice/endpoint_extra_missing.rb
|
369
|
-
- spec/support/artifice/endpoint_fallback.rb
|
370
|
-
- spec/support/artifice/endpoint_marshal_fail.rb
|
371
|
-
- spec/support/artifice/endpoint_redirect.rb
|
372
|
-
- spec/support/artifice/endpoint_timeout.rb
|
373
|
-
- spec/support/builders.rb
|
374
|
-
- spec/support/fakeweb/rack-1.0.0.marshal
|
375
|
-
- spec/support/fakeweb/windows.rb
|
376
|
-
- spec/support/helpers.rb
|
377
|
-
- spec/support/indexes.rb
|
378
|
-
- spec/support/matchers.rb
|
379
|
-
- spec/support/path.rb
|
380
|
-
- spec/support/platforms.rb
|
381
|
-
- spec/support/ruby_ext.rb
|
382
|
-
- spec/support/rubygems_ext.rb
|
383
|
-
- spec/support/rubygems_hax/platform.rb
|
384
|
-
- spec/support/sudo.rb
|
385
|
-
- spec/update/gems_spec.rb
|
386
|
-
- spec/update/git_spec.rb
|
387
|
-
- spec/update/source_spec.rb
|
388
|
-
has_rdoc:
|
325
|
+
test_files: []
|
326
|
+
|