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/gem_installer.rb,
lib/bundler/shared_helpers.rb,
lib/bundler/lockfile_parser.rb,
lib/bundler/lazy_specification.rb,
lib/bundler/remote_specification.rb,
lib/bundler/rubygems_integration.rb
Defined Under Namespace
Modules: GemHelpers, MatchPlatform, SharedHelpers, Source
Classes: BundlerError, CLI, Definition, DepProxy, Dependency, Deployment, DeprecatedError, Dsl, DslError, Environment, GemHelper, GemInstaller, GemNotFound, GemfileError, GemfileNotFound, GemspecError, GitError, Graph, GraphNode, Index, InstallError, Installer, InvalidOption, InvalidSpecSet, LazySpecification, LockfileParser, PathError, ProductionError, RemoteSpecification, Resolver, RubygemsIntegration, 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.21"
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.bundle_path ⇒ Object
91
92
93
|
# File 'lib/bundler.rb', line 91
def bundle_path
@bundle_path ||= Pathname.new(settings.path).expand_path(root)
end
|
Returns the value of attribute rubygems.
347
348
349
|
# File 'lib/bundler/rubygems_integration.rb', line 347
def rubygems
@rubygems
end
|
87
88
89
|
# File 'lib/bundler.rb', line 87
def ui
@ui ||= UI.new
end
|
Class Method Details
.app_cache ⇒ Object
176
177
178
|
# File 'lib/bundler.rb', line 176
def app_cache
root.join("vendor/cache")
end
|
.app_config_path ⇒ Object
170
171
172
173
174
|
# File 'lib/bundler.rb', line 170
def app_config_path
ENV['BUNDLE_APP_CONFIG'] ?
Pathname.new(ENV['BUNDLE_APP_CONFIG']).expand_path(root) :
root.join('.bundle')
end
|
95
96
97
98
99
100
101
102
|
# File 'lib/bundler.rb', line 95
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
|
162
163
164
|
# File 'lib/bundler.rb', line 162
def cache
bundle_path.join("cache/bundler")
end
|
80
81
82
83
84
85
|
# File 'lib/bundler.rb', line 80
def configure
@configured ||= begin
configure_gem_home_and_path
true
end
end
|
.definition(unlock = nil) ⇒ Object
133
134
135
136
137
138
139
140
|
# File 'lib/bundler.rb', line 133
def definition(unlock = nil)
@definition = nil if unlock
@definition ||= begin
configure
upgrade_lockfile
Definition.build(default_gemfile, default_lockfile, unlock)
end
end
|
150
151
152
|
# File 'lib/bundler.rb', line 150
def home
bundle_path.join("bundler")
end
|
.install_path ⇒ Object
154
155
156
|
# File 'lib/bundler.rb', line 154
def install_path
home.join("gems")
end
|
125
126
127
|
# File 'lib/bundler.rb', line 125
def load
@load ||= Runtime.new(root, definition)
end
|
.load_gemspec(file) ⇒ Object
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
|
# File 'lib/bundler.rb', line 231
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
215
216
217
218
219
220
221
|
# File 'lib/bundler.rb', line 215
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
227
228
229
|
# File 'lib/bundler.rb', line 227
def read_file(file)
File.open(file, "rb") { |f| f.read }
end
|
.require(*groups) ⇒ Object
121
122
123
|
# File 'lib/bundler.rb', line 121
def require(*groups)
setup(*groups).require(*groups)
end
|
.requires_sudo? ⇒ Boolean
204
205
206
207
208
209
210
211
212
213
|
# File 'lib/bundler.rb', line 204
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
|
166
167
168
|
# File 'lib/bundler.rb', line 166
def root
default_gemfile.dirname.expand_path
end
|
.ruby_scope ⇒ Object
142
143
144
|
# File 'lib/bundler.rb', line 142
def ruby_scope
"#{Bundler.rubygems.ruby_engine}/#{Gem::ConfigMap[:ruby_version]}"
end
|
184
185
186
|
# File 'lib/bundler.rb', line 184
def settings
@settings ||= Settings.new(app_config_path)
end
|
.setup(*groups) ⇒ Object
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
# File 'lib/bundler.rb', line 104
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(*groups) : load
end
end
|
.specs_path ⇒ Object
158
159
160
|
# File 'lib/bundler.rb', line 158
def specs_path
bundle_path.join("specifications")
end
|
.sudo(str) ⇒ Object
223
224
225
|
# File 'lib/bundler.rb', line 223
def sudo(str)
`sudo -p 'Enter your password to install the bundled RubyGems to your system: ' #{str}`
end
|
180
181
182
|
# File 'lib/bundler.rb', line 180
def tmp
user_bundle_path.join("tmp", Process.pid.to_s)
end
|
.user_bundle_path ⇒ Object
146
147
148
|
# File 'lib/bundler.rb', line 146
def user_bundle_path
Pathname.new(Bundler.rubygems.user_home).join(".bundler")
end
|
.with_clean_env ⇒ Object
188
189
190
191
192
193
194
|
# File 'lib/bundler.rb', line 188
def with_clean_env
bundled_env = ENV.to_hash
ENV.replace(ORIGINAL_ENV)
yield
ensure
ENV.replace(bundled_env.to_hash)
end
|