aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/rack/metal.rb
diff options
context:
space:
mode:
authorPratik Naik <pratiknaik@gmail.com>2009-03-10 00:33:32 +0000
committerPratik Naik <pratiknaik@gmail.com>2009-03-10 00:33:32 +0000
commit1ab84247ca4b80afbd82afe7539b3449636344c4 (patch)
tree9ca5e3bee3a07b68c9d900ff129b69bc740405c2 /railties/lib/rails/rack/metal.rb
parentb6fb79c531a0079274f7b459302e6290c9183f28 (diff)
parent4458edc882b229ea44602da20a6440a6f233f1c8 (diff)
downloadrails-1ab84247ca4b80afbd82afe7539b3449636344c4.tar.gz
rails-1ab84247ca4b80afbd82afe7539b3449636344c4.tar.bz2
rails-1ab84247ca4b80afbd82afe7539b3449636344c4.zip
Merge commit 'mainstream/master'
Conflicts: railties/guides/files/stylesheets/main.css railties/guides/rails_guides/generator.rb railties/guides/source/index.erb.textile
Diffstat (limited to 'railties/lib/rails/rack/metal.rb')
-rw-r--r--railties/lib/rails/rack/metal.rb27
1 files changed, 21 insertions, 6 deletions
diff --git a/railties/lib/rails/rack/metal.rb b/railties/lib/rails/rack/metal.rb
index b185227234..78b8a01449 100644
--- a/railties/lib/rails/rack/metal.rb
+++ b/railties/lib/rails/rack/metal.rb
@@ -6,15 +6,30 @@ module Rails
NotFoundResponse = [404, {}, []].freeze
NotFound = lambda { NotFoundResponse }
+ cattr_accessor :metal_paths
+ self.metal_paths = ["#{Rails.root}/app/metal"]
+ cattr_accessor :requested_metals
+
def self.metals
- base = "#{Rails.root}/app/metal"
- matcher = /\A#{Regexp.escape(base)}\/(.*)\.rb\Z/
+ matcher = /#{Regexp.escape('/app/metal/')}(.*)\.rb\Z/
+ metal_glob = metal_paths.map{ |base| "#{base}/**/*.rb" }
+ all_metals = {}
- Dir["#{base}/**/*.rb"].sort.map do |file|
- file.sub!(matcher, '\1')
- require file
- file.classify.constantize
+ metal_glob.each do |glob|
+ Dir[glob].sort.map do |file|
+ file = file.match(matcher)[1]
+ all_metals[file.classify] = file
+ end
end
+
+ load_list = requested_metals || all_metals.keys
+
+ load_list.map do |requested_metal|
+ if metal = all_metals[requested_metal]
+ require metal
+ requested_metal.constantize
+ end
+ end.compact
end
def initialize(app)