Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
cd424f0f
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,发现更多精彩内容 >>
提交
cd424f0f
编写于
7月 02, 2009
作者:
E
Emilio Tagua
浏览文件
操作
浏览文件
下载
差异文件
Merge commit 'rails/master'
上级
084e4a2d
49bdbebc
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
176 addition
and
25 deletion
+176
-25
actionpack/lib/action_view/helpers/asset_tag_helper.rb
actionpack/lib/action_view/helpers/asset_tag_helper.rb
+67
-0
actionpack/lib/action_view/helpers/form_tag_helper.rb
actionpack/lib/action_view/helpers/form_tag_helper.rb
+2
-2
actionpack/lib/action_view/helpers/tag_helper.rb
actionpack/lib/action_view/helpers/tag_helper.rb
+2
-1
actionpack/test/template/active_record_helper_test.rb
actionpack/test/template/active_record_helper_test.rb
+1
-1
actionpack/test/template/asset_tag_helper_test.rb
actionpack/test/template/asset_tag_helper_test.rb
+41
-2
actionpack/test/template/form_helper_test.rb
actionpack/test/template/form_helper_test.rb
+5
-5
actionpack/test/template/form_tag_helper_test.rb
actionpack/test/template/form_tag_helper_test.rb
+3
-3
actionpack/test/template/prototype_helper_test.rb
actionpack/test/template/prototype_helper_test.rb
+3
-3
activesupport/lib/active_support/cache.rb
activesupport/lib/active_support/cache.rb
+11
-2
activesupport/lib/active_support/duration.rb
activesupport/lib/active_support/duration.rb
+4
-2
activesupport/lib/active_support/new_callbacks.rb
activesupport/lib/active_support/new_callbacks.rb
+1
-1
activesupport/test/caching_test.rb
activesupport/test/caching_test.rb
+19
-0
activesupport/test/core_ext/duration_test.rb
activesupport/test/core_ext/duration_test.rb
+1
-0
railties/lib/rails/gem_dependency.rb
railties/lib/rails/gem_dependency.rb
+7
-3
railties/test/gem_dependency_test.rb
railties/test/gem_dependency_test.rb
+9
-0
未找到文件。
actionpack/lib/action_view/helpers/asset_tag_helper.rb
浏览文件 @
cd424f0f
...
...
@@ -454,6 +454,21 @@ def image_path(source)
end
alias_method
:path_to_image
,
:image_path
# aliased to avoid conflicts with an image_path named route
# Computes the path to a video asset in the public videos directory.
# Full paths from the document root will be passed through.
# Used internally by +video_tag+ to build the video path.
#
# ==== Examples
# video_path("hd") # => /videos/hd
# video_path("hd.avi") # => /videos/hd.avi
# video_path("trailers/hd.avi") # => /videos/trailers/hd.avi
# video_path("/trailers/hd.avi") # => /videos/hd.avi
# video_path("http://www.railsapplication.com/vid/hd.avi") # => http://www.railsapplication.com/vid/hd.avi
def
video_path
(
source
)
compute_public_path
(
source
,
'videos'
)
end
alias_method
:path_to_video
,
:video_path
# aliased to avoid conflicts with an video_path named route
# Returns an html image tag for the +source+. The +source+ can be a full
# path or a file that exists in your public images directory.
#
...
...
@@ -505,6 +520,58 @@ def image_tag(source, options = {})
tag
(
"img"
,
options
)
end
# Returns an html video tag for the +sources+. If +sources+ is a string,
# a single video tag will be returned. If +sources+ is an array, a video
# tag with nested source tags for each source will be returned. The
# +sources+ can be full paths or files that exists in your public videos
# directory.
#
# ==== Options
# You can add HTML attributes using the +options+. The +options+ supports
# two additional keys for convenience and conformance:
#
# * <tt>:poster</tt> - Set an image (like a screenshot) to be shown
# before the video loads. The path is calculated like the +src+ of +image_tag+.
# * <tt>:size</tt> - Supplied as "{Width}x{Height}", so "30x45" becomes
# width="30" and height="45". <tt>:size</tt> will be ignored if the
# value is not in the correct format.
#
# ==== Examples
# video_tag("trailer") # =>
# <video src="/videos/trailer" />
# video_tag("trailer.ogg") # =>
# <video src="/videos/trailer.ogg" />
# video_tag("trailer.ogg", :controls => true, :autobuffer => true) # =>
# <video autobuffer="autobuffer" controls="controls" src="/videos/trailer.ogg" />
# video_tag("trailer.m4v", :size => "16x10", :poster => "screenshot.png") # =>
# <video src="/videos/trailer.m4v" width="16" height="10" poster="/images/screenshot.png" />
# video_tag("/trailers/hd.avi", :size => "16x16") # =>
# <video src="/trailers/hd.avi" width="16" height="16" />
# video_tag("/trailers/hd.avi", :height => '32', :width => '32') # =>
# <video height="32" src="/trailers/hd.avi" width="32" />
# video_tag(["trailer.ogg", "trailer.flv"]) # =>
# <video><source src="trailer.ogg" /><source src="trailer.ogg" /><source src="trailer.flv" /></video>
# video_tag(["trailer.ogg", "trailer.flv"] :size => "160x120") # =>
# <video height="120" width="160"><source src="trailer.ogg" /><source src="trailer.flv" /></video>
def
video_tag
(
sources
,
options
=
{})
options
.
symbolize_keys!
options
[
:poster
]
=
path_to_image
(
options
[
:poster
])
if
options
[
:poster
]
if
size
=
options
.
delete
(
:size
)
options
[
:width
],
options
[
:height
]
=
size
.
split
(
"x"
)
if
size
=~
%r{^
\d
+x
\d
+$}
end
if
sources
.
is_a?
(
Array
)
content_tag
(
"video"
,
options
)
do
sources
.
map
{
|
source
|
tag
(
"source"
,
:src
=>
source
)
}.
join
end
else
options
[
:src
]
=
path_to_video
(
sources
)
tag
(
"video"
,
options
)
end
end
def
self
.
cache_asset_timestamps
@@cache_asset_timestamps
end
...
...
actionpack/lib/action_view/helpers/form_tag_helper.rb
浏览文件 @
cd424f0f
...
...
@@ -451,10 +451,10 @@ def extra_tags_for_form(html_options)
''
when
/^post$/i
,
""
,
nil
html_options
[
"method"
]
=
"post"
protect_against_forgery?
?
content_tag
(
:div
,
token_tag
,
:style
=>
'margin:0;padding:0'
)
:
''
protect_against_forgery?
?
content_tag
(
:div
,
token_tag
,
:style
=>
'margin:0;padding:0
;display:inline
'
)
:
''
else
html_options
[
"method"
]
=
"post"
content_tag
(
:div
,
tag
(
:input
,
:type
=>
"hidden"
,
:name
=>
"_method"
,
:value
=>
method
)
+
token_tag
,
:style
=>
'margin:0;padding:0'
)
content_tag
(
:div
,
tag
(
:input
,
:type
=>
"hidden"
,
:name
=>
"_method"
,
:value
=>
method
)
+
token_tag
,
:style
=>
'margin:0;padding:0
;display:inline
'
)
end
end
...
...
actionpack/lib/action_view/helpers/tag_helper.rb
浏览文件 @
cd424f0f
...
...
@@ -8,7 +8,8 @@ module Helpers #:nodoc:
module
TagHelper
include
ERB
::
Util
BOOLEAN_ATTRIBUTES
=
%w(disabled readonly multiple checked)
.
to_set
BOOLEAN_ATTRIBUTES
=
%w(disabled readonly multiple checked autobuffer
autoplay controls loop)
.
to_set
BOOLEAN_ATTRIBUTES
.
merge
(
BOOLEAN_ATTRIBUTES
.
map
{
|
attr
|
attr
.
to_sym
})
# Returns an empty HTML tag of type +name+ which by default is XHTML
...
...
actionpack/test/template/active_record_helper_test.rb
浏览文件 @
cd424f0f
...
...
@@ -171,7 +171,7 @@ def test_form_with_protect_against_forgery
@request_forgery_protection_token
=
'authenticity_token'
@form_authenticity_token
=
'123'
assert_dom_equal
(
%(<form action="create" method="post"><div style='margin:0;padding:0'><input type='hidden' name='authenticity_token' value='123' /></div><p><label for="post_title">Title</label><br /><input id="post_title" name="post[title]" size="30" type="text" value="Hello World" /></p>\n<p><label for="post_body">Body</label><br /><div class="fieldWithErrors"><textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea></div></p><input name="commit" type="submit" value="Create" /></form>)
,
%(<form action="create" method="post"><div style='margin:0;padding:0
;display:inline
'><input type='hidden' name='authenticity_token' value='123' /></div><p><label for="post_title">Title</label><br /><input id="post_title" name="post[title]" size="30" type="text" value="Hello World" /></p>\n<p><label for="post_body">Body</label><br /><div class="fieldWithErrors"><textarea cols="40" id="post_body" name="post[body]" rows="20">Back to the hill and over it again!</textarea></div></p><input name="commit" type="submit" value="Create" /></form>)
,
form
(
"post"
)
)
end
...
...
actionpack/test/template/asset_tag_helper_test.rb
浏览文件 @
cd424f0f
...
...
@@ -138,11 +138,38 @@ def teardown
%(image_tag("error.png", "size" => "45 x 70"))
=>
%(<img alt="Error" src="/images/error.png" />)
,
%(image_tag("error.png", "size" => "x"))
=>
%(<img alt="Error" src="/images/error.png" />)
,
%(image_tag("http://www.rubyonrails.com/images/rails.png"))
=>
%(<img alt="Rails" src="http://www.rubyonrails.com/images/rails.png" />)
,
%(image_tag("http://www.rubyonrails.com/images/rails.png"))
=>
%(<img alt="Rails" src="http://www.rubyonrails.com/images/rails.png" />)
,
%(image_tag("mouse.png", :mouseover => "/images/mouse_over.png"))
=>
%(<img alt="Mouse" onmouseover="this.src='/images/mouse_over.png'" onmouseout="this.src='/images/mouse.png'" src="/images/mouse.png" />)
,
%(image_tag("mouse.png", :mouseover => image_path("mouse_over.png")))
=>
%(<img alt="Mouse" onmouseover="this.src='/images/mouse_over.png'" onmouseout="this.src='/images/mouse.png'" src="/images/mouse.png" />)
}
VideoPathToTag
=
{
%(video_path("xml"))
=>
%(/videos/xml)
,
%(video_path("xml.ogg"))
=>
%(/videos/xml.ogg)
,
%(video_path("dir/xml.ogg"))
=>
%(/videos/dir/xml.ogg)
,
%(video_path("/dir/xml.ogg"))
=>
%(/dir/xml.ogg)
}
PathToVideoToTag
=
{
%(path_to_video("xml"))
=>
%(/videos/xml)
,
%(path_to_video("xml.ogg"))
=>
%(/videos/xml.ogg)
,
%(path_to_video("dir/xml.ogg"))
=>
%(/videos/dir/xml.ogg)
,
%(path_to_video("/dir/xml.ogg"))
=>
%(/dir/xml.ogg)
}
VideoLinkToTag
=
{
%(video_tag("xml.ogg"))
=>
%(<video src="/videos/xml.ogg" />)
,
%(video_tag("rss.m4v", :autoplay => true, :controls => true))
=>
%(<video autoplay="autoplay" controls="controls" src="/videos/rss.m4v" />)
,
%(video_tag("rss.m4v", :autobuffer => true))
=>
%(<video autobuffer="autobuffer" src="/videos/rss.m4v" />)
,
%(video_tag("gold.m4v", :size => "160x120"))
=>
%(<video height="120" src="/videos/gold.m4v" width="160" />)
,
%(video_tag("gold.m4v", "size" => "320x240"))
=>
%(<video height="240" src="/videos/gold.m4v" width="320" />)
,
%(video_tag("trailer.ogg", :poster => "screenshot.png"))
=>
%(<video poster="/images/screenshot.png" src="/videos/trailer.ogg" />)
,
%(video_tag("error.avi", "size" => "100"))
=>
%(<video src="/videos/error.avi" />)
,
%(video_tag("error.avi", "size" => "100 x 100"))
=>
%(<video src="/videos/error.avi" />)
,
%(video_tag("error.avi", "size" => "x"))
=>
%(<video src="/videos/error.avi" />)
,
%(video_tag("http://media.rubyonrails.org/video/rails_blog_2.mov"))
=>
%(<video src="http://media.rubyonrails.org/video/rails_blog_2.mov" />)
,
%(video_tag(["multiple.ogg", "multiple.avi"]))
=>
%(<video><source src="multiple.ogg" /><source src="multiple.avi" /></video>)
,
%(video_tag(["multiple.ogg", "multiple.avi"], :size => "160x120", :controls => true))
=>
%(<video controls="controls" height="120" width="160"><source src="multiple.ogg" /><source src="multiple.avi" /></video>)
}
def
test_auto_discovery_link_tag
AutoDiscoveryToTag
.
each
{
|
method
,
tag
|
assert_dom_equal
(
tag
,
eval
(
method
))
}
...
...
@@ -272,6 +299,18 @@ def test_image_tag_windows_behaviour
end
end
def
test_video_path
VideoPathToTag
.
each
{
|
method
,
tag
|
assert_dom_equal
(
tag
,
eval
(
method
))
}
end
def
test_path_to_video_alias_for_video_path
PathToVideoToTag
.
each
{
|
method
,
tag
|
assert_dom_equal
(
tag
,
eval
(
method
))
}
end
def
test_video_tag
VideoLinkToTag
.
each
{
|
method
,
tag
|
assert_dom_equal
(
tag
,
eval
(
method
))
}
end
def
test_timebased_asset_id
expected_time
=
File
.
stat
(
File
.
expand_path
(
File
.
dirname
(
__FILE__
)
+
"/../fixtures/public/images/rails.png"
)).
mtime
.
to_i
.
to_s
assert_equal
%(<img alt="Rails" src="/images/rails.png?#{expected_time}" />)
,
image_tag
(
"rails.png"
)
...
...
@@ -284,7 +323,7 @@ def test_timebased_asset_id_with_relative_url_root
ensure
ActionController
::
Base
.
relative_url_root
=
""
end
def
test_should_skip_asset_id_on_complete_url
assert_equal
%(<img alt="Rails" src="http://www.example.com/rails.png" />)
,
image_tag
(
"http://www.example.com/rails.png"
)
end
...
...
actionpack/test/template/form_helper_test.rb
浏览文件 @
cd424f0f
...
...
@@ -383,7 +383,7 @@ def test_form_for_with_method
expected
=
"<form action='http://www.example.com' id='create-post' method='post'>"
+
"<div style='margin:0;padding:0'><input name='_method' type='hidden' value='put' /></div>"
+
"<div style='margin:0;padding:0
;display:inline
'><input name='_method' type='hidden' value='put' /></div>"
+
"<input name='post[title]' size='30' type='text' id='post_title' value='Hello World' />"
+
"<textarea name='post[body]' id='post_body' rows='20' cols='40'>Back to the hill and over it again!</textarea>"
+
"<input name='post[secret]' type='hidden' value='0' />"
+
...
...
@@ -1092,7 +1092,7 @@ def test_form_for_with_record_url_option
def
test_form_for_with_existing_object
form_for
(
@post
)
do
|
f
|
end
expected
=
"<form action=
\"
/posts/123
\"
class=
\"
edit_post
\"
id=
\"
edit_post_123
\"
method=
\"
post
\"
><div style=
\"
margin:0;padding:0
\"
><input name=
\"
_method
\"
type=
\"
hidden
\"
value=
\"
put
\"
/></div></form>"
expected
=
"<form action=
\"
/posts/123
\"
class=
\"
edit_post
\"
id=
\"
edit_post_123
\"
method=
\"
post
\"
><div style=
\"
margin:0;padding:0
;display:inline
\"
><input name=
\"
_method
\"
type=
\"
hidden
\"
value=
\"
put
\"
/></div></form>"
assert_equal
expected
,
output_buffer
end
...
...
@@ -1113,7 +1113,7 @@ def test_form_for_with_existing_object_in_list
form_for
([
@post
,
@comment
])
{}
expected
=
%(<form action="#{comment_path(@post, @comment)}" class="edit_comment" id="edit_comment_1" method="post"><div style="margin:0;padding:0"><input name="_method" type="hidden" value="put" /></div></form>)
expected
=
%(<form action="#{comment_path(@post, @comment)}" class="edit_comment" id="edit_comment_1" method="post"><div style="margin:0;padding:0
;display:inline
"><input name="_method" type="hidden" value="put" /></div></form>)
assert_dom_equal
expected
,
output_buffer
end
...
...
@@ -1132,7 +1132,7 @@ def test_form_for_with_existing_object_and_namespace_in_list
form_for
([
:admin
,
@post
,
@comment
])
{}
expected
=
%(<form action="#{admin_comment_path(@post, @comment)}" class="edit_comment" id="edit_comment_1" method="post"><div style="margin:0;padding:0"><input name="_method" type="hidden" value="put" /></div></form>)
expected
=
%(<form action="#{admin_comment_path(@post, @comment)}" class="edit_comment" id="edit_comment_1" method="post"><div style="margin:0;padding:0
;display:inline
"><input name="_method" type="hidden" value="put" /></div></form>)
assert_dom_equal
expected
,
output_buffer
end
...
...
@@ -1148,7 +1148,7 @@ def test_form_for_with_new_object_and_namespace_in_list
def
test_form_for_with_existing_object_and_custom_url
form_for
(
@post
,
:url
=>
"/super_posts"
)
do
|
f
|
end
expected
=
"<form action=
\"
/super_posts
\"
class=
\"
edit_post
\"
id=
\"
edit_post_123
\"
method=
\"
post
\"
><div style=
\"
margin:0;padding:0
\"
><input name=
\"
_method
\"
type=
\"
hidden
\"
value=
\"
put
\"
/></div></form>"
expected
=
"<form action=
\"
/super_posts
\"
class=
\"
edit_post
\"
id=
\"
edit_post_123
\"
method=
\"
post
\"
><div style=
\"
margin:0;padding:0
;display:inline
\"
><input name=
\"
_method
\"
type=
\"
hidden
\"
value=
\"
put
\"
/></div></form>"
assert_equal
expected
,
output_buffer
end
...
...
actionpack/test/template/form_tag_helper_test.rb
浏览文件 @
cd424f0f
...
...
@@ -40,13 +40,13 @@ def test_form_tag_multipart
def
test_form_tag_with_method_put
actual
=
form_tag
({},
{
:method
=>
:put
})
expected
=
%(<form action="http://www.example.com" method="post"><div style='margin:0;padding:0'><input type="hidden" name="_method" value="put" /></div>)
expected
=
%(<form action="http://www.example.com" method="post"><div style='margin:0;padding:0
;display:inline
'><input type="hidden" name="_method" value="put" /></div>)
assert_dom_equal
expected
,
actual
end
def
test_form_tag_with_method_delete
actual
=
form_tag
({},
{
:method
=>
:delete
})
expected
=
%(<form action="http://www.example.com" method="post"><div style='margin:0;padding:0'><input type="hidden" name="_method" value="delete" /></div>)
expected
=
%(<form action="http://www.example.com" method="post"><div style='margin:0;padding:0
;display:inline
'><input type="hidden" name="_method" value="delete" /></div>)
assert_dom_equal
expected
,
actual
end
...
...
@@ -62,7 +62,7 @@ def test_form_tag_with_block_and_method_in_erb
__in_erb_template
=
''
form_tag
(
"http://example.com"
,
:method
=>
:put
)
{
concat
"Hello world!"
}
expected
=
%(<form action="http://example.com" method="post"><div style='margin:0;padding:0'><input type="hidden" name="_method" value="put" /></div>Hello world!</form>)
expected
=
%(<form action="http://example.com" method="post"><div style='margin:0;padding:0
;display:inline
'><input type="hidden" name="_method" value="put" /></div>Hello world!</form>)
assert_dom_equal
expected
,
output_buffer
end
...
...
actionpack/test/template/prototype_helper_test.rb
浏览文件 @
cd424f0f
...
...
@@ -136,7 +136,7 @@ def test_form_remote_tag
end
def
test_form_remote_tag_with_method
assert_dom_equal
%(<form action=\"http://www.example.com/fast\" method=\"post\" onsubmit=\"new Ajax.Updater('glass_of_beer', 'http://www.example.com/fast', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;\"><div style='margin:0;padding:0'><input name='_method' type='hidden' value='put' /></div>)
,
assert_dom_equal
%(<form action=\"http://www.example.com/fast\" method=\"post\" onsubmit=\"new Ajax.Updater('glass_of_beer', 'http://www.example.com/fast', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;\"><div style='margin:0;padding:0
;display:inline
'><input name='_method' type='hidden' value='put' /></div>)
,
form_remote_tag
(
:update
=>
"glass_of_beer"
,
:url
=>
{
:action
=>
:fast
},
:html
=>
{
:method
=>
:put
})
end
...
...
@@ -164,7 +164,7 @@ def test_remote_form_for_with_record_identification_with_existing_record
@record
.
save
remote_form_for
(
@record
)
{}
expected
=
%(<form action='#{author_path(@record)}' id='edit_author_1' method='post' onsubmit="new Ajax.Request('#{author_path(@record)}', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;" class='edit_author'><div style='margin:0;padding:0'><input name='_method' type='hidden' value='put' /></div></form>)
expected
=
%(<form action='#{author_path(@record)}' id='edit_author_1' method='post' onsubmit="new Ajax.Request('#{author_path(@record)}', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;" class='edit_author'><div style='margin:0;padding:0
;display:inline
'><input name='_method' type='hidden' value='put' /></div></form>)
assert_dom_equal
expected
,
output_buffer
end
...
...
@@ -180,7 +180,7 @@ def test_remote_form_for_with_existing_object_in_list
@article
.
save
remote_form_for
([
@author
,
@article
])
{}
expected
=
%(<form action='#{author_article_path(@author, @article)}' id='edit_article_1' method='post' onsubmit="new Ajax.Request('#{author_article_path(@author, @article)}', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;" class='edit_article'><div style='margin:0;padding:0'><input name='_method' type='hidden' value='put' /></div></form>)
expected
=
%(<form action='#{author_article_path(@author, @article)}' id='edit_article_1' method='post' onsubmit="new Ajax.Request('#{author_article_path(@author, @article)}', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;" class='edit_article'><div style='margin:0;padding:0
;display:inline
'><input name='_method' type='hidden' value='put' /></div></form>)
assert_dom_equal
expected
,
output_buffer
end
...
...
activesupport/lib/active_support/cache.rb
浏览文件 @
cd424f0f
...
...
@@ -99,11 +99,16 @@ def self.expand_cache_key(key, namespace = nil)
class
Store
cattr_accessor
:logger
attr_reader
:silence
,
:logger_off
def
silence!
@silence
=
true
self
end
alias
silence?
silence
alias
logger_off?
logger_off
# Fetches data from the cache, using the given key. If there is data in
# the cache with the given key, then that data is returned.
#
...
...
@@ -233,11 +238,15 @@ def decrement(key, amount = 1)
private
def
expires_in
(
options
)
(
options
&&
options
[
:expires_in
])
||
0
expires_in
=
options
&&
options
[
:expires_in
]
raise
":expires_in must be a number"
if
expires_in
&&
!
expires_in
.
is_a?
(
Numeric
)
expires_in
||
0
end
def
log
(
operation
,
key
,
options
)
logger
.
debug
(
"Cache
#{
operation
}
:
#{
key
}#{
options
?
" (
#{
options
.
inspect
}
)"
:
""
}
"
)
if
logger
&&
!
@silence
&&
!
@logger_off
logger
.
debug
(
"Cache
#{
operation
}
:
#{
key
}#{
options
?
" (
#{
options
.
inspect
}
)"
:
""
}
"
)
if
logger
&&
!
silence?
&&
!
logger_off?
end
end
end
...
...
activesupport/lib/active_support/duration.rb
浏览文件 @
cd424f0f
...
...
@@ -68,10 +68,12 @@ def ago(time = ::Time.current)
def
inspect
#:nodoc:
consolidated
=
parts
.
inject
(
::
Hash
.
new
(
0
))
{
|
h
,
part
|
h
[
part
.
first
]
+=
part
.
last
;
h
}
[
:years
,
:months
,
:days
,
:minutes
,
:seconds
].
map
do
|
length
|
parts
=
[
:years
,
:months
,
:days
,
:minutes
,
:seconds
].
map
do
|
length
|
n
=
consolidated
[
length
]
"
#{
n
}
#{
n
==
1
?
length
.
to_s
.
singularize
:
length
.
to_s
}
"
if
n
.
nonzero?
end
.
compact
.
to_sentence
(
:locale
=>
:en
)
end
.
compact
parts
=
[
"0 seconds"
]
if
parts
.
empty?
parts
.
to_sentence
(
:locale
=>
:en
)
end
protected
...
...
activesupport/lib/active_support/new_callbacks.rb
浏览文件 @
cd424f0f
...
...
@@ -202,7 +202,7 @@ def start(key = nil, options = {})
# end
name
=
"_conditional_callback_
#{
@kind
}
_
#{
next_id
}
"
txt
,
line
=
<<-
RUBY_EVAL
,
__LINE__
txt
,
line
=
<<-
RUBY_EVAL
,
__LINE__
+
1
def
#{
name
}
(halted)
#{
@compiled_options
[
0
]
||
"if true"
}
&& !halted
#{
@filter
}
do
...
...
activesupport/test/caching_test.rb
浏览文件 @
cd424f0f
require
'logger'
require
'abstract_unit'
require
'active_support/cache'
...
...
@@ -190,6 +191,8 @@ def setup
@cache
=
ActiveSupport
::
Cache
.
lookup_store
(
:mem_cache_store
)
@data
=
@cache
.
instance_variable_get
(
:@data
)
@cache
.
clear
@cache
.
silence!
@cache
.
logger
=
Logger
.
new
(
"/dev/null"
)
end
include
CacheStoreBehavior
...
...
@@ -312,6 +315,22 @@ def test_middleware
app
=
@cache
.
middleware
.
new
(
app
)
app
.
call
({})
end
def
test_expires_in
result
=
@cache
.
write
(
'foo'
,
'bar'
,
:expires_in
=>
1
)
assert_equal
'bar'
,
@cache
.
read
(
'foo'
)
sleep
2
assert_equal
nil
,
@cache
.
read
(
'foo'
)
end
def
test_expires_in_with_invalid_value
@cache
.
write
(
'baz'
,
'bat'
)
assert_raise
(
RuntimeError
)
do
@cache
.
write
(
'foo'
,
'bar'
,
:expires_in
=>
'Mon Jun 29 13:10:40 -0700 2150'
)
end
assert_equal
'bat'
,
@cache
.
read
(
'baz'
)
assert_equal
nil
,
@cache
.
read
(
'foo'
)
end
end
class
CompressedMemCacheStore
<
ActiveSupport
::
TestCase
...
...
activesupport/test/core_ext/duration_test.rb
浏览文件 @
cd424f0f
...
...
@@ -3,6 +3,7 @@
class
DurationTest
<
ActiveSupport
::
TestCase
def
test_inspect
assert_equal
'0 seconds'
,
0
.
seconds
.
inspect
assert_equal
'1 month'
,
1
.
month
.
inspect
assert_equal
'1 month and 1 day'
,
(
1
.
month
+
1
.
day
).
inspect
assert_equal
'6 months and -2 days'
,
(
6
.
months
-
2
.
days
).
inspect
...
...
railties/lib/rails/gem_dependency.rb
浏览文件 @
cd424f0f
...
...
@@ -122,10 +122,14 @@ def requirement
def
built?
return
false
unless
frozen?
specification
.
extensions
.
each
do
|
ext
|
makefile
=
File
.
join
(
unpacked_gem_directory
,
File
.
dirname
(
ext
),
'Makefile'
)
return
false
unless
File
.
exists?
(
makefile
)
if
vendor_gem?
specification
.
extensions
.
each
do
|
ext
|
makefile
=
File
.
join
(
unpacked_gem_directory
,
File
.
dirname
(
ext
),
'Makefile'
)
return
false
unless
File
.
exists?
(
makefile
)
end
end
true
end
...
...
railties/test/gem_dependency_test.rb
浏览文件 @
cd424f0f
...
...
@@ -199,6 +199,15 @@ def test_gem_determines_build_status
assert_equal
true
,
Rails
::
GemDependency
.
new
(
"dummy-gem-i"
).
built?
assert_equal
false
,
Rails
::
GemDependency
.
new
(
"dummy-gem-j"
).
built?
end
def
test_gem_determines_build_status_only_on_vendor_gems
framework_gem
=
Rails
::
GemDependency
.
new
(
'dummy-framework-gem'
)
framework_gem
.
stubs
(
:framework_gem?
).
returns
(
true
)
# already loaded
framework_gem
.
stubs
(
:vendor_rails?
).
returns
(
false
)
# but not in vendor/rails
framework_gem
.
stubs
(
:vendor_gem?
).
returns
(
false
)
# and not in vendor/gems
framework_gem
.
add_load_paths
# freeze framework gem early
assert
framework_gem
.
built?
end
def
test_gem_build_passes_options_to_dependencies
start_gem
=
Rails
::
GemDependency
.
new
(
"dummy-gem-g"
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录