Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
5c42157c
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5c42157c
编写于
10月 08, 2009
作者:
C
Carl Lerche
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Even more initializers ported over
上级
ed77e84c
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
141 addition
and
142 deletion
+141
-142
railties/lib/rails/application.rb
railties/lib/rails/application.rb
+133
-1
railties/lib/rails/initializer.rb
railties/lib/rails/initializer.rb
+1
-134
railties/test/application/initializer_test.rb
railties/test/application/initializer_test.rb
+7
-0
railties/test/initializer_test.rb
railties/test/initializer_test.rb
+0
-7
未找到文件。
railties/lib/rails/application.rb
浏览文件 @
5c42157c
...
...
@@ -116,7 +116,7 @@ def new
@environment_loaded
=
true
constants
=
self
.
class
.
constants
eval
(
IO
.
read
(
config
uration
.
environment_path
),
binding
,
configuration
.
environment_path
)
eval
(
IO
.
read
(
config
.
environment_path
),
binding
,
config
.
environment_path
)
(
self
.
class
.
constants
-
constants
).
each
do
|
const
|
Object
.
const_set
(
const
,
self
.
class
.
const_get
(
const
))
...
...
@@ -145,5 +145,137 @@ def new
end
end
end
# This initialization routine does nothing unless <tt>:active_record</tt>
# is one of the frameworks to load (Configuration#frameworks). If it is,
# this sets the database configuration from Configuration#database_configuration
# and then establishes the connection.
initializer
:initialize_database
do
if
config
.
frameworks
.
include?
(
:active_record
)
ActiveRecord
::
Base
.
configurations
=
config
.
database_configuration
ActiveRecord
::
Base
.
establish_connection
end
end
# Include middleware to serve up static assets
initializer
:initialize_static_server
do
if
config
.
frameworks
.
include?
(
:action_controller
)
&&
config
.
serve_static_assets
config
.
middleware
.
use
(
ActionDispatch
::
Static
,
Rails
.
public_path
)
end
end
initializer
:initialize_middleware_stack
do
if
config
.
frameworks
.
include?
(
:action_controller
)
config
.
middleware
.
use
(
::
Rack
::
Lock
)
unless
ActionController
::
Base
.
allow_concurrency
config
.
middleware
.
use
(
ActionDispatch
::
ShowExceptions
,
ActionController
::
Base
.
consider_all_requests_local
)
config
.
middleware
.
use
(
ActionDispatch
::
Callbacks
,
ActionController
::
Dispatcher
.
prepare_each_request
)
config
.
middleware
.
use
(
lambda
{
ActionController
::
Base
.
session_store
},
lambda
{
ActionController
::
Base
.
session_options
})
config
.
middleware
.
use
(
ActionDispatch
::
ParamsParser
)
config
.
middleware
.
use
(
::
Rack
::
MethodOverride
)
config
.
middleware
.
use
(
::
Rack
::
Head
)
config
.
middleware
.
use
(
ActionDispatch
::
StringCoercion
)
end
end
initializer
:initialize_cache
do
unless
defined?
(
RAILS_CACHE
)
silence_warnings
{
Object
.
const_set
"RAILS_CACHE"
,
ActiveSupport
::
Cache
.
lookup_store
(
config
.
cache_store
)
}
if
RAILS_CACHE
.
respond_to?
(
:middleware
)
# Insert middleware to setup and teardown local cache for each request
config
.
middleware
.
insert_after
(
:"Rack::Lock"
,
RAILS_CACHE
.
middleware
)
end
end
end
initializer
:initialize_framework_caches
do
if
config
.
frameworks
.
include?
(
:action_controller
)
ActionController
::
Base
.
cache_store
||=
RAILS_CACHE
end
end
initializer
:initialize_logger
do
# if the environment has explicitly defined a logger, use it
next
if
Rails
.
logger
unless
logger
=
config
.
logger
begin
logger
=
ActiveSupport
::
BufferedLogger
.
new
(
config
.
log_path
)
logger
.
level
=
ActiveSupport
::
BufferedLogger
.
const_get
(
config
.
log_level
.
to_s
.
upcase
)
if
RAILS_ENV
==
"production"
logger
.
auto_flushing
=
false
end
rescue
StandardError
=>
e
logger
=
ActiveSupport
::
BufferedLogger
.
new
(
STDERR
)
logger
.
level
=
ActiveSupport
::
BufferedLogger
::
WARN
logger
.
warn
(
"Rails Error: Unable to access log file. Please ensure that
#{
config
.
log_path
}
exists and is chmod 0666. "
+
"The log level has been raised to WARN and the output directed to STDERR until the problem is fixed."
)
end
end
# TODO: Why are we silencing warning here?
silence_warnings
{
Object
.
const_set
"RAILS_DEFAULT_LOGGER"
,
logger
}
end
# Sets the logger for Active Record, Action Controller, and Action Mailer
# (but only for those frameworks that are to be loaded). If the framework's
# logger is already set, it is not changed, otherwise it is set to use
# RAILS_DEFAULT_LOGGER.
initializer
:initialize_framework_logging
do
for
framework
in
([
:active_record
,
:action_controller
,
:action_mailer
]
&
config
.
frameworks
)
framework
.
to_s
.
camelize
.
constantize
.
const_get
(
"Base"
).
logger
||=
Rails
.
logger
end
ActiveSupport
::
Dependencies
.
logger
||=
Rails
.
logger
Rails
.
cache
.
logger
||=
Rails
.
logger
end
# Sets the dependency loading mechanism based on the value of
# Configuration#cache_classes.
initializer
:initialize_dependency_mechanism
do
# TODO: Remove files from the $" and always use require
ActiveSupport
::
Dependencies
.
mechanism
=
config
.
cache_classes
?
:require
:
:load
end
# Loads support for "whiny nil" (noisy warnings when methods are invoked
# on +nil+ values) if Configuration#whiny_nils is true.
initializer
:initialize_whiny_nils
do
require
(
'active_support/whiny_nil'
)
if
config
.
whiny_nils
end
# Sets the default value for Time.zone, and turns on ActiveRecord::Base#time_zone_aware_attributes.
# If assigned value cannot be matched to a TimeZone, an exception will be raised.
initializer
:initialize_time_zone
do
if
config
.
time_zone
zone_default
=
Time
.
__send__
(
:get_zone
,
config
.
time_zone
)
unless
zone_default
raise
\
'Value assigned to config.time_zone not recognized.'
+
'Run "rake -D time" for a list of tasks for finding appropriate time zone names.'
end
Time
.
zone_default
=
zone_default
if
config
.
frameworks
.
include?
(
:active_record
)
ActiveRecord
::
Base
.
time_zone_aware_attributes
=
true
ActiveRecord
::
Base
.
default_timezone
=
:utc
end
end
end
# Set the i18n configuration from config.i18n but special-case for the load_path which should be
# appended to what's already set instead of overwritten.
initializer
:initialize_i18n
do
config
.
i18n
.
each
do
|
setting
,
value
|
if
setting
==
:load_path
I18n
.
load_path
+=
value
else
I18n
.
send
(
"
#{
setting
}
="
,
value
)
end
end
end
end
end
railties/lib/rails/initializer.rb
浏览文件 @
5c42157c
...
...
@@ -107,148 +107,15 @@ def self.run(initializer = nil, config = nil)
default
.
run
(
initializer
)
else
Rails
.
application
=
Class
.
new
(
Application
)
yield
Rails
.
application
.
config
if
block_given?
# Trigger the initializer
Rails
.
application
.
new
yield
Rails
.
application
.
config
if
block_given?
default
.
config
=
Rails
.
application
.
config
default
.
run
end
end
end
# This initialization routine does nothing unless <tt>:active_record</tt>
# is one of the frameworks to load (Configuration#frameworks). If it is,
# this sets the database configuration from Configuration#database_configuration
# and then establishes the connection.
Initializer
.
default
.
add
:initialize_database
do
if
configuration
.
frameworks
.
include?
(
:active_record
)
ActiveRecord
::
Base
.
configurations
=
configuration
.
database_configuration
ActiveRecord
::
Base
.
establish_connection
end
end
# Include middleware to serve up static assets
Initializer
.
default
.
add
:initialize_static_server
do
if
configuration
.
frameworks
.
include?
(
:action_controller
)
&&
configuration
.
serve_static_assets
configuration
.
middleware
.
use
(
ActionDispatch
::
Static
,
Rails
.
public_path
)
end
end
Initializer
.
default
.
add
:initialize_middleware_stack
do
if
configuration
.
frameworks
.
include?
(
:action_controller
)
configuration
.
middleware
.
use
(
::
Rack
::
Lock
)
unless
ActionController
::
Base
.
allow_concurrency
configuration
.
middleware
.
use
(
ActionDispatch
::
ShowExceptions
,
ActionController
::
Base
.
consider_all_requests_local
)
configuration
.
middleware
.
use
(
ActionDispatch
::
Callbacks
,
ActionController
::
Dispatcher
.
prepare_each_request
)
configuration
.
middleware
.
use
(
lambda
{
ActionController
::
Base
.
session_store
},
lambda
{
ActionController
::
Base
.
session_options
})
configuration
.
middleware
.
use
(
ActionDispatch
::
ParamsParser
)
configuration
.
middleware
.
use
(
::
Rack
::
MethodOverride
)
configuration
.
middleware
.
use
(
::
Rack
::
Head
)
configuration
.
middleware
.
use
(
ActionDispatch
::
StringCoercion
)
end
end
Initializer
.
default
.
add
:initialize_cache
do
unless
defined?
(
RAILS_CACHE
)
silence_warnings
{
Object
.
const_set
"RAILS_CACHE"
,
ActiveSupport
::
Cache
.
lookup_store
(
configuration
.
cache_store
)
}
if
RAILS_CACHE
.
respond_to?
(
:middleware
)
# Insert middleware to setup and teardown local cache for each request
configuration
.
middleware
.
insert_after
(
:"Rack::Lock"
,
RAILS_CACHE
.
middleware
)
end
end
end
Initializer
.
default
.
add
:initialize_framework_caches
do
if
configuration
.
frameworks
.
include?
(
:action_controller
)
ActionController
::
Base
.
cache_store
||=
RAILS_CACHE
end
end
Initializer
.
default
.
add
:initialize_logger
do
# if the environment has explicitly defined a logger, use it
next
if
Rails
.
logger
unless
logger
=
configuration
.
logger
begin
logger
=
ActiveSupport
::
BufferedLogger
.
new
(
configuration
.
log_path
)
logger
.
level
=
ActiveSupport
::
BufferedLogger
.
const_get
(
configuration
.
log_level
.
to_s
.
upcase
)
if
RAILS_ENV
==
"production"
logger
.
auto_flushing
=
false
end
rescue
StandardError
=>
e
logger
=
ActiveSupport
::
BufferedLogger
.
new
(
STDERR
)
logger
.
level
=
ActiveSupport
::
BufferedLogger
::
WARN
logger
.
warn
(
"Rails Error: Unable to access log file. Please ensure that
#{
configuration
.
log_path
}
exists and is chmod 0666. "
+
"The log level has been raised to WARN and the output directed to STDERR until the problem is fixed."
)
end
end
# TODO: Why are we silencing warning here?
silence_warnings
{
Object
.
const_set
"RAILS_DEFAULT_LOGGER"
,
logger
}
end
# Sets the logger for Active Record, Action Controller, and Action Mailer
# (but only for those frameworks that are to be loaded). If the framework's
# logger is already set, it is not changed, otherwise it is set to use
# RAILS_DEFAULT_LOGGER.
Initializer
.
default
.
add
:initialize_framework_logging
do
for
framework
in
([
:active_record
,
:action_controller
,
:action_mailer
]
&
configuration
.
frameworks
)
framework
.
to_s
.
camelize
.
constantize
.
const_get
(
"Base"
).
logger
||=
Rails
.
logger
end
ActiveSupport
::
Dependencies
.
logger
||=
Rails
.
logger
Rails
.
cache
.
logger
||=
Rails
.
logger
end
# Sets the dependency loading mechanism based on the value of
# Configuration#cache_classes.
Initializer
.
default
.
add
:initialize_dependency_mechanism
do
# TODO: Remove files from the $" and always use require
ActiveSupport
::
Dependencies
.
mechanism
=
configuration
.
cache_classes
?
:require
:
:load
end
# Loads support for "whiny nil" (noisy warnings when methods are invoked
# on +nil+ values) if Configuration#whiny_nils is true.
Initializer
.
default
.
add
:initialize_whiny_nils
do
require
(
'active_support/whiny_nil'
)
if
configuration
.
whiny_nils
end
# Sets the default value for Time.zone, and turns on ActiveRecord::Base#time_zone_aware_attributes.
# If assigned value cannot be matched to a TimeZone, an exception will be raised.
Initializer
.
default
.
add
:initialize_time_zone
do
if
configuration
.
time_zone
zone_default
=
Time
.
__send__
(
:get_zone
,
configuration
.
time_zone
)
unless
zone_default
raise
\
'Value assigned to config.time_zone not recognized.'
+
'Run "rake -D time" for a list of tasks for finding appropriate time zone names.'
end
Time
.
zone_default
=
zone_default
if
configuration
.
frameworks
.
include?
(
:active_record
)
ActiveRecord
::
Base
.
time_zone_aware_attributes
=
true
ActiveRecord
::
Base
.
default_timezone
=
:utc
end
end
end
# Set the i18n configuration from config.i18n but special-case for the load_path which should be
# appended to what's already set instead of overwritten.
Initializer
.
default
.
add
:initialize_i18n
do
configuration
.
i18n
.
each
do
|
setting
,
value
|
if
setting
==
:load_path
I18n
.
load_path
+=
value
else
I18n
.
send
(
"
#{
setting
}
="
,
value
)
end
end
end
# Initializes framework-specific settings for each of the loaded frameworks
# (Configuration#frameworks). The available settings map to the accessors
# on each of the corresponding Base classes.
...
...
railties/test/application/initializer_test.rb
浏览文件 @
5c42157c
...
...
@@ -55,6 +55,13 @@ module Zoo::ReptileHouse ; end
assert
Zoo
end
test
"setting another default locale"
do
Rails
::
Initializer
.
run
do
|
config
|
config
.
i18n
.
default_locale
=
:de
end
assert_equal
:de
,
I18n
.
default_locale
end
test
"load environment with global"
do
app_file
"config/environments/development.rb"
,
"$initialize_test_set_from_env = 'success'"
assert_nil
$initialize_test_set_from_env
...
...
railties/test/initializer_test.rb
浏览文件 @
5c42157c
...
...
@@ -286,13 +286,6 @@ def test_config_defaults_should_be_added_with_config_settings
assert_equal
[
"my/test/locale.yml"
,
"my/other/locale.yml"
],
config
.
i18n
.
load_path
end
def
test_setting_another_default_locale
config
=
Rails
::
Configuration
.
new
config
.
i18n
.
default_locale
=
:de
Rails
::
Initializer
.
run
(
:initialize_i18n
,
config
)
assert_equal
:de
,
I18n
.
default_locale
end
end
class
InitializerDatabaseMiddlewareTest
<
Test
::
Unit
::
TestCase
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录