aboutsummaryrefslogtreecommitdiffstats
path: root/railties/guides/source
diff options
context:
space:
mode:
Diffstat (limited to 'railties/guides/source')
-rw-r--r--railties/guides/source/initialization.textile37
1 files changed, 36 insertions, 1 deletions
diff --git a/railties/guides/source/initialization.textile b/railties/guides/source/initialization.textile
index 7013c3c324..d8d119f608 100644
--- a/railties/guides/source/initialization.textile
+++ b/railties/guides/source/initialization.textile
@@ -2229,9 +2229,44 @@ The second +require+ method here:
load(gemfile).require(*groups)
</ruby>
-Is defined on _bundler/runtime.rb_
+Is defined on _bundler/runtime.rb_:
+<ruby>
+ def require(*groups)
+ groups.map! { |g| g.to_sym }
+ groups = [:default] if groups.empty?
+ autorequires = autorequires_for_groups(*groups)
+
+ groups.each do |group|
+ (autorequires[group] || [[]]).each do |path, explicit|
+ if explicit
+ Kernel.require(path)
+ else
+ begin
+ Kernel.require(path)
+ rescue LoadError
+ end
+ end
+ end
+ end
+ end
+</ruby>
+
+This method does TODO: Describe what magic this undertakes.
+The first method to be called here is +autorequires_for_groups+:
+
+<ruby>
+ def autorequires_for_groups(*groups)
+ groups.map! { |g| g.to_sym }
+ autorequires = Hash.new { |h,k| h[k] = [] }
+
+ ordered_deps = []
+ specs_for(*groups).each do |g|
+ dep = @definition.dependencies.find{|d| d.name == g.name }
+ ordered_deps << dep if dep && !ordered_deps.include?(dep)
+ end
+</ruby>
h3. Firing it up!