1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/railties/lib/rails/engine/configuration.rb
Piotr Sarnacki a5311ee86b Make deep copy of application generators on engine initialization.
Otherwise nested hashes will be same objects for both application and engine,
which will result in overwriting each others values on changes.
2010-11-02 17:14:52 +01:00

88 lines
2.7 KiB
Ruby

require 'rails/railtie/configuration'
module Rails
class Engine
class Configuration < ::Rails::Railtie::Configuration
attr_reader :root
attr_writer :middleware, :eager_load_paths, :autoload_once_paths, :autoload_paths
attr_accessor :plugins, :asset_path
def initialize(root=nil)
super()
@root = root
@generators = app_generators.dup
end
# Returns the middleware stack for the engine.
def middleware
@middleware ||= Rails::Configuration::MiddlewareStackProxy.new
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 #:nodoc
@generators ||= Rails::Configuration::Generators.new
yield(@generators) if block_given?
@generators
end
def paths
@paths ||= begin
paths = Rails::Paths::Root.new(@root)
paths.add "app", :eager_load => true, :glob => "*"
paths.add "app/controllers", :eager_load => true
paths.add "app/helpers", :eager_load => true
paths.add "app/models", :eager_load => true
paths.add "app/mailers", :eager_load => true
paths.add "app/views"
paths.add "lib", :load_path => true
paths.add "lib/tasks", :glob => "**/*.rake"
paths.add "config"
paths.add "config/environments", :glob => "#{Rails.env}.rb"
paths.add "config/initializers", :glob => "**/*.rb"
paths.add "config/locales", :glob => "*.{rb,yml}"
paths.add "config/routes", :with => "config/routes.rb"
paths.add "db"
paths.add "db/migrate"
paths.add "db/seeds", :with => "db/seeds.rb"
paths.add "public"
paths.add "public/javascripts"
paths.add "public/stylesheets"
paths.add "vendor", :load_path => true
paths.add "vendor/plugins"
paths
end
end
def root=(value)
@root = paths.path = Pathname.new(value).expand_path
end
def eager_load_paths
@eager_load_paths ||= paths.eager_load
end
def autoload_once_paths
@autoload_once_paths ||= paths.autoload_once
end
def autoload_paths
@autoload_paths ||= paths.autoload_paths
end
def compiled_asset_path
asset_path % "" if asset_path
end
end
end
end