Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
c29bb885
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,发现更多精彩内容 >>
提交
c29bb885
编写于
1月 17, 2010
作者:
J
Joshua Peek
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Clear out AS callback method pollution in AC::Base.action_methods
上级
58fe3295
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
39 addition
and
9 deletion
+39
-9
actionpack/lib/abstract_controller/base.rb
actionpack/lib/abstract_controller/base.rb
+12
-8
actionpack/test/controller/new_base/base_test.rb
actionpack/test/controller/new_base/base_test.rb
+27
-1
未找到文件。
actionpack/lib/abstract_controller/base.rb
浏览文件 @
c29bb885
...
...
@@ -62,15 +62,19 @@ def hidden_actions
# Array[String]:: A list of all methods that should be considered
# actions.
def
action_methods
@action_methods
||=
@action_methods
||=
begin
# All public instance methods of this class, including ancestors
public_instance_methods
(
true
).
map
{
|
m
|
m
.
to_s
}.
to_set
-
# Except for public instance methods of Base and its ancestors
internal_methods
.
map
{
|
m
|
m
.
to_s
}
+
# Be sure to include shadowed public instance methods of this class
public_instance_methods
(
false
).
map
{
|
m
|
m
.
to_s
}
-
# And always exclude explicitly hidden actions
hidden_actions
methods
=
public_instance_methods
(
true
).
map
{
|
m
|
m
.
to_s
}.
to_set
-
# Except for public instance methods of Base and its ancestors
internal_methods
.
map
{
|
m
|
m
.
to_s
}
+
# Be sure to include shadowed public instance methods of this class
public_instance_methods
(
false
).
map
{
|
m
|
m
.
to_s
}
-
# And always exclude explicitly hidden actions
hidden_actions
# Clear out AS callback method pollution
methods
.
reject
{
|
method
|
method
=~
/_one_time_conditions/
}
end
end
# Returns the full controller name, underscored, without the ending Controller.
...
...
actionpack/test/controller/new_base/base_test.rb
浏览文件 @
c29bb885
...
...
@@ -3,6 +3,8 @@
# Tests the controller dispatching happy path
module
Dispatching
class
SimpleController
<
ActionController
::
Base
before_filter
:authenticate
def
index
render
:text
=>
"success"
end
...
...
@@ -12,12 +14,20 @@ def modify_response_body
end
def
modify_response_body_twice
ret
=
(
self
.
response_body
=
"success"
)
ret
=
(
self
.
response_body
=
"success"
)
self
.
response_body
=
"
#{
ret
}
!"
end
def
modify_response_headers
end
def
show_actions
render
:text
=>
"actions:
#{
action_methods
.
to_a
.
join
(
', '
)
}
"
end
protected
def
authenticate
end
end
class
EmptyController
<
ActionController
::
Base
;
end
...
...
@@ -64,5 +74,21 @@ class BaseTest < Rack::TestCase
assert_equal
'empty'
,
EmptyController
.
controller_name
assert_equal
'contained_empty'
,
Submodule
::
ContainedEmptyController
.
controller_name
end
test
"action methods"
do
assert_equal
Set
.
new
(
%w(
modify_response_headers
modify_response_body_twice
index
modify_response_body
show_actions
)
),
SimpleController
.
action_methods
assert_equal
Set
.
new
,
EmptyController
.
action_methods
assert_equal
Set
.
new
,
Submodule
::
ContainedEmptyController
.
action_methods
get
"/dispatching/simple/show_actions"
assert_body
"actions: modify_response_headers, modify_response_body_twice, index, modify_response_body, show_actions"
end
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录