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.5"
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
166
167
168
|
# File 'lib/bundler.rb', line 166
def app_cache
root.join("vendor/cache")
end
|
.app_config_path ⇒ Object
160
161
162
163
164
|
# File 'lib/bundler.rb', line 160
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
152
153
154
|
# File 'lib/bundler.rb', line 152
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
123
124
125
126
127
128
129
130
|
# File 'lib/bundler.rb', line 123
def definition(unlock = nil)
@definition = nil if unlock
@definition ||= begin
configure
upgrade_lockfile
Definition.build(default_gemfile, default_lockfile, unlock)
end
end
|
.home ⇒ Object
140
141
142
|
# File 'lib/bundler.rb', line 140
def home
bundle_path.join("bundler")
end
|
.install_path ⇒ Object
144
145
146
|
# File 'lib/bundler.rb', line 144
def install_path
home.join("gems")
end
|
.load ⇒ Object
115
116
117
|
# File 'lib/bundler.rb', line 115
def load
@load ||= Runtime.new(root, definition)
end
|
.load_gemspec(file) ⇒ Object
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
|
# File 'lib/bundler.rb', line 221
def load_gemspec(file)
path = Pathname.new(file)
Dir.chdir(path.dirname) do
begin
Gem::Specification.from_yaml(path.basename)
rescue ArgumentError, SyntaxError, Gem::EndOfYAMLException, Gem::Exception
begin
eval(File.read(path.basename), 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
205
206
207
208
209
210
211
|
# File 'lib/bundler.rb', line 205
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
217
218
219
|
# File 'lib/bundler.rb', line 217
def read_file(file)
File.open(file, "rb") { |f| f.read }
end
|
.require(*groups) ⇒ Object
111
112
113
|
# File 'lib/bundler.rb', line 111
def require(*groups)
setup(*groups).require(*groups)
end
|
.requires_sudo? ⇒ Boolean
194
195
196
197
198
199
200
201
202
203
|
# File 'lib/bundler.rb', line 194
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
156
157
158
|
# File 'lib/bundler.rb', line 156
def root
default_gemfile.dirname.expand_path
end
|
.ruby_scope ⇒ Object
132
133
134
|
# File 'lib/bundler.rb', line 132
def ruby_scope
"#{Gem.ruby_engine}/#{Gem::ConfigMap[:ruby_version]}"
end
|
.settings ⇒ Object
174
175
176
|
# File 'lib/bundler.rb', line 174
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
|
# File 'lib/bundler.rb', line 95
def setup(*groups)
return @setup if defined?(@setup) && @setup
if groups.empty?
@setup = load.setup
else
unloaded = groups - (@completed_groups || [])
@completed_groups = groups | (@completed_groups || [])
unloaded.any? ? load.setup(*unloaded) : load
end
end
|
.specs_path ⇒ Object
148
149
150
|
# File 'lib/bundler.rb', line 148
def specs_path
bundle_path.join("specifications")
end
|
.sudo(str) ⇒ Object
213
214
215
|
# File 'lib/bundler.rb', line 213
def sudo(str)
`sudo -p 'Enter your password to install the bundled RubyGems to your system: ' #{str}`
end
|
.tmp ⇒ Object
170
171
172
|
# File 'lib/bundler.rb', line 170
def tmp
user_bundle_path.join("tmp", Process.pid.to_s)
end
|
.user_bundle_path ⇒ Object
136
137
138
|
# File 'lib/bundler.rb', line 136
def user_bundle_path
Pathname.new(Gem.user_home).join(".bundler")
end
|
.with_clean_env ⇒ Object
178
179
180
181
182
183
184
|
# File 'lib/bundler.rb', line 178
def with_clean_env
bundled_env = ENV.to_hash
ENV.replace(ORIGINAL_ENV)
yield
ensure
ENV.replace(bundled_env.to_hash)
end
|