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.9"
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.bundle_path ⇒ Object
81
82
83
84
|
# File 'lib/bundler.rb', line 81
def bundle_path
@bundle_path ||= Pathname.new(settings.path).expand_path(root)
end
|
.ui ⇒ Object
77
78
79
|
# File 'lib/bundler.rb', line 77
def ui
@ui ||= UI.new
end
|
Class Method Details
.app_cache ⇒ Object
168
169
170
|
# File 'lib/bundler.rb', line 168
def app_cache
root.join("vendor/cache")
end
|
.app_config_path ⇒ Object
162
163
164
165
166
|
# File 'lib/bundler.rb', line 162
def app_config_path
ENV['BUNDLE_APP_CONFIG'] ?
Pathname.new(ENV['BUNDLE_APP_CONFIG']).expand_path(root) :
root.join('.bundle')
end
|
.bin_path ⇒ Object
86
87
88
89
90
91
92
93
|
# File 'lib/bundler.rb', line 86
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
154
155
156
|
# File 'lib/bundler.rb', line 154
def cache
bundle_path.join("cache/bundler")
end
|
70
71
72
73
74
75
|
# File 'lib/bundler.rb', line 70
def configure
@configured ||= begin
configure_gem_home_and_path
true
end
end
|
.default_gemfile ⇒ Object
.default_lockfile ⇒ Object
.definition(unlock = nil) ⇒ Object
125
126
127
128
129
130
131
132
|
# File 'lib/bundler.rb', line 125
def definition(unlock = nil)
@definition = nil if unlock
@definition ||= begin
configure
upgrade_lockfile
Definition.build(default_gemfile, default_lockfile, unlock)
end
end
|
.home ⇒ Object
142
143
144
|
# File 'lib/bundler.rb', line 142
def home
bundle_path.join("bundler")
end
|
.install_path ⇒ Object
146
147
148
|
# File 'lib/bundler.rb', line 146
def install_path
home.join("gems")
end
|
.load ⇒ Object
117
118
119
|
# File 'lib/bundler.rb', line 117
def load
@load ||= Runtime.new(root, definition)
end
|
.load_gemspec(file) ⇒ Object
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
|
# File 'lib/bundler.rb', line 223
def load_gemspec(file)
path = Pathname.new(file)
Dir.chdir(path.dirname.to_s) do
begin
Gem::Specification.from_yaml(path.basename.to_s)
rescue ArgumentError, SyntaxError, Gem::EndOfYAMLException, Gem::Exception
begin
eval(File.read(path.basename.to_s), 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
207
208
209
210
211
212
213
|
# File 'lib/bundler.rb', line 207
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
219
220
221
|
# File 'lib/bundler.rb', line 219
def read_file(file)
File.open(file, "rb") { |f| f.read }
end
|
.require(*groups) ⇒ Object
113
114
115
|
# File 'lib/bundler.rb', line 113
def require(*groups)
setup(*groups).require(*groups)
end
|
.requires_sudo? ⇒ Boolean
196
197
198
199
200
201
202
203
204
205
|
# File 'lib/bundler.rb', line 196
def requires_sudo?
return @requires_sudo if @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
158
159
160
|
# File 'lib/bundler.rb', line 158
def root
default_gemfile.dirname.expand_path
end
|
.ruby_scope ⇒ Object
134
135
136
|
# File 'lib/bundler.rb', line 134
def ruby_scope
"#{Gem.ruby_engine}/#{Gem::ConfigMap[:ruby_version]}"
end
|
.settings ⇒ Object
176
177
178
|
# File 'lib/bundler.rb', line 176
def settings
@settings ||= Settings.new(app_config_path)
end
|
.setup(*groups) ⇒ Object
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# File 'lib/bundler.rb', line 95
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
150
151
152
|
# File 'lib/bundler.rb', line 150
def specs_path
bundle_path.join("specifications")
end
|
.sudo(str) ⇒ Object
215
216
217
|
# File 'lib/bundler.rb', line 215
def sudo(str)
`sudo -p 'Enter your password to install the bundled RubyGems to your system: ' #{str}`
end
|
.tmp ⇒ Object
172
173
174
|
# File 'lib/bundler.rb', line 172
def tmp
user_bundle_path.join("tmp", Process.pid.to_s)
end
|
.user_bundle_path ⇒ Object
138
139
140
|
# File 'lib/bundler.rb', line 138
def user_bundle_path
Pathname.new(Gem.user_home).join(".bundler")
end
|
.with_clean_env ⇒ Object
180
181
182
183
184
185
186
|
# File 'lib/bundler.rb', line 180
def with_clean_env
bundled_env = ENV.to_hash
ENV.replace(ORIGINAL_ENV)
yield
ensure
ENV.replace(bundled_env.to_hash)
end
|