aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-01-23 22:30:17 +0100
committerJosé Valim <jose.valim@gmail.com>2010-01-23 22:30:17 +0100
commitb17e358e3df34c03019e357f693611618092e1d6 (patch)
treeb960982715bd307aab062dc3f1621edbf831a8e0 /railties/lib
parent788fce2550ed587d86d239d8fcd488f919d15b5d (diff)
downloadrails-b17e358e3df34c03019e357f693611618092e1d6.tar.gz
rails-b17e358e3df34c03019e357f693611618092e1d6.tar.bz2
rails-b17e358e3df34c03019e357f693611618092e1d6.zip
Move configuration to subfolders.
Diffstat (limited to 'railties/lib')
-rw-r--r--railties/lib/rails.rb8
-rw-r--r--railties/lib/rails/application.rb7
-rw-r--r--railties/lib/rails/application/configuration.rb85
-rw-r--r--railties/lib/rails/configuration.rb292
-rw-r--r--railties/lib/rails/engine.rb4
-rw-r--r--railties/lib/rails/engine/configurable.rb2
-rw-r--r--railties/lib/rails/engine/configuration.rb48
-rw-r--r--railties/lib/rails/paths.rb2
-rw-r--r--railties/lib/rails/plugin.rb4
-rw-r--r--railties/lib/rails/railtie.rb6
-rw-r--r--railties/lib/rails/railtie/configurable.rb2
-rw-r--r--railties/lib/rails/railtie/configuration.rb9
12 files changed, 243 insertions, 226 deletions
diff --git a/railties/lib/rails.rb b/railties/lib/rails.rb
index 667587cdce..623555e7c1 100644
--- a/railties/lib/rails.rb
+++ b/railties/lib/rails.rb
@@ -4,16 +4,8 @@ require 'active_support'
require 'active_support/core_ext/kernel/reporting'
require 'active_support/core_ext/logger'
-require 'rails/initializable'
-require 'rails/railtie'
-require 'rails/engine'
-require 'rails/plugin'
require 'rails/application'
-require 'rails/railties_path'
require 'rails/version'
-require 'rails/rack'
-require 'rails/paths'
-require 'rails/configuration'
require 'rails/deprecation'
require 'rails/subscriber'
require 'rails/ruby_version_check'
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb
index 676e395d39..504a241da8 100644
--- a/railties/lib/rails/application.rb
+++ b/railties/lib/rails/application.rb
@@ -1,8 +1,13 @@
require 'fileutils'
+require 'rails/railties_path'
+require 'rails/railtie'
+require 'rails/engine'
+require 'rails/plugin'
module Rails
class Application < Engine
autoload :Bootstrap, 'rails/application/bootstrap'
+ autoload :Configuration, 'rails/application/configuration'
autoload :Finisher, 'rails/application/finisher'
autoload :Railties, 'rails/application/railties'
autoload :RoutesReloader, 'rails/application/routes_reloader'
@@ -38,7 +43,7 @@ module Rails
end
def config
- @config ||= ::Rails::Configuration.new(self.class.find_root_with_flag("config.ru", Dir.pwd))
+ @config ||= Application::Configuration.new(self.class.find_root_with_flag("config.ru", Dir.pwd))
end
def routes
diff --git a/railties/lib/rails/application/configuration.rb b/railties/lib/rails/application/configuration.rb
new file mode 100644
index 0000000000..aaf18b5f51
--- /dev/null
+++ b/railties/lib/rails/application/configuration.rb
@@ -0,0 +1,85 @@
+require 'rails/engine/configuration'
+
+module Rails
+ class Application
+ class Configuration < ::Rails::Engine::Configuration
+ include ::Rails::Configuration::Deprecated
+
+ attr_accessor :cache_classes, :cache_store, :colorize_logging,
+ :consider_all_requests_local, :dependency_loading,
+ :filter_parameters, :log_level, :logger, :metals,
+ :plugins, :preload_frameworks, :reload_plugins,
+ :serve_static_assets, :time_zone, :whiny_nils
+
+ def initialize(*)
+ super
+ @filter_parameters = []
+ @dependency_loading = true
+ @serve_static_assets = true
+ end
+
+ def paths
+ @paths ||= begin
+ paths = super
+ paths.app.controllers << builtin_controller if builtin_controller
+ paths.config.database "config/database.yml"
+ paths.log "log/#{Rails.env}.log"
+ paths.tmp "tmp"
+ paths.tmp.cache "tmp/cache"
+ paths.vendor "vendor", :load_path => true
+ paths.vendor.plugins "vendor/plugins"
+
+ if File.exists?("#{root}/test/mocks/#{Rails.env}")
+ ActiveSupport::Deprecation.warn "\"RAILS_ROOT/test/mocks/#{Rails.env}\" won't be added " <<
+ "automatically to load paths anymore in future releases"
+ paths.mocks_path "test/mocks", :load_path => true, :glob => Rails.env
+ end
+
+ paths
+ end
+ end
+
+ # Enable threaded mode. Allows concurrent requests to controller actions and
+ # multiple database connections. Also disables automatic dependency loading
+ # after boot, and disables reloading code on every request, as these are
+ # fundamentally incompatible with thread safety.
+ def threadsafe!
+ self.preload_frameworks = true
+ self.cache_classes = true
+ self.dependency_loading = false
+ self.action_controller.allow_concurrency = true if respond_to?(:action_controller)
+ self
+ end
+
+ # Loads and returns the contents of the #database_configuration_file. The
+ # contents of the file are processed via ERB before being sent through
+ # YAML::load.
+ def database_configuration
+ require 'erb'
+ YAML::load(ERB.new(IO.read(paths.config.database.to_a.first)).result)
+ end
+
+ def cache_store
+ @cache_store ||= begin
+ if File.exist?("#{root}/tmp/cache/")
+ [ :file_store, "#{root}/tmp/cache/" ]
+ else
+ :memory_store
+ end
+ end
+ end
+
+ def builtin_controller
+ File.join(RAILTIES_PATH, "builtin", "rails_info") if Rails.env.development?
+ end
+
+ def log_level
+ @log_level ||= Rails.env.production? ? :info : :debug
+ end
+
+ def time_zone
+ @time_zone ||= "UTC"
+ end
+ end
+ end
+end \ No newline at end of file
diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb
index 900173abcc..e0bd12497f 100644
--- a/railties/lib/rails/configuration.rb
+++ b/railties/lib/rails/configuration.rb
@@ -1,9 +1,10 @@
require 'active_support/ordered_options'
+require 'rails/paths'
+require 'rails/rack'
module Rails
- module Shared
- # Those configuration values are shared between railtie, engines and so forth.
- module Configuration
+ module Configuration
+ module Shared
def middleware
@@default_middleware_stack ||= ActionDispatch::MiddlewareStack.new.tap do |middleware|
middleware.use('::ActionDispatch::Static', lambda { Rails.public_path }, :if => lambda { Rails.application.config.serve_static_assets })
@@ -35,7 +36,7 @@ module Rails
# config.generators.colorize_logging = false
#
def generators
- @@generators ||= GeneratorsConfiguration.new
+ @@generators ||= Rails::Configuration::Generators.new
if block_given?
yield @@generators
else
@@ -51,14 +52,34 @@ module Rails
after_initialize_blocks << blk if blk
end
- protected
+ def respond_to?(name)
+ super || name.to_s =~ config_key_regexp
+ end
+
+ private
+
+ def method_missing(name, *args, &blk)
+ if name.to_s =~ config_key_regexp
+ return $2 == '=' ? options[$1] = args.first : options[$1]
+ end
+ super
+ end
+
+ def config_key_regexp
+ bits = config_keys.map { |n| Regexp.escape(n.to_s) }.join('|')
+ /^(#{bits})(?:=)?$/
+ end
+
+ def config_keys
+ (Railtie.plugin_names + Engine.plugin_names).map { |n| n.to_s }.uniq
+ end
def options
@@options ||= Hash.new { |h,k| h[k] = ActiveSupport::OrderedOptions.new }
end
end
- class GeneratorsConfiguration #:nodoc:
+ class Generators #:nodoc:
attr_accessor :aliases, :options, :colorize_logging
def initialize
@@ -86,227 +107,74 @@ module Rails
end
end
end
- end
- # Holds Railtie basic configuration. It does not include configuration values
- # related with load paths and the application specifics.
- class Railtie::Configuration
- include Shared::Configuration
-
- def self.default
- @default ||= new
- end
-
- def respond_to?(name)
- super || name.to_s =~ config_key_regexp
- end
-
- private
-
- def method_missing(name, *args, &blk)
- if name.to_s =~ config_key_regexp
- return $2 == '=' ? options[$1] = args.first : options[$1]
+ module Deprecated
+ def frameworks(*args)
+ raise "config.frameworks in no longer supported. See the generated " \
+ "config/boot.rb for steps on how to limit the frameworks that " \
+ "will be loaded"
end
- super
- end
-
- def config_key_regexp
- bits = config_keys.map { |n| Regexp.escape(n.to_s) }.join('|')
- /^(#{bits})(?:=)?$/
- end
+ alias :frameworks= :frameworks
- # TODO Fix me
- def config_keys
- Railtie.plugin_names.map { |n| n.to_s }.uniq
- end
- end
-
- class Engine::Configuration < Railtie::Configuration
- attr_reader :root
- attr_writer :eager_load_paths, :load_once_paths, :load_paths
-
- def initialize(root=nil)
- @root = root
- end
-
- def paths
- @paths ||= begin
- paths = Rails::Application::Root.new(@root)
- paths.app "app", :eager_load => true, :glob => "*"
- paths.app.controllers "app/controllers", :eager_load => true
- paths.app.metals "app/metal", :eager_load => true
- paths.app.views "app/views"
- paths.lib "lib", :load_path => true
- paths.lib.tasks "lib/tasks", :glob => "**/*.rake"
- paths.config "config"
- paths.config.environment "config/environments", :glob => "#{Rails.env}.rb"
- paths.config.initializers "config/initializers", :glob => "**/*.rb"
- paths.config.locales "config/locales", :glob => "*.{rb,yml}"
- paths.config.routes "config/routes.rb"
- paths
+ def view_path=(value)
+ ActiveSupport::Deprecation.warn "config.view_path= is deprecated, " <<
+ "please do config.paths.app.views= instead", caller
+ paths.app.views = value
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 load_once_paths
- @eager_load_paths ||= paths.load_once
- end
-
- def load_paths
- @load_paths ||= paths.load_paths
- end
- end
-
- class Configuration < Engine::Configuration
- attr_accessor :cache_classes, :cache_store, :colorize_logging,
- :consider_all_requests_local, :dependency_loading,
- :filter_parameters, :log_level, :logger, :metals,
- :plugins, :preload_frameworks, :reload_plugins,
- :serve_static_assets, :time_zone, :whiny_nils
-
- def initialize(*)
- super
- @filter_parameters = []
- @dependency_loading = true
- @serve_static_assets = true
- end
- def paths
- @paths ||= begin
- paths = super
- paths.app.controllers << builtin_controller if builtin_controller
- paths.config.database "config/database.yml"
- paths.log "log/#{Rails.env}.log"
- paths.tmp "tmp"
- paths.tmp.cache "tmp/cache"
- paths.vendor "vendor", :load_path => true
- paths.vendor.plugins "vendor/plugins"
-
- if File.exists?("#{root}/test/mocks/#{Rails.env}")
- ActiveSupport::Deprecation.warn "\"RAILS_ROOT/test/mocks/#{Rails.env}\" won't be added " <<
- "automatically to load paths anymore in future releases"
- paths.mocks_path "test/mocks", :load_path => true, :glob => Rails.env
- end
-
- paths
+ def view_path
+ ActiveSupport::Deprecation.warn "config.view_path is deprecated, " <<
+ "please do config.paths.app.views instead", caller
+ paths.app.views.to_a.first
end
- end
-
- def frameworks(*args)
- raise "config.frameworks in no longer supported. See the generated " \
- "config/boot.rb for steps on how to limit the frameworks that " \
- "will be loaded"
- end
- alias frameworks= frameworks
-
- # Enable threaded mode. Allows concurrent requests to controller actions and
- # multiple database connections. Also disables automatic dependency loading
- # after boot, and disables reloading code on every request, as these are
- # fundamentally incompatible with thread safety.
- def threadsafe!
- self.preload_frameworks = true
- self.cache_classes = true
- self.dependency_loading = false
- self.action_controller.allow_concurrency = true if respond_to?(:action_controller)
- self
- end
-
- # Loads and returns the contents of the #database_configuration_file. The
- # contents of the file are processed via ERB before being sent through
- # YAML::load.
- def database_configuration
- require 'erb'
- YAML::load(ERB.new(IO.read(paths.config.database.to_a.first)).result)
- end
- def cache_store
- @cache_store ||= begin
- if File.exist?("#{root}/tmp/cache/")
- [ :file_store, "#{root}/tmp/cache/" ]
- else
- :memory_store
- end
+ def routes_configuration_file=(value)
+ ActiveSupport::Deprecation.warn "config.routes_configuration_file= is deprecated, " <<
+ "please do config.paths.config.routes= instead", caller
+ paths.config.routes = value
end
- end
-
- def builtin_controller
- File.join(RAILTIES_PATH, "builtin", "rails_info") if Rails.env.development?
- end
-
- def log_level
- @log_level ||= Rails.env.production? ? :info : :debug
- end
-
- def time_zone
- @time_zone ||= "UTC"
- end
- # Deprecated paths
- def view_path=(value)
- ActiveSupport::Deprecation.warn "config.view_path= is deprecated, " <<
- "please do config.paths.app.views= instead", caller
- paths.app.views = value
- end
-
- def view_path
- ActiveSupport::Deprecation.warn "config.view_path is deprecated, " <<
- "please do config.paths.app.views instead", caller
- paths.app.views.to_a.first
- end
-
- def routes_configuration_file=(value)
- ActiveSupport::Deprecation.warn "config.routes_configuration_file= is deprecated, " <<
- "please do config.paths.config.routes= instead", caller
- paths.config.routes = value
- end
-
- def routes_configuration_file
- ActiveSupport::Deprecation.warn "config.routes_configuration_file is deprecated, " <<
- "please do config.paths.config.routes instead", caller
- paths.config.routes.to_a.first
- end
+ def routes_configuration_file
+ ActiveSupport::Deprecation.warn "config.routes_configuration_file is deprecated, " <<
+ "please do config.paths.config.routes instead", caller
+ paths.config.routes.to_a.first
+ end
- def database_configuration_file=(value)
- ActiveSupport::Deprecation.warn "config.database_configuration_file= is deprecated, " <<
- "please do config.paths.config.database= instead", caller
- paths.config.database = value
- end
+ def database_configuration_file=(value)
+ ActiveSupport::Deprecation.warn "config.database_configuration_file= is deprecated, " <<
+ "please do config.paths.config.database= instead", caller
+ paths.config.database = value
+ end
- def database_configuration_file
- ActiveSupport::Deprecation.warn "config.database_configuration_file is deprecated, " <<
- "please do config.paths.config.database instead", caller
- paths.config.database.to_a.first
- end
+ def database_configuration_file
+ ActiveSupport::Deprecation.warn "config.database_configuration_file is deprecated, " <<
+ "please do config.paths.config.database instead", caller
+ paths.config.database.to_a.first
+ end
- def log_path=(value)
- ActiveSupport::Deprecation.warn "config.log_path= is deprecated, " <<
- "please do config.paths.log= instead", caller
- paths.config.log = value
- end
+ def log_path=(value)
+ ActiveSupport::Deprecation.warn "config.log_path= is deprecated, " <<
+ "please do config.paths.log= instead", caller
+ paths.config.log = value
+ end
- def log_path
- ActiveSupport::Deprecation.warn "config.log_path is deprecated, " <<
- "please do config.paths.log instead", caller
- paths.config.log.to_a.first
- end
+ def log_path
+ ActiveSupport::Deprecation.warn "config.log_path is deprecated, " <<
+ "please do config.paths.log instead", caller
+ paths.config.log.to_a.first
+ end
- def controller_paths=(value)
- ActiveSupport::Deprecation.warn "config.controller_paths= is deprecated, " <<
- "please do config.paths.app.controllers= instead", caller
- paths.app.controllers = value
- end
+ def controller_paths=(value)
+ ActiveSupport::Deprecation.warn "config.controller_paths= is deprecated, " <<
+ "please do config.paths.app.controllers= instead", caller
+ paths.app.controllers = value
+ end
- def controller_paths
- ActiveSupport::Deprecation.warn "config.controller_paths is deprecated, " <<
- "please do config.paths.app.controllers instead", caller
- paths.app.controllers.to_a.uniq
+ def controller_paths
+ ActiveSupport::Deprecation.warn "config.controller_paths is deprecated, " <<
+ "please do config.paths.app.controllers instead", caller
+ paths.app.controllers.to_a.uniq
+ end
end
end
end
diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb
index b373b931f9..d972050dc9 100644
--- a/railties/lib/rails/engine.rb
+++ b/railties/lib/rails/engine.rb
@@ -1,8 +1,10 @@
require 'active_support/core_ext/module/delegation'
+require 'rails/railtie'
module Rails
class Engine < Railtie
- autoload :Configurable, "rails/engine/configurable"
+ autoload :Configurable, "rails/engine/configurable"
+ autoload :Configuration, "rails/engine/configuration"
class << self
attr_accessor :called_from
diff --git a/railties/lib/rails/engine/configurable.rb b/railties/lib/rails/engine/configurable.rb
index fb420e8a12..d4b7ecc532 100644
--- a/railties/lib/rails/engine/configurable.rb
+++ b/railties/lib/rails/engine/configurable.rb
@@ -8,7 +8,7 @@ module Rails
module ClassMethods
def config
- @config ||= Configuration.new(find_root_with_flag("lib"))
+ @config ||= Engine::Configuration.new(find_root_with_flag("lib"))
end
def inherited(base)
diff --git a/railties/lib/rails/engine/configuration.rb b/railties/lib/rails/engine/configuration.rb
new file mode 100644
index 0000000000..e2fdf125d3
--- /dev/null
+++ b/railties/lib/rails/engine/configuration.rb
@@ -0,0 +1,48 @@
+require 'rails/railtie/configuration'
+
+module Rails
+ class Engine
+ class Configuration < ::Rails::Railtie::Configuration
+ attr_reader :root
+ attr_writer :eager_load_paths, :load_once_paths, :load_paths
+
+ def initialize(root=nil)
+ @root = root
+ end
+
+ def paths
+ @paths ||= begin
+ paths = Rails::Paths::Root.new(@root)
+ paths.app "app", :eager_load => true, :glob => "*"
+ paths.app.controllers "app/controllers", :eager_load => true
+ paths.app.metals "app/metal", :eager_load => true
+ paths.app.views "app/views"
+ paths.lib "lib", :load_path => true
+ paths.lib.tasks "lib/tasks", :glob => "**/*.rake"
+ paths.config "config"
+ paths.config.environment "config/environments", :glob => "#{Rails.env}.rb"
+ paths.config.initializers "config/initializers", :glob => "**/*.rb"
+ paths.config.locales "config/locales", :glob => "*.{rb,yml}"
+ paths.config.routes "config/routes.rb"
+ 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 load_once_paths
+ @eager_load_paths ||= paths.load_once
+ end
+
+ def load_paths
+ @load_paths ||= paths.load_paths
+ end
+ end
+ end
+end \ No newline at end of file
diff --git a/railties/lib/rails/paths.rb b/railties/lib/rails/paths.rb
index 069371aa9c..88c0c1c68c 100644
--- a/railties/lib/rails/paths.rb
+++ b/railties/lib/rails/paths.rb
@@ -1,7 +1,7 @@
require 'set'
module Rails
- class Application
+ module Paths
module PathParent
def method_missing(id, *args)
name = id.to_s
diff --git a/railties/lib/rails/plugin.rb b/railties/lib/rails/plugin.rb
index cb3fdc8501..394e634903 100644
--- a/railties/lib/rails/plugin.rb
+++ b/railties/lib/rails/plugin.rb
@@ -1,9 +1,13 @@
+require 'rails/engine'
+
module Rails
class Plugin < Engine
def self.inherited(base)
raise "You cannot inherit from Rails::Plugin"
end
+ # TODO Right now, if a plugin has an Engine or a Railtie inside it,
+ # the initializers for this plugin will be executed twice.
def self.all(list, paths)
plugins = []
paths.each do |path|
diff --git a/railties/lib/rails/railtie.rb b/railties/lib/rails/railtie.rb
index 208b017348..6424be5a55 100644
--- a/railties/lib/rails/railtie.rb
+++ b/railties/lib/rails/railtie.rb
@@ -1,6 +1,10 @@
+require 'rails/initializable'
+require 'rails/configuration'
+
module Rails
class Railtie
- autoload :Configurable, "rails/railtie/configurable"
+ autoload :Configurable, "rails/railtie/configurable"
+ autoload :Configuration, "rails/railtie/configuration"
include Initializable
diff --git a/railties/lib/rails/railtie/configurable.rb b/railties/lib/rails/railtie/configurable.rb
index 3850efa4a7..a2eb938c5a 100644
--- a/railties/lib/rails/railtie/configurable.rb
+++ b/railties/lib/rails/railtie/configurable.rb
@@ -7,7 +7,7 @@ module Rails
module ClassMethods
def config
- @config ||= Configuration.new
+ @config ||= Railtie::Configuration.new
end
def inherited(base)
diff --git a/railties/lib/rails/railtie/configuration.rb b/railties/lib/rails/railtie/configuration.rb
new file mode 100644
index 0000000000..bfb43f7041
--- /dev/null
+++ b/railties/lib/rails/railtie/configuration.rb
@@ -0,0 +1,9 @@
+require 'rails/configuration'
+
+module Rails
+ class Railtie
+ class Configuration
+ include Rails::Configuration::Shared
+ end
+ end
+end \ No newline at end of file