require 'rails/configuration' module Rails class Railtie class Configuration def initialize @@options ||= {} @@static_asset_paths = ActiveSupport::OrderedHash.new end # This allows you to modify the application's middlewares from Engines. # # All operations you run on the app_middleware will be replayed on the # application once it is defined and the default_middlewares are # created def app_middleware @@app_middleware ||= Rails::Configuration::MiddlewareStackProxy.new end # This allows you to modify application's generators from Railties. # # Values set on app_generators will become defaults for applicaiton, unless # application overwrites them. def app_generators @@app_generators ||= Rails::Configuration::Generators.new if block_given? yield @@app_generators else @@app_generators end end # Holds generators configuration: # # config.generators do |g| # g.orm :datamapper, :migration => true # g.template_engine :haml # g.test_framework :rspec # end # # If you want to disable color in console, do: # # config.generators.colorize_logging = false # def generators @generators ||= Rails::Configuration::Generators.new if block_given? yield @generators else @generators end end def before_configuration(&block) ActiveSupport.on_load(:before_configuration, :yield => true, &block) end def before_eager_load(&block) ActiveSupport.on_load(:before_eager_load, :yield => true, &block) end def before_initialize(&block) ActiveSupport.on_load(:before_initialize, :yield => true, &block) end def after_initialize(&block) ActiveSupport.on_load(:after_initialize, :yield => true, &block) end def to_prepare_blocks @@to_prepare_blocks ||= [] end def to_prepare(&blk) to_prepare_blocks << blk if blk end def respond_to?(name) super || @@options.key?(name.to_sym) end # static_asset_paths is a Hash containing asset_paths # with associated public folders, like: # { "/" => "/app/public", "/my_engine" => "app/engines/my_engine/public" } def static_asset_paths @@static_asset_paths end private def method_missing(name, *args, &blk) if name.to_s =~ /=$/ @@options[$`.to_sym] = args.first elsif @@options.key?(name) @@options[name] else super end end end end end