Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
3f2b7d60
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,体验更适合开发者的 AI 搜索 >>
未验证
提交
3f2b7d60
编写于
1月 06, 2017
作者:
R
Rafael Mendonça França
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove deprecated callbacks from ActionDispatch middlewares
上级
4f4906b5
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
70 addition
and
163 deletion
+70
-163
actionpack/CHANGELOG.md
actionpack/CHANGELOG.md
+8
-0
actionpack/lib/action_dispatch/middleware/callbacks.rb
actionpack/lib/action_dispatch/middleware/callbacks.rb
+0
-12
actionpack/lib/action_dispatch/middleware/reloader.rb
actionpack/lib/action_dispatch/middleware/reloader.rb
+3
-47
actionpack/lib/action_dispatch/railtie.rb
actionpack/lib/action_dispatch/railtie.rb
+0
-2
actionpack/test/dispatch/callbacks_test.rb
actionpack/test/dispatch/callbacks_test.rb
+0
-18
actionpack/test/dispatch/reloader_test.rb
actionpack/test/dispatch/reloader_test.rb
+46
-83
activesupport/test/reloader_test.rb
activesupport/test/reloader_test.rb
+13
-1
未找到文件。
actionpack/CHANGELOG.md
浏览文件 @
3f2b7d60
*
Remove deprecated
`.to_prepare`
,
`.to_cleanup`
,
`.prepare!`
and
`.cleanup!`
from
`ActionDispatch::Reloader`
.
*Rafael Mendonça França*
*
Remove deprecated
`ActionDispatch::Callbacks.to_prepare`
and
`ActionDispatch::Callbacks.to_cleanup`
.
*Rafael Mendonça França*
*
Remove deprecated
`ActionController::Metal.call`
.
*Rafael Mendonça França*
...
...
actionpack/lib/action_dispatch/middleware/callbacks.rb
浏览文件 @
3f2b7d60
module
ActionDispatch
# Provides callbacks to be executed before and after dispatching the request.
class
Callbacks
...
...
@@ -7,17 +6,6 @@ class Callbacks
define_callbacks
:call
class
<<
self
def
to_prepare
(
*
args
,
&
block
)
ActiveSupport
::
Reloader
.
to_prepare
(
*
args
,
&
block
)
end
def
to_cleanup
(
*
args
,
&
block
)
ActiveSupport
::
Reloader
.
to_complete
(
*
args
,
&
block
)
end
deprecate
to_prepare:
"use ActiveSupport::Reloader.to_prepare instead"
,
to_cleanup:
"use ActiveSupport::Reloader.to_complete instead"
def
before
(
*
args
,
&
block
)
set_callback
(
:call
,
:before
,
*
args
,
&
block
)
end
...
...
actionpack/lib/action_dispatch/middleware/reloader.rb
浏览文件 @
3f2b7d60
module
ActionDispatch
# ActionDispatch::Reloader provides prepare and cleanup callbacks,
# intended to assist with code reloading during development.
#
# Prepare callbacks are run before each request, and cleanup callbacks
# after each request. In this respect they are analogs of ActionDispatch::Callback's
# before and after callbacks. However, cleanup callbacks are not called until the
# request is fully complete -- that is, after #close has been called on
# the response body. This is important for streaming responses such as the
# following:
#
# self.response_body = -> (response, output) do
# # code here which refers to application models
# end
#
# Cleanup callbacks will not be called until after the response_body lambda
# is evaluated, ensuring that it can refer to application models and other
# classes before they are unloaded.
# ActionDispatch::Reloader wraps the request with callbacks provided by ActiveSupport::Reloader
# callbacks, intended to assist with code reloading during development.
#
# By default, ActionDispatch::Reloader is included in the middleware stack
# only in the development environment; specifically, when +config.cache_classes+
# is false. Callbacks may be registered even when it is not included in the
# middleware stack, but are executed only when <tt>ActionDispatch::Reloader.prepare!</tt>
# or <tt>ActionDispatch::Reloader.cleanup!</tt> are called manually.
#
# is false.
class
Reloader
<
Executor
def
self
.
to_prepare
(
*
args
,
&
block
)
ActiveSupport
::
Reloader
.
to_prepare
(
*
args
,
&
block
)
end
def
self
.
to_cleanup
(
*
args
,
&
block
)
ActiveSupport
::
Reloader
.
to_complete
(
*
args
,
&
block
)
end
def
self
.
prepare!
default_reloader
.
prepare!
end
def
self
.
cleanup!
default_reloader
.
reload!
end
class
<<
self
attr_accessor
:default_reloader
# :nodoc:
deprecate
to_prepare:
"use ActiveSupport::Reloader.to_prepare instead"
,
to_cleanup:
"use ActiveSupport::Reloader.to_complete instead"
,
prepare!:
"use Rails.application.reloader.prepare! instead"
,
cleanup!:
"use Rails.application.reloader.reload! instead of cleanup + prepare"
end
self
.
default_reloader
=
ActiveSupport
::
Reloader
end
end
actionpack/lib/action_dispatch/railtie.rb
浏览文件 @
3f2b7d60
...
...
@@ -39,8 +39,6 @@ class Railtie < Rails::Railtie # :nodoc:
config
.
action_dispatch
.
always_write_cookie
=
Rails
.
env
.
development?
if
config
.
action_dispatch
.
always_write_cookie
.
nil?
ActionDispatch
::
Cookies
::
CookieJar
.
always_write_cookie
=
config
.
action_dispatch
.
always_write_cookie
ActionDispatch
::
Reloader
.
default_reloader
=
app
.
reloader
ActionDispatch
.
test_app
=
app
end
end
...
...
actionpack/test/dispatch/callbacks_test.rb
浏览文件 @
3f2b7d60
...
...
@@ -35,24 +35,6 @@ def test_before_and_after_callbacks
assert_equal
6
,
Foo
.
b
end
def
test_to_prepare_and_cleanup_delegation
prepared
=
cleaned
=
false
assert_deprecated
do
ActionDispatch
::
Callbacks
.
to_prepare
{
prepared
=
true
}
ActionDispatch
::
Callbacks
.
to_prepare
{
cleaned
=
true
}
end
assert_deprecated
do
ActionDispatch
::
Reloader
.
prepare!
end
assert
prepared
assert_deprecated
do
ActionDispatch
::
Reloader
.
cleanup!
end
assert
cleaned
end
private
def
dispatch
(
&
block
)
...
...
actionpack/test/dispatch/reloader_test.rb
浏览文件 @
3f2b7d60
require
"abstract_unit"
class
ReloaderTest
<
ActiveSupport
::
TestCase
Reloader
=
ActionDispatch
::
Reloader
teardown
do
ActiveSupport
::
Reloader
.
reset_callbacks
:prepare
ActiveSupport
::
Reloader
.
reset_callbacks
:complete
end
def
test_prepare_callbacks
a
=
b
=
c
=
nil
assert_deprecated
do
Reloader
.
to_prepare
{
|*
args
|
a
=
b
=
c
=
1
}
Reloader
.
to_prepare
{
|*
args
|
b
=
c
=
2
}
Reloader
.
to_prepare
{
|*
args
|
c
=
3
}
end
# Ensure to_prepare callbacks are not run when defined
assert_nil
a
||
b
||
c
# Run callbacks
call_and_return_body
assert_equal
1
,
a
assert_equal
2
,
b
assert_equal
3
,
c
end
class
MyBody
<
Array
def
initialize
(
&
block
)
@on_close
=
block
...
...
@@ -45,6 +24,23 @@ def close
end
end
def
test_prepare_callbacks
a
=
b
=
c
=
nil
reloader
.
to_prepare
{
|*
args
|
a
=
b
=
c
=
1
}
reloader
.
to_prepare
{
|*
args
|
b
=
c
=
2
}
reloader
.
to_prepare
{
|*
args
|
c
=
3
}
# Ensure to_prepare callbacks are not run when defined
assert_nil
a
||
b
||
c
# Run callbacks
call_and_return_body
assert_equal
1
,
a
assert_equal
2
,
b
assert_equal
3
,
c
end
def
test_returned_body_object_always_responds_to_close
body
=
call_and_return_body
assert_respond_to
body
,
:close
...
...
@@ -62,15 +58,12 @@ def test_returned_body_object_always_responds_to_close_even_if_called_twice
def
test_condition_specifies_when_to_reload
i
,
j
=
0
,
0
,
0
,
0
assert_deprecated
do
Reloader
.
to_prepare
{
|*
args
|
i
+=
1
}
Reloader
.
to_cleanup
{
|*
args
|
j
+=
1
}
end
x
=
Class
.
new
(
ActiveSupport
::
Reloader
)
x
.
check
=
lambda
{
i
<
3
}
reloader
=
reloader
(
lambda
{
i
<
3
})
reloader
.
to_prepare
{
|*
args
|
i
+=
1
}
reloader
.
to_complete
{
|*
args
|
j
+=
1
}
app
=
Reloader
.
new
(
lambda
{
|
env
|
[
200
,
{},
[]]
},
x
)
app
=
middleware
(
lambda
{
|
env
|
[
200
,
{},
[]]
},
reloader
)
5
.
times
do
resp
=
app
.
call
({})
resp
[
2
].
close
...
...
@@ -115,24 +108,20 @@ def test_returned_body_object_responds_to_all_methods_supported_by_underlying_ob
assert_respond_to
body
,
:bar
end
def
test_cleanup_callbacks_are_called_when_body_is_closed
cleaned
=
false
assert_deprecated
do
Reloader
.
to_cleanup
{
cleaned
=
true
}
end
def
test_complete_callbacks_are_called_when_body_is_closed
completed
=
false
reloader
.
to_complete
{
completed
=
true
}
body
=
call_and_return_body
assert
!
c
lean
ed
assert
!
c
omplet
ed
body
.
close
assert
c
lean
ed
assert
c
omplet
ed
end
def
test_prepare_callbacks_arent_called_when_body_is_closed
prepared
=
false
assert_deprecated
do
Reloader
.
to_prepare
{
prepared
=
true
}
end
reloader
.
to_prepare
{
prepared
=
true
}
body
=
call_and_return_body
prepared
=
false
...
...
@@ -141,45 +130,9 @@ def test_prepare_callbacks_arent_called_when_body_is_closed
assert
!
prepared
end
def
test_manual_reloading
prepared
=
cleaned
=
false
assert_deprecated
do
Reloader
.
to_prepare
{
prepared
=
true
}
Reloader
.
to_cleanup
{
cleaned
=
true
}
end
assert_deprecated
do
Reloader
.
prepare!
end
assert
prepared
assert
!
cleaned
prepared
=
cleaned
=
false
assert_deprecated
do
Reloader
.
cleanup!
end
assert
prepared
assert
cleaned
end
def
test_prepend_prepare_callback
i
=
10
assert_deprecated
do
Reloader
.
to_prepare
{
i
+=
1
}
Reloader
.
to_prepare
(
prepend:
true
)
{
i
=
0
}
end
assert_deprecated
do
Reloader
.
prepare!
end
assert_equal
1
,
i
end
def
test_cleanup_callbacks_are_called_on_exceptions
cleaned
=
false
assert_deprecated
do
Reloader
.
to_cleanup
{
cleaned
=
true
}
end
def
test_complete_callbacks_are_called_on_exceptions
completed
=
false
reloader
.
to_complete
{
completed
=
true
}
begin
call_and_return_body
do
...
...
@@ -188,16 +141,26 @@ def test_cleanup_callbacks_are_called_on_exceptions
rescue
end
assert
c
lean
ed
assert
c
omplet
ed
end
private
def
call_and_return_body
(
&
block
)
x
=
Class
.
new
(
ActiveSupport
::
Reloader
)
x
.
check
=
lambda
{
true
}
app
=
middleware
(
block
||
proc
{
[
200
,
{},
"response"
]
})
_
,
_
,
body
=
app
.
call
(
"rack.input"
=>
StringIO
.
new
(
""
))
body
end
def
middleware
(
inner_app
,
reloader
=
reloader
())
ActionDispatch
::
Reloader
.
new
(
inner_app
,
reloader
)
end
def
reloader
(
check
=
lambda
{
true
})
@reloader
||=
begin
reloader
=
Class
.
new
(
ActiveSupport
::
Reloader
)
reloader
.
check
=
check
reloader
end
@response
||=
"response"
@reloader
||=
Reloader
.
new
(
block
||
proc
{
[
200
,
{},
@response
]
},
x
)
@reloader
.
call
(
"rack.input"
=>
StringIO
.
new
(
""
))[
2
]
end
end
activesupport/test/reloader_test.rb
浏览文件 @
3f2b7d60
...
...
@@ -2,12 +2,15 @@
class
ReloaderTest
<
ActiveSupport
::
TestCase
def
test_prepare_callback
prepared
=
false
prepared
=
completed
=
false
reloader
.
to_prepare
{
prepared
=
true
}
reloader
.
to_complete
{
completed
=
true
}
assert
!
prepared
assert
!
completed
reloader
.
prepare!
assert
prepared
assert
!
completed
prepared
=
false
reloader
.
wrap
do
...
...
@@ -17,6 +20,15 @@ def test_prepare_callback
assert
!
prepared
end
def
test_prepend_prepare_callback
i
=
10
reloader
.
to_prepare
{
i
+=
1
}
reloader
.
to_prepare
(
prepend:
true
)
{
i
=
0
}
reloader
.
prepare!
assert_equal
1
,
i
end
def
test_only_run_when_check_passes
r
=
new_reloader
{
true
}
invoked
=
false
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录