Browse files

Expansion on require method from runtime.rb

  • Loading branch information...
1 parent 395dbd5 commit 11f838dc2e6a32a9e55e77f2c1114dbbfa6af6b2 @radar radar committed Apr 9, 2010
Showing with 36 additions and 1 deletion.
  1. +36 −1 railties/guides/source/initialization.textile
View
37 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!

0 comments on commit 11f838d

Please sign in to comment.