2010-04-29 14:34:41 -04:00
|
|
|
require 'active_support/deprecation'
|
2010-05-17 11:41:54 -04:00
|
|
|
require 'active_support/core_ext/string/encoding'
|
2010-01-23 16:30:17 -05:00
|
|
|
require 'rails/engine/configuration'
|
|
|
|
|
|
|
|
module Rails
|
|
|
|
class Application
|
|
|
|
class Configuration < ::Rails::Engine::Configuration
|
|
|
|
include ::Rails::Configuration::Deprecated
|
|
|
|
|
2010-03-02 16:05:25 -05:00
|
|
|
attr_accessor :allow_concurrency, :cache_classes, :cache_store,
|
2010-04-06 20:24:29 -04:00
|
|
|
:encoding, :consider_all_requests_local, :dependency_loading,
|
2010-06-22 17:51:28 -04:00
|
|
|
:filter_parameters, :log_level, :logger,
|
2010-06-23 10:10:26 -04:00
|
|
|
:preload_frameworks, :reload_plugins,
|
2010-07-05 11:40:35 -04:00
|
|
|
:secret_token, :session_options,
|
2010-05-17 19:43:06 -04:00
|
|
|
:time_zone, :whiny_nils
|
2010-01-23 16:30:17 -05:00
|
|
|
|
|
|
|
def initialize(*)
|
|
|
|
super
|
2010-08-15 19:29:27 -04:00
|
|
|
self.encoding = "utf-8"
|
2010-04-06 20:24:29 -04:00
|
|
|
@allow_concurrency = false
|
|
|
|
@consider_all_requests_local = false
|
|
|
|
@filter_parameters = []
|
|
|
|
@dependency_loading = true
|
2010-01-23 16:30:17 -05:00
|
|
|
@serve_static_assets = true
|
2010-03-26 13:47:55 -04:00
|
|
|
@session_store = :cookie_store
|
|
|
|
@session_options = {}
|
2010-04-06 20:24:29 -04:00
|
|
|
@time_zone = "UTC"
|
2010-05-29 16:29:14 -04:00
|
|
|
@middleware = app_middleware
|
2010-04-06 20:24:29 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def encoding=(value)
|
|
|
|
@encoding = value
|
2010-05-17 11:41:54 -04:00
|
|
|
if "ruby".encoding_aware?
|
2010-04-06 20:24:29 -04:00
|
|
|
Encoding.default_external = value
|
2010-05-17 11:41:54 -04:00
|
|
|
Encoding.default_internal = value
|
|
|
|
else
|
|
|
|
$KCODE = value
|
|
|
|
if $KCODE == "NONE"
|
|
|
|
raise "The value you specified for config.encoding is " \
|
|
|
|
"invalid. The possible values are UTF8, SJIS, or EUC"
|
|
|
|
end
|
2010-04-06 20:24:29 -04:00
|
|
|
end
|
2010-01-23 16:30:17 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def paths
|
|
|
|
@paths ||= begin
|
|
|
|
paths = super
|
|
|
|
paths.app.controllers << builtin_controller if builtin_controller
|
2010-04-29 02:39:44 -04:00
|
|
|
paths.config.database "config/database.yml"
|
|
|
|
paths.config.environment "config/environment.rb"
|
|
|
|
paths.config.environments "config/environments", :glob => "#{Rails.env}.rb"
|
|
|
|
paths.lib.templates "lib/templates"
|
|
|
|
paths.log "log/#{Rails.env}.log"
|
|
|
|
paths.tmp "tmp"
|
|
|
|
paths.tmp.cache "tmp/cache"
|
2010-01-23 16:30:17 -05:00
|
|
|
|
|
|
|
if File.exists?("#{root}/test/mocks/#{Rails.env}")
|
2010-04-12 12:50:55 -04:00
|
|
|
ActiveSupport::Deprecation.warn "\"Rails.root/test/mocks/#{Rails.env}\" won't be added " <<
|
2010-01-23 16:30:17 -05:00
|
|
|
"automatically to load paths anymore in future releases"
|
2010-06-27 18:57:47 -04:00
|
|
|
paths.mocks_path "test/mocks", :autoload => true, :glob => Rails.env
|
2010-01-23 16:30:17 -05:00
|
|
|
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
|
2010-02-01 05:40:27 -05:00
|
|
|
self.allow_concurrency = true
|
2010-01-23 16:30:17 -05:00
|
|
|
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
|
2010-03-20 13:34:21 -04:00
|
|
|
File.expand_path('../info_routes', __FILE__) if Rails.env.development?
|
2010-01-23 16:30:17 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def log_level
|
|
|
|
@log_level ||= Rails.env.production? ? :info : :debug
|
|
|
|
end
|
2010-03-02 16:05:25 -05:00
|
|
|
|
|
|
|
def colorize_logging
|
|
|
|
@colorize_logging
|
|
|
|
end
|
|
|
|
|
|
|
|
def colorize_logging=(val)
|
|
|
|
@colorize_logging = val
|
2010-06-24 07:23:43 -04:00
|
|
|
ActiveSupport::LogSubscriber.colorize_logging = val
|
2010-03-02 16:05:25 -05:00
|
|
|
self.generators.colorize_logging = val
|
|
|
|
end
|
2010-03-26 13:47:55 -04:00
|
|
|
|
|
|
|
def session_store(*args)
|
|
|
|
if args.empty?
|
|
|
|
case @session_store
|
|
|
|
when :disabled
|
|
|
|
nil
|
|
|
|
when :active_record_store
|
|
|
|
ActiveRecord::SessionStore
|
|
|
|
when Symbol
|
|
|
|
ActionDispatch::Session.const_get(@session_store.to_s.camelize)
|
|
|
|
else
|
|
|
|
@session_store
|
|
|
|
end
|
|
|
|
else
|
|
|
|
@session_store = args.shift
|
|
|
|
@session_options = args.shift || {}
|
|
|
|
end
|
|
|
|
end
|
2010-01-23 16:30:17 -05:00
|
|
|
end
|
|
|
|
end
|
2010-03-20 13:34:21 -04:00
|
|
|
end
|