Sha256: 2b14d2e383a1dc21cc10b8f2777b9274bdefdf0adbdd3758418a9a18324d1633
Contents?: true
Size: 1.1 KB
Versions: 2
Compression:
Stored size: 1.1 KB
Contents
require 'action_dispatch' module Rails class Application class MetalLoader attr_reader :paths, :metals def initialize @paths, @metals = [], [] end def build_middleware(list=nil) load_metals!(list) self end def new(app) ActionDispatch::Cascade.new(@metals, app) end def name ActionDispatch::Cascade.name end alias :to_s :name protected def load_metals!(list) metals = [] list = Array(list || :all).map(&:to_sym) paths.each do |path| matcher = /\A#{Regexp.escape(path)}\/(.*)\.rb\Z/ Dir.glob("#{path}/**/*.rb").sort.each do |metal_path| metal = metal_path.sub(matcher, '\1').to_sym next unless list.include?(metal) || list.include?(:all) require_dependency metal.to_s metals << metal end end metals = metals.sort_by do |m| [list.index(m) || list.index(:all), m.to_s] end @metals = metals.map { |m| m.to_s.camelize.constantize } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
railties-3.0.0.beta3 | lib/rails/application/metal_loader.rb |
railties-3.0.0.beta2 | lib/rails/application/metal_loader.rb |