提交 40f9fd39 编写于 作者: J Jeremy Kemper

Include asset host in public path cache key. Clear cache between asset tag tests.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7617 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 605aadb3
......@@ -223,6 +223,10 @@ module CompiledTemplates #:nodoc:
# Maps template paths / extensions to
@@cached_base_paths = {}
# Cache public asset paths
cattr_reader :computed_public_paths
@@computed_public_paths = {}
@@templates_requiring_setup = Set.new(%w(builder rxml rjs))
# Order of template handers checked by #file_exists? depending on the current #template_format
......
......@@ -384,8 +384,12 @@ def file_exist?(path)
# a single or wildcarded asset host, if configured, with the correct
# request protocol.
def compute_public_path(source, dir, ext = nil, include_host = true)
@@computed_public_paths ||= {}
@@computed_public_paths["#{@controller.request.protocol}#{@controller.request.relative_url_root}#{dir}#{source}#{ext}#{include_host}"] ||=
cache_key = [ @controller.request.protocol,
ActionController::Base.asset_host,
@controller.request.relative_url_root,
dir, source, ext, include_host ].join
ActionView::Base.computed_public_paths[cache_key] ||=
begin
source += ".#{ext}" if File.extname(source).blank? && ext
......@@ -426,15 +430,15 @@ def rails_asset_id(source)
if asset_id = ENV["RAILS_ASSET_ID"]
asset_id
else
@@asset_id_cache[source] ||=
if file_exist?(path = File.join(ASSETS_DIR, source))
File.mtime(path).to_i.to_s
else
''
end
path = File.join(ASSETS_DIR, source)
if File.exist?(path)
File.mtime(path).to_i.to_s
else
''
end
end
end
@@asset_id_cache = {}
# Break out the asset path rewrite so you wish to put the asset id
# someplace other than the query string.
......
......@@ -33,11 +33,14 @@ def url_for(*args) "http://www.example.com" end
@request = Class.new do
def relative_url_root() "" end
def protocol() 'http://' end
end.new
@controller.request = @request
ActionView::Helpers::AssetTagHelper::reset_javascript_include_default
ActionView::Base.computed_public_paths.clear
end
def teardown
......@@ -128,6 +131,8 @@ def test_javascript_include_tag
ENV["RAILS_ASSET_ID"] = ""
JavascriptIncludeToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) }
ActionView::Base.computed_public_paths.clear
ENV["RAILS_ASSET_ID"] = "1"
assert_dom_equal(%(<script src="/javascripts/prototype.js?1" type="text/javascript"></script>\n<script src="/javascripts/effects.js?1" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js?1" type="text/javascript"></script>\n<script src="/javascripts/controls.js?1" type="text/javascript"></script>\n<script src="/javascripts/application.js?1" type="text/javascript"></script>), javascript_include_tag(:defaults))
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册