diff options
author | Ryan Bigg <radarlistener@gmail.com> | 2010-04-09 17:52:34 +1000 |
---|---|---|
committer | Ryan Bigg <radarlistener@gmail.com> | 2010-04-09 17:52:34 +1000 |
commit | 11f838dc2e6a32a9e55e77f2c1114dbbfa6af6b2 (patch) | |
tree | a4df701a455cdbc56457857e8d1f2da7e1b05638 /railties/guides/source/initialization.textile | |
parent | 395dbd53ed87aa8c7e06ffeca9c80af6d50a9f18 (diff) | |
download | rails-11f838dc2e6a32a9e55e77f2c1114dbbfa6af6b2.tar.gz rails-11f838dc2e6a32a9e55e77f2c1114dbbfa6af6b2.tar.bz2 rails-11f838dc2e6a32a9e55e77f2c1114dbbfa6af6b2.zip |
Expansion on require method from runtime.rb
Diffstat (limited to 'railties/guides/source/initialization.textile')
-rw-r--r-- | railties/guides/source/initialization.textile | 37 |
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! |