mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
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
This commit is contained in:
parent
605aadb3cd
commit
40f9fd39f6
3 changed files with 22 additions and 9 deletions
|
@ -223,6 +223,10 @@ module ActionView #: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 @@ module ActionView
|
|||
# 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 @@ module ActionView
|
|||
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 @@ class AssetTagHelperTest < Test::Unit::TestCase
|
|||
|
||||
@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 @@ class AssetTagHelperTest < Test::Unit::TestCase
|
|||
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
|
||||
|
|
Loading…
Reference in a new issue