Module: Bundler
- Defined in:
- lib/bundler.rb,
lib/bundler/ui.rb,
lib/bundler/cli.rb,
lib/bundler/dsl.rb,
lib/bundler/graph.rb,
lib/bundler/index.rb,
lib/bundler/source.rb,
lib/bundler/runtime.rb,
lib/bundler/version.rb,
lib/bundler/resolver.rb,
lib/bundler/settings.rb,
lib/bundler/spec_set.rb,
lib/bundler/installer.rb,
lib/bundler/definition.rb,
lib/bundler/dependency.rb,
lib/bundler/deployment.rb,
lib/bundler/gem_helper.rb,
lib/bundler/environment.rb,
lib/bundler/rubygems_ext.rb,
lib/bundler/shared_helpers.rb,
lib/bundler/lockfile_parser.rb,
lib/bundler/lazy_specification.rb,
lib/bundler/remote_specification.rb
Defined Under Namespace
Modules: GemHelpers, MatchPlatform, SharedHelpers, Source
Classes: BundlerError, CLI, Definition, DepProxy, Dependency, Deployment, DeprecatedError, Dsl, DslError, Environment, GemHelper, GemNotFound, GemfileError, GemfileNotFound, GemspecError, GitError, Graph, GraphNode, Index, Installer, InvalidOption, InvalidSpecSet, LazySpecification, LockfileParser, PathError, ProductionError, RemoteSpecification, Resolver, Runtime, Settings, SpecSet, UI, VersionConflict
Constant Summary
collapse
- ORIGINAL_ENV =
ENV.to_hash
- WINDOWS =
RbConfig::CONFIG["host_os"] =~ %r!(msdos|mswin|djgpp|mingw)!
- FREEBSD =
RbConfig::CONFIG["host_os"] =~ /bsd/
- NULL =
WINDOWS ? "NUL" : "/dev/null"
- VERSION =
We’re doing this because we might write tests that deal with other versions of bundler and we are unsure how to handle this better.
"1.0.12"
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.bundle_path ⇒ Object
87
88
89
90
|
# File 'lib/bundler.rb', line 87
def bundle_path
@bundle_path ||= Pathname.new(settings.path).expand_path(root)
end
|
.ui ⇒ Object
83
84
85
|
# File 'lib/bundler.rb', line 83
def ui
@ui ||= UI.new
end
|
Class Method Details
.app_cache ⇒ Object
174
175
176
|
# File 'lib/bundler.rb', line 174
def app_cache
root.join("vendor/cache")
end
|
.app_config_path ⇒ Object
168
169
170
171
172
|
# File 'lib/bundler.rb', line 168
def app_config_path
ENV['BUNDLE_APP_CONFIG'] ?
Pathname.new(ENV['BUNDLE_APP_CONFIG']).expand_path(root) :
root.join('.bundle')
end
|
.bin_path ⇒ Object
92
93
94
95
96
97
98
99
|
# File 'lib/bundler.rb', line 92
def bin_path
@bin_path ||= begin
path = settings[:bin] || "bin"
path = Pathname.new(path).expand_path(root)
FileUtils.mkdir_p(path)
Pathname.new(path).expand_path
end
end
|
.cache ⇒ Object
160
161
162
|
# File 'lib/bundler.rb', line 160
def cache
bundle_path.join("cache/bundler")
end
|
76
77
78
79
80
81
|
# File 'lib/bundler.rb', line 76
def configure
@configured ||= begin
configure_gem_home_and_path
true
end
end
|
.default_gemfile ⇒ Object
.default_lockfile ⇒ Object
.definition(unlock = nil) ⇒ Object
131
132
133
134
135
136
137
138
|
# File 'lib/bundler.rb', line 131
def definition(unlock = nil)
@definition = nil if unlock
@definition ||= begin
configure
upgrade_lockfile
Definition.build(default_gemfile, default_lockfile, unlock)
end
end
|
.home ⇒ Object
148
149
150
|
# File 'lib/bundler.rb', line 148
def home
bundle_path.join("bundler")
end
|
.install_path ⇒ Object
152
153
154
|
# File 'lib/bundler.rb', line 152
def install_path
home.join("gems")
end
|
.load ⇒ Object
123
124
125
|
# File 'lib/bundler.rb', line 123
def load
@load ||= Runtime.new(root, definition)
end
|
.load_gemspec(file) ⇒ Object
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
|
# File 'lib/bundler.rb', line 229
def load_gemspec(file)
path = Pathname.new(file)
Dir.chdir(path.dirname.to_s) do
contents = File.read(path.basename.to_s)
begin
Gem::Specification.from_yaml(contents)
rescue ArgumentError, SyntaxError, Gem::EndOfYAMLException, Gem::Exception
begin
eval(contents, TOPLEVEL_BINDING, path.expand_path.to_s)
rescue LoadError => e
original_line = e.backtrace.find { |line| line.include?(path.to_s) }
msg = "There was a LoadError while evaluating #{path.basename}:\n #{e.message}"
msg << " from\n #{original_line}" if original_line
msg << "\n"
if RUBY_VERSION >= "1.9.0"
msg << "\nDoes it try to require a relative path? That doesn't work in Ruby 1.9."
end
raise GemspecError, msg
end
end
end
end
|
.mkdir_p(path) ⇒ Object
213
214
215
216
217
218
219
|
# File 'lib/bundler.rb', line 213
def mkdir_p(path)
if requires_sudo?
sudo "mkdir -p '#{path}'" unless File.exist?(path)
else
FileUtils.mkdir_p(path)
end
end
|
.read_file(file) ⇒ Object
225
226
227
|
# File 'lib/bundler.rb', line 225
def read_file(file)
File.open(file, "rb") { |f| f.read }
end
|
.require(*groups) ⇒ Object
119
120
121
|
# File 'lib/bundler.rb', line 119
def require(*groups)
setup(*groups).require(*groups)
end
|
.requires_sudo? ⇒ Boolean
202
203
204
205
206
207
208
209
210
211
|
# File 'lib/bundler.rb', line 202
def requires_sudo?
return @requires_sudo if defined?(@checked_for_sudo) && @checked_for_sudo
path = bundle_path
path = path.parent until path.exist?
sudo_present = !(`which sudo` rescue '').empty?
@checked_for_sudo = true
@requires_sudo = settings.allow_sudo? && !File.writable?(path) && sudo_present
end
|
.root ⇒ Object
164
165
166
|
# File 'lib/bundler.rb', line 164
def root
default_gemfile.dirname.expand_path
end
|
.ruby_scope ⇒ Object
140
141
142
|
# File 'lib/bundler.rb', line 140
def ruby_scope
"#{Gem.ruby_engine}/#{Gem::ConfigMap[:ruby_version]}"
end
|
.settings ⇒ Object
182
183
184
|
# File 'lib/bundler.rb', line 182
def settings
@settings ||= Settings.new(app_config_path)
end
|
.setup(*groups) ⇒ Object
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
# File 'lib/bundler.rb', line 101
def setup(*groups)
return @setup if defined?(@setup)
if groups.empty?
@setup = load.setup
else
@completed_groups ||= []
unloaded = groups - @completed_groups
@completed_groups = groups
unloaded.any? ? load.setup(*unloaded) : load
end
end
|
.specs_path ⇒ Object
156
157
158
|
# File 'lib/bundler.rb', line 156
def specs_path
bundle_path.join("specifications")
end
|
.sudo(str) ⇒ Object
221
222
223
|
# File 'lib/bundler.rb', line 221
def sudo(str)
`sudo -p 'Enter your password to install the bundled RubyGems to your system: ' #{str}`
end
|
.tmp ⇒ Object
178
179
180
|
# File 'lib/bundler.rb', line 178
def tmp
user_bundle_path.join("tmp", Process.pid.to_s)
end
|
.user_bundle_path ⇒ Object
144
145
146
|
# File 'lib/bundler.rb', line 144
def user_bundle_path
Pathname.new(Gem.user_home).join(".bundler")
end
|
.with_clean_env ⇒ Object
186
187
188
189
190
191
192
|
# File 'lib/bundler.rb', line 186
def with_clean_env
bundled_env = ENV.to_hash
ENV.replace(ORIGINAL_ENV)
yield
ensure
ENV.replace(bundled_env.to_hash)
end
|