diff --git a/actionpack/lib/action_view/helpers/asset_tag_helpers/asset_include_tag.rb b/actionpack/lib/action_view/helpers/asset_tag_helpers/asset_include_tag.rb
deleted file mode 100644
index e42e49fb04177..0000000000000
--- a/actionpack/lib/action_view/helpers/asset_tag_helpers/asset_include_tag.rb
+++ /dev/null
@@ -1,145 +0,0 @@
-require 'active_support/core_ext/string/inflections'
-require 'active_support/core_ext/file'
-require 'action_view/helpers/tag_helper'
-
-module ActionView
- module Helpers
- module AssetTagHelper
-
- class AssetIncludeTag #:nodoc:
- include TagHelper
-
- attr_reader :config, :asset_paths
- class_attribute :expansions
-
- def self.inherited(base)
- base.expansions = { }
- end
-
- def initialize(config, asset_paths)
- @config = config
- @asset_paths = asset_paths
- end
-
- def asset_name
- raise NotImplementedError
- end
-
- def extension
- raise NotImplementedError
- end
-
- def custom_dir
- raise NotImplementedError
- end
-
- def asset_tag(source, options)
- raise NotImplementedError
- end
-
- def include_tag(*sources)
- options = sources.extract_options!.stringify_keys
- concat = options.delete("concat")
- cache = concat || options.delete("cache")
- recursive = options.delete("recursive")
-
- if concat || (config.perform_caching && cache)
- joined_name = (cache == true ? "all" : cache) + ".#{extension}"
- joined_path = File.join((joined_name[/^#{File::SEPARATOR}/] ? config.assets_dir : custom_dir), joined_name)
- unless config.perform_caching && File.exists?(joined_path)
- write_asset_file_contents(joined_path, compute_paths(sources, recursive))
- end
- asset_tag(joined_name, options)
- else
- sources = expand_sources(sources, recursive)
- ensure_sources!(sources) if cache
- sources.collect { |source| asset_tag(source, options) }.join("\n").html_safe
- end
- end
-
- private
-
- def path_to_asset(source, options = {})
- asset_paths.compute_public_path(source, asset_name.to_s.pluralize, options.merge(:ext => extension))
- end
-
- def path_to_asset_source(source)
- asset_paths.compute_source_path(source, asset_name.to_s.pluralize, extension)
- end
-
- def compute_paths(*args)
- expand_sources(*args).collect { |source| path_to_asset_source(source) }
- end
-
- def expand_sources(sources, recursive)
- if sources.first == :all
- collect_asset_files(custom_dir, ('**' if recursive), "*.#{extension}")
- else
- sources.inject([]) do |list, source|
- determined_source = determine_source(source, expansions)
- update_source_list(list, determined_source)
- end
- end
- end
-
- def update_source_list(list, source)
- case source
- when String
- list.delete(source)
- list << source
- when Array
- updated_sources = source - list
- list.concat(updated_sources)
- end
- end
-
- def ensure_sources!(sources)
- sources.each do |source|
- asset_file_path!(path_to_asset_source(source))
- end
- end
-
- def collect_asset_files(*path)
- dir = path.first
-
- Dir[File.join(*path.compact)].collect do |file|
- file[-(file.size - dir.size - 1)..-1].sub(/\.\w+$/, '')
- end.sort
- end
-
- def determine_source(source, collection)
- case source
- when Symbol
- collection[source] || raise(ArgumentError, "No expansion found for #{source.inspect}")
- else
- source
- end
- end
-
- def join_asset_file_contents(paths)
- paths.collect { |path| File.read(asset_file_path!(path, true)) }.join("\n\n")
- end
-
- def write_asset_file_contents(joined_asset_path, asset_paths)
- FileUtils.mkdir_p(File.dirname(joined_asset_path))
- File.atomic_write(joined_asset_path) { |cache| cache.write(join_asset_file_contents(asset_paths)) }
-
- # Set mtime to the latest of the combined files to allow for
- # consistent ETag without a shared filesystem.
- mt = asset_paths.map { |p| File.mtime(asset_file_path!(p)) }.max
- File.utime(mt, mt, joined_asset_path)
- end
-
- def asset_file_path!(absolute_path, error_if_file_is_uri = false)
- if asset_paths.is_uri?(absolute_path)
- raise(Errno::ENOENT, "Asset file #{path} is uri and cannot be merged into single file") if error_if_file_is_uri
- else
- raise(Errno::ENOENT, "Asset file not found at '#{absolute_path}'" ) unless File.exist?(absolute_path)
- return absolute_path
- end
- end
- end
-
- end
- end
-end
diff --git a/actionpack/lib/action_view/helpers/asset_tag_helpers/javascript_tag_helpers.rb b/actionpack/lib/action_view/helpers/asset_tag_helpers/javascript_tag_helpers.rb
index 139f4d19ab4b9..b6b9eadc88cad 100644
--- a/actionpack/lib/action_view/helpers/asset_tag_helpers/javascript_tag_helpers.rb
+++ b/actionpack/lib/action_view/helpers/asset_tag_helpers/javascript_tag_helpers.rb
@@ -1,76 +1,11 @@
require 'active_support/core_ext/file'
-require 'action_view/helpers/asset_tag_helpers/asset_include_tag'
module ActionView
module Helpers
module AssetTagHelper
-
- class JavascriptIncludeTag < AssetIncludeTag #:nodoc:
- def asset_name
- 'javascript'
- end
-
- def extension
- 'js'
- end
-
- def asset_tag(source, options)
- content_tag("script", "", { "src" => path_to_asset(source) }.merge(options))
- end
-
- def custom_dir
- config.javascripts_dir
- end
-
- private
-
- def expand_sources(sources, recursive = false)
- if sources.include?(:all)
- all_asset_files = (collect_asset_files(custom_dir, ('**' if recursive), "*.#{extension}") - ['application'])
- add_application_js(all_asset_files, sources)
- ((determine_source(:defaults, expansions).dup & all_asset_files) + all_asset_files).uniq
- else
- expanded_sources = sources.inject([]) do |list, source|
- determined_source = determine_source(source, expansions)
- update_source_list(list, determined_source)
- end
- add_application_js(expanded_sources, sources)
- expanded_sources
- end
- end
-
- def add_application_js(expanded_sources, sources)
- if (sources.include?(:defaults) || sources.include?(:all)) && File.exist?(File.join(custom_dir, "application.#{extension}"))
- expanded_sources.delete('application')
- expanded_sources << "application"
- end
- end
- end
-
-
module JavascriptTagHelpers
extend ActiveSupport::Concern
- module ClassMethods
- # Register one or more javascript files to be included when symbol
- # is passed to javascript_include_tag. This method is typically intended
- # to be called from plugin initialization to register javascript files
- # that the plugin installed in public/javascripts.
- #
- # ActionView::Helpers::AssetTagHelper.register_javascript_expansion :monkey => ["head", "body", "tail"]
- #
- # javascript_include_tag :monkey # =>
- #
- #
- #
- def register_javascript_expansion(expansions)
- js_expansions = JavascriptIncludeTag.expansions
- expansions.each do |key, values|
- js_expansions[key] = (js_expansions[key] || []) | Array(values)
- end
- end
- end
-
# Computes the path to a javascript asset in the public javascripts directory.
# If the +source+ filename has no extension, .js will be appended (except for explicit URIs)
# Full paths from the document root will be passed through.
@@ -101,15 +36,6 @@ def javascript_url(source)
#
# When passing paths, the ".js" extension is optional.
#
- # If the application is not using the asset pipeline, to include the default JavaScript
- # expansion pass :defaults as source. By default, :defaults loads jQuery,
- # and that can be overridden in config/application.rb:
- #
- # config.action_view.javascript_expansions[:defaults] = %w(foo.js bar.js)
- #
- # When using :defaults or :all, if an application.js file exists
- # in public/javascripts it will be included as well at the end.
- #
# You can modify the HTML attributes of the script tag by passing a hash as the
# last argument.
#
@@ -129,65 +55,14 @@ def javascript_url(source)
# javascript_include_tag "http://www.example.com/xmlhr.js"
# # =>
#
- # javascript_include_tag :defaults
- # # =>
- # #
- # #
- #
- # Note: The application.js file is only referenced if it exists
- #
- # You can also include all JavaScripts in the +javascripts+ directory using :all as the source:
- #
- # javascript_include_tag :all
- # # =>
- # #
- # #
- # #
- # #
- #
- # Note that your defaults of choice will be included first, so they will be available to all subsequently
- # included files.
- #
- # If you want Rails to search in all the subdirectories under public/javascripts, you should
- # explicitly set :recursive:
- #
- # javascript_include_tag :all, :recursive => true
- #
- # == Caching multiple JavaScripts into one
- #
- # You can also cache multiple JavaScripts into one file, which requires less HTTP connections to download
- # and can better be compressed by gzip (leading to faster transfers). Caching will only happen if
- # config.perform_caching is set to true (which is the case by default for the Rails
- # production environment, but not for the development environment).
- #
- # # assuming config.perform_caching is false
- # javascript_include_tag :all, :cache => true
- # # =>
- # #
- # #
- # #
- # #
- #
- # # assuming config.perform_caching is true
- # javascript_include_tag :all, :cache => true
- # # =>
- #
- # # assuming config.perform_caching is false
- # javascript_include_tag "jquery", "cart", "checkout", :cache => "shop"
- # # =>
- # #
- # #
- #
- # # assuming config.perform_caching is true
- # javascript_include_tag "jquery", "cart", "checkout", :cache => "shop"
- # # =>
- #
- # The :recursive option is also available for caching:
- #
- # javascript_include_tag :all, :cache => true, :recursive => true
def javascript_include_tag(*sources)
- @javascript_include ||= JavascriptIncludeTag.new(config, asset_paths)
- @javascript_include.include_tag(*sources)
+ options = sources.extract_options!.stringify_keys
+ sources.dup.map { |source|
+ tag_options = {
+ "src" => path_to_javascript(source)
+ }.merge(options)
+ content_tag(:script, "", tag_options)
+ }.join("\n").html_safe
end
end
end
diff --git a/actionpack/lib/action_view/helpers/asset_tag_helpers/stylesheet_tag_helpers.rb b/actionpack/lib/action_view/helpers/asset_tag_helpers/stylesheet_tag_helpers.rb
index e3a86a888985f..bf59f8e81a2ef 100644
--- a/actionpack/lib/action_view/helpers/asset_tag_helpers/stylesheet_tag_helpers.rb
+++ b/actionpack/lib/action_view/helpers/asset_tag_helpers/stylesheet_tag_helpers.rb
@@ -1,53 +1,11 @@
require 'active_support/core_ext/file'
-require 'action_view/helpers/asset_tag_helpers/asset_include_tag'
module ActionView
module Helpers
module AssetTagHelper
-
- class StylesheetIncludeTag < AssetIncludeTag #:nodoc:
- def asset_name
- 'stylesheet'
- end
-
- def extension
- 'css'
- end
-
- def asset_tag(source, options)
- # We force the :request protocol here to avoid a double-download bug in IE7 and IE8
- tag("link", { "rel" => "stylesheet", "media" => "screen", "href" => path_to_asset(source, :protocol => :request) }.merge(options))
- end
-
- def custom_dir
- config.stylesheets_dir
- end
- end
-
-
module StylesheetTagHelpers
extend ActiveSupport::Concern
- module ClassMethods
- # Register one or more stylesheet files to be included when symbol
- # is passed to stylesheet_link_tag. This method is typically intended
- # to be called from plugin initialization to register stylesheet files
- # that the plugin installed in public/stylesheets.
- #
- # ActionView::Helpers::AssetTagHelper.register_stylesheet_expansion :monkey => ["head", "body", "tail"]
- #
- # stylesheet_link_tag :monkey # =>
- #
- #
- #
- def register_stylesheet_expansion(expansions)
- style_expansions = StylesheetIncludeTag.expansions
- expansions.each do |key, values|
- style_expansions[key] = (style_expansions[key] || []) | Array(values)
- end
- end
- end
-
# Computes the path to a stylesheet asset in the public stylesheets directory.
# If the +source+ filename has no extension, .css will be appended (except for explicit URIs).
# Full paths from the document root will be passed through.
@@ -96,56 +54,18 @@ def stylesheet_url(source)
#
#
#
- # You can also include all styles in the stylesheets directory using :all as the source:
- #
- # stylesheet_link_tag :all # =>
- #
- #
- #
- #
- # If you want Rails to search in all the subdirectories under stylesheets, you should explicitly set :recursive:
- #
- # stylesheet_link_tag :all, :recursive => true
- #
- # == Caching multiple stylesheets into one
- #
- # You can also cache multiple stylesheets into one file, which requires less HTTP connections and can better be
- # compressed by gzip (leading to faster transfers). Caching will only happen if +config.perform_caching+
- # is set to true (which is the case by default for the Rails production environment, but not for the development
- # environment). Examples:
- #
- # stylesheet_link_tag :all, :cache => true # when config.perform_caching is false =>
- #
- #
- #
- #
- # stylesheet_link_tag :all, :cache => true # when config.perform_caching is true =>
- #
- #
- # stylesheet_link_tag "shop", "cart", "checkout", :cache => "payment" # when config.perform_caching is false =>
- #
- #
- #
- #
- # stylesheet_link_tag "shop", "cart", "checkout", :cache => "payment" # when config.perform_caching is true =>
- #
- #
- # The :recursive option is also available for caching:
- #
- # stylesheet_link_tag :all, :cache => true, :recursive => true
- #
- # To force concatenation (even in development mode) set :concat to true. This is useful if
- # you have too many stylesheets for IE to load.
- #
- # stylesheet_link_tag :all, :concat => true
- #
def stylesheet_link_tag(*sources)
- @stylesheet_include ||= StylesheetIncludeTag.new(config, asset_paths)
- @stylesheet_include.include_tag(*sources)
+ options = sources.extract_options!.stringify_keys
+ sources.uniq.map { |source|
+ tag_options = {
+ "rel" => "stylesheet",
+ "media" => "screen",
+ "href" => path_to_stylesheet(source)
+ }.merge(options)
+ tag(:link, tag_options)
+ }.join("\n").html_safe
end
-
end
-
end
end
end
diff --git a/actionpack/lib/action_view/railtie.rb b/actionpack/lib/action_view/railtie.rb
index 2d36deaa781c1..aff85753e52ff 100644
--- a/actionpack/lib/action_view/railtie.rb
+++ b/actionpack/lib/action_view/railtie.rb
@@ -30,18 +30,6 @@ class Railtie < Rails::Railtie
end
end
- initializer "action_view.javascript_expansions" do |app|
- ActiveSupport.on_load(:action_view) do
- ActionView::Helpers::AssetTagHelper.register_javascript_expansion(
- app.config.action_view.delete(:javascript_expansions)
- )
-
- ActionView::Helpers::AssetTagHelper.register_stylesheet_expansion(
- app.config.action_view.delete(:stylesheet_expansions)
- )
- end
- end
-
initializer "action_view.set_configs" do |app|
ActiveSupport.on_load(:action_view) do
app.config.action_view.each do |k,v|
diff --git a/actionpack/test/template/asset_tag_helper_test.rb b/actionpack/test/template/asset_tag_helper_test.rb
index a04694714d6e2..754622c883f28 100644
--- a/actionpack/test/template/asset_tag_helper_test.rb
+++ b/actionpack/test/template/asset_tag_helper_test.rb
@@ -45,8 +45,6 @@ def host_with_port() 'localhost' end
end.new
@controller.request = @request
-
- ActionView::Helpers::AssetTagHelper::register_javascript_expansion :defaults => ['prototype', 'effects', 'dragdrop', 'controls', 'rails']
end
def url_for(*args)
@@ -54,11 +52,7 @@ def url_for(*args)
end
def teardown
- config.perform_caching = false
ENV.delete('RAILS_ASSET_ID')
-
- JavascriptIncludeTag.expansions.clear
- StylesheetIncludeTag.expansions.clear
end
AutoDiscoveryToTag = {
@@ -105,12 +99,6 @@ def teardown
%(javascript_include_tag("bank.js")) => %(),
%(javascript_include_tag("bank", :lang => "vbscript")) => %(),
%(javascript_include_tag("common.javascript", "/elsewhere/cools")) => %(\n),
- %(javascript_include_tag(:defaults)) => %(\n\n\n\n\n),
- %(javascript_include_tag(:all)) => %(\n\n\n\n\n\n\n),
- %(javascript_include_tag(:all, :recursive => true)) => %(\n\n\n\n\n\n\n\n),
- %(javascript_include_tag(:defaults, "bank")) => %(\n\n\n\n\n\n),
- %(javascript_include_tag(:defaults, "application")) => %(\n\n\n\n\n),
- %(javascript_include_tag("bank", :defaults)) => %(\n\n\n\n\n\n),
%(javascript_include_tag("http://example.com/all")) => %(),
%(javascript_include_tag("http://example.com/all.js")) => %(),
@@ -151,9 +139,6 @@ def teardown
%(stylesheet_link_tag("/elsewhere/file")) => %(),
%(stylesheet_link_tag("subdir/subdir")) => %(),
%(stylesheet_link_tag("bank", :media => "all")) => %(),
- %(stylesheet_link_tag(:all)) => %(\n\n),
- %(stylesheet_link_tag(:all, :recursive => true)) => %(\n\n\n),
- %(stylesheet_link_tag(:all, :media => "all")) => %(\n\n),
%(stylesheet_link_tag("random.styles", "/elsewhere/file")) => %(\n),
%(stylesheet_link_tag("http://www.example.com/styles/style")) => %(),
@@ -338,94 +323,15 @@ def test_javascript_include_tag_with_missing_source
javascript_include_tag('missing_security_guard')
}
- assert_nothing_raised {
- javascript_include_tag(:defaults, 'missing_security_guard')
- }
-
assert_nothing_raised {
javascript_include_tag('http://example.com/css/missing_security_guard')
}
end
- def test_javascript_include_tag_with_given_asset_id
- ENV["RAILS_ASSET_ID"] = "1"
- assert_dom_equal(%(\n\n\n\n\n), javascript_include_tag(:defaults))
- end
-
def test_javascript_include_tag_is_html_safe
- assert javascript_include_tag(:defaults).html_safe?
assert javascript_include_tag("prototype").html_safe?
end
- def test_custom_javascript_expansions
- ENV["RAILS_ASSET_ID"] = ""
- ActionView::Helpers::AssetTagHelper::register_javascript_expansion :robbery => ["bank", "robber"]
- assert_dom_equal %(\n\n\n), javascript_include_tag('controls', :robbery, 'effects')
- end
-
- def test_custom_javascript_expansions_return_unique_set
- ENV["RAILS_ASSET_ID"] = ""
- ActionView::Helpers::AssetTagHelper::register_javascript_expansion :defaults => %w(prototype effects dragdrop controls rails application)
- assert_dom_equal %(\n\n\n\n\n), javascript_include_tag(:defaults)
- end
-
- def test_custom_javascript_expansions_and_defaults_puts_application_js_at_the_end
- ENV["RAILS_ASSET_ID"] = ""
- ActionView::Helpers::AssetTagHelper::register_javascript_expansion :robbery => ["bank", "robber"]
- assert_dom_equal %(\n\n\n\n\n\n\n), javascript_include_tag('controls',:defaults, :robbery, 'effects')
- end
-
- def test_javascript_include_tag_should_not_output_the_same_asset_twice
- ENV["RAILS_ASSET_ID"] = ""
- assert_dom_equal %(\n\n\n\n\n), javascript_include_tag('prototype', 'effects', :defaults)
- end
-
- def test_javascript_include_tag_should_not_output_the_same_expansion_twice
- ENV["RAILS_ASSET_ID"] = ""
- assert_dom_equal %(\n\n\n\n\n), javascript_include_tag(:defaults, :defaults)
- end
-
- def test_single_javascript_asset_keys_should_take_precedence_over_expansions
- ENV["RAILS_ASSET_ID"] = ""
- assert_dom_equal %(\n\n\n\n\n), javascript_include_tag('controls', :defaults, 'effects')
- assert_dom_equal %(\n\n\n\n\n), javascript_include_tag('controls', 'effects', :defaults)
- end
-
- def test_registering_javascript_expansions_merges_with_existing_expansions
- ENV["RAILS_ASSET_ID"] = ""
- ActionView::Helpers::AssetTagHelper::register_javascript_expansion :can_merge => ['bank']
- ActionView::Helpers::AssetTagHelper::register_javascript_expansion :can_merge => ['robber']
- ActionView::Helpers::AssetTagHelper::register_javascript_expansion :can_merge => ['bank']
- assert_dom_equal %(\n), javascript_include_tag(:can_merge)
- end
-
- def test_custom_javascript_expansions_with_undefined_symbol
- assert_raise(ArgumentError) { javascript_include_tag('first', :unknown, 'last') }
- end
-
- def test_custom_javascript_expansions_with_nil_value
- ActionView::Helpers::AssetTagHelper::register_javascript_expansion :monkey => nil
- assert_dom_equal %(\n), javascript_include_tag('first', :monkey, 'last')
- end
-
- def test_custom_javascript_expansions_with_empty_array_value
- ActionView::Helpers::AssetTagHelper::register_javascript_expansion :monkey => []
- assert_dom_equal %(\n), javascript_include_tag('first', :monkey, 'last')
- end
-
- def test_custom_javascript_and_stylesheet_expansion_with_same_name
- ENV["RAILS_ASSET_ID"] = ""
- ActionView::Helpers::AssetTagHelper::register_javascript_expansion :robbery => ["bank", "robber"]
- ActionView::Helpers::AssetTagHelper::register_stylesheet_expansion :robbery => ["money", "security"]
- assert_dom_equal %(\n\n\n), javascript_include_tag('controls', :robbery, 'effects')
- assert_dom_equal %(\n\n\n), stylesheet_link_tag('style', :robbery, 'print')
- end
-
- def test_reset_javascript_expansions
- JavascriptIncludeTag.expansions.clear
- assert_raise(ArgumentError) { javascript_include_tag(:defaults) }
- end
-
def test_all_javascript_expansion_not_include_application_js_if_not_exists
FileUtils.mv(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'application.js'),
File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'application.bak'))
@@ -478,57 +384,11 @@ def test_stylesheet_link_tag_escapes_options
assert_dom_equal %(), stylesheet_link_tag('/file', :media => '),
- javascript_include_tag(:all, :cache => true)
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
-
- assert_dom_equal(
- %(),
- javascript_include_tag(:all, :cache => "money")
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
-
- assert_dom_equal(
- %(),
- javascript_include_tag(:all, :cache => "/absolute/test")
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::ASSETS_DIR, 'absolute', 'test.js'))
-
- ensure
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::ASSETS_DIR, 'absolute'))
- end
-
- def test_caching_javascript_include_tag_when_caching_on_with_proc_asset_host
- ENV['RAILS_ASSET_ID'] = ''
- @controller.config.asset_host = Proc.new { |source| "http://a#{source.length}.example.com" }
- config.perform_caching = true
-
- assert_equal '/javascripts/scripts.js'.length, 23
- assert_dom_equal(
- %(),
- javascript_include_tag(:all, :cache => 'scripts')
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'scripts.js'))
-
- ensure
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'scripts.js'))
- end
-
- def test_caching_javascript_include_tag_when_caching_on_with_2_argument_proc_asset_host
- ENV['RAILS_ASSET_ID'] = ''
- @controller.config.asset_host = Proc.new { |source, request|
- if request.ssl?
- "#{request.protocol}#{request.host_with_port}"
- else
- "#{request.protocol}assets#{source.length}.example.com"
- end
- }
- config.perform_caching = true
-
- assert_equal '/javascripts/vanilla.js'.length, 23
- assert_dom_equal(
- %(),
- javascript_include_tag(:all, :cache => 'vanilla')
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'vanilla.js'))
-
- class << @controller.request
- def protocol() 'https://' end
- def ssl?() true end
- end
-
- assert_equal '/javascripts/secure.js'.length, 22
- assert_dom_equal(
- %(),
- javascript_include_tag(:all, :cache => 'secure')
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'secure.js'))
-
- ensure
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'vanilla.js'))
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'secure.js'))
- end
-
- def test_caching_javascript_include_tag_when_caching_on_with_2_argument_object_asset_host
- ENV['RAILS_ASSET_ID'] = ''
- @controller.config.asset_host = Class.new do
- def call(source, request)
- if request.ssl?
- "#{request.protocol}#{request.host_with_port}"
- else
- "#{request.protocol}assets#{source.length}.example.com"
- end
- end
- end.new
-
- config.perform_caching = true
-
- assert_equal '/javascripts/vanilla.js'.length, 23
- assert_dom_equal(
- %(),
- javascript_include_tag(:all, :cache => 'vanilla')
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'vanilla.js'))
-
- class << @controller.request
- def protocol() 'https://' end
- def ssl?() true end
- end
-
- assert_equal '/javascripts/secure.js'.length, 22
- assert_dom_equal(
- %(),
- javascript_include_tag(:all, :cache => 'secure')
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'secure.js'))
-
- ensure
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'vanilla.js'))
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'secure.js'))
- end
-
- def test_caching_javascript_include_tag_when_caching_on_and_using_subdirectory
- ENV["RAILS_ASSET_ID"] = ""
- @controller.config.asset_host = 'http://a%d.example.com'
- config.perform_caching = true
-
- number = Zlib.crc32('/javascripts/cache/money.js') % 4
- assert_dom_equal(
- %(),
- javascript_include_tag(:all, :cache => "cache/money")
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'cache', 'money.js'))
- ensure
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'cache', 'money.js'))
- end
-
- def test_caching_javascript_include_tag_with_all_and_recursive_puts_defaults_at_the_start_of_the_file
- ENV["RAILS_ASSET_ID"] = ""
- @controller.config.asset_host = 'http://a0.example.com'
- config.perform_caching = true
-
- assert_dom_equal(
- %(),
- javascript_include_tag(:all, :cache => "combined", :recursive => true)
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'combined.js'))
-
- assert_equal(
- %(// prototype js\n\n// effects js\n\n// dragdrop js\n\n// controls js\n\n// bank js\n\n// robber js\n\n// subdir js\n\n\n// version.1.0 js\n\n// application js),
- IO.read(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'combined.js'))
- )
-
- ensure
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'combined.js'))
- end
-
- def test_caching_javascript_include_tag_with_all_puts_defaults_at_the_start_of_the_file
- ENV["RAILS_ASSET_ID"] = ""
- @controller.config.asset_host = 'http://a0.example.com'
- config.perform_caching = true
-
- assert_dom_equal(
- %(),
- javascript_include_tag(:all, :cache => "combined")
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'combined.js'))
-
- assert_equal(
- %(// prototype js\n\n// effects js\n\n// dragdrop js\n\n// controls js\n\n// bank js\n\n// robber js\n\n// version.1.0 js\n\n// application js),
- IO.read(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'combined.js'))
- )
-
- ensure
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'combined.js'))
- end
-
- def test_caching_javascript_include_tag_with_relative_url_root
- ENV["RAILS_ASSET_ID"] = ""
- @controller.config.relative_url_root = "/collaboration/hieraki"
- config.perform_caching = true
-
- assert_dom_equal(
- %(),
- javascript_include_tag(:all, :cache => true)
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
-
- assert_dom_equal(
- %(),
- javascript_include_tag(:all, :cache => "money")
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
-
- ensure
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
- end
-
- # Same as above, but with script_name
- def test_caching_javascript_include_tag_with_script_name
- ENV["RAILS_ASSET_ID"] = ""
- @request.script_name = "/collaboration/hieraki"
- config.perform_caching = true
-
- assert_dom_equal(
- %(),
- javascript_include_tag(:all, :cache => true)
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
-
- assert_dom_equal(
- %(),
- javascript_include_tag(:all, :cache => "money")
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
-
- ensure
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
- end
-
- def test_caching_javascript_include_tag_with_named_paths_and_relative_url_root_when_caching_off
- ENV["RAILS_ASSET_ID"] = ""
- @controller.config.relative_url_root = "/collaboration/hieraki"
- config.perform_caching = false
-
- assert_dom_equal(
- %(),
- javascript_include_tag('robber', :cache => true)
- )
-
- assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
-
- assert_dom_equal(
- %(),
- javascript_include_tag('robber', :cache => "money", :recursive => true)
- )
-
- assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
- end
-
- # Same as above, but with script_name
- def test_caching_javascript_include_tag_with_named_paths_and_script_name_when_caching_off
- ENV["RAILS_ASSET_ID"] = ""
- @request.script_name = "/collaboration/hieraki"
- config.perform_caching = false
-
- assert_dom_equal(
- %(),
- javascript_include_tag('robber', :cache => true)
- )
-
- assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
-
- assert_dom_equal(
- %(),
- javascript_include_tag('robber', :cache => "money", :recursive => true)
- )
-
- assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
- end
-
- def test_caching_javascript_include_tag_when_caching_off
- ENV["RAILS_ASSET_ID"] = ""
- config.perform_caching = false
-
- assert_dom_equal(
- %(\n\n\n\n\n\n\n),
- javascript_include_tag(:all, :cache => true)
- )
-
- assert_dom_equal(
- %(\n\n\n\n\n\n\n\n),
- javascript_include_tag(:all, :cache => true, :recursive => true)
- )
-
- assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
-
- assert_dom_equal(
- %(\n\n\n\n\n\n\n),
- javascript_include_tag(:all, :cache => "money")
- )
-
- assert_dom_equal(
- %(\n\n\n\n\n\n\n\n),
- javascript_include_tag(:all, :cache => "money", :recursive => true)
- )
-
- assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
- end
-
- def test_caching_javascript_include_tag_when_caching_on_and_missing_javascript_file
- ENV["RAILS_ASSET_ID"] = ""
- config.perform_caching = true
-
- assert_raise(Errno::ENOENT) {
- javascript_include_tag('bank', 'robber', 'missing_security_guard', :cache => true)
- }
-
- assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
-
- assert_raise(Errno::ENOENT) {
- javascript_include_tag('bank', 'robber', 'missing_security_guard', :cache => "money")
- }
-
- assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
- end
-
- def test_caching_javascript_include_tag_when_caching_on_and_javascript_file_is_uri
- ENV["RAILS_ASSET_ID"] = ""
- config.perform_caching = true
-
- assert_raise(Errno::ENOENT) {
- javascript_include_tag('bank', 'robber', 'https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.js', :cache => true)
- }
-
- assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
- end
-
- def test_caching_javascript_include_tag_when_caching_off_and_missing_javascript_file
- ENV["RAILS_ASSET_ID"] = ""
- config.perform_caching = false
-
- assert_raise(Errno::ENOENT) {
- javascript_include_tag('bank', 'robber', 'missing_security_guard', :cache => true)
- }
-
- assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
-
- assert_raise(Errno::ENOENT) {
- javascript_include_tag('bank', 'robber', 'missing_security_guard', :cache => "money")
- }
-
- assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
- end
-
- def test_caching_stylesheet_link_tag_when_caching_on
- ENV["RAILS_ASSET_ID"] = ""
- @controller.config.asset_host = 'a0.example.com'
- config.perform_caching = true
-
- assert_dom_equal(
- %(),
- stylesheet_link_tag(:all, :cache => true)
- )
-
- files_to_be_joined = Dir["#{ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR}/[^all]*.css"]
-
- expected_mtime = files_to_be_joined.map { |p| File.mtime(p) }.max
- assert_equal expected_mtime, File.mtime(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
-
- bytes_added_by_join = "\n\n".size * files_to_be_joined.size - "\n\n".size
- expected_size = files_to_be_joined.sum { |p| File.size(p) } + bytes_added_by_join
- assert_equal expected_size, File.size(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
-
- assert_dom_equal(
- %(),
- stylesheet_link_tag(:all, :cache => "money")
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
-
- assert_dom_equal(
- %(),
- stylesheet_link_tag(:all, :cache => "/absolute/test")
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::ASSETS_DIR, 'absolute', 'test.css'))
- ensure
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::ASSETS_DIR, 'absolute'))
- end
-
- def test_concat_stylesheet_link_tag_when_caching_off
- ENV["RAILS_ASSET_ID"] = ""
-
- assert_dom_equal(
- %(),
- stylesheet_link_tag(:all, :concat => true)
- )
-
- expected = Dir["#{ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR}/*.css"].map { |p| File.mtime(p) }.max
- assert_equal expected, File.mtime(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
-
- assert_dom_equal(
- %(),
- stylesheet_link_tag(:all, :concat => "money")
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
-
- assert_dom_equal(
- %(),
- stylesheet_link_tag(:all, :concat => "/absolute/test")
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::ASSETS_DIR, 'absolute', 'test.css'))
- ensure
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::ASSETS_DIR, 'absolute'))
- end
-
- def test_caching_stylesheet_link_tag_when_caching_on_and_missing_css_file
- ENV["RAILS_ASSET_ID"] = ""
- config.perform_caching = true
-
- assert_raise(Errno::ENOENT) {
- stylesheet_link_tag('bank', 'robber', 'missing_security_guard', :cache => true)
- }
-
- assert ! File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
-
- assert_raise(Errno::ENOENT) {
- stylesheet_link_tag('bank', 'robber', 'missing_security_guard', :cache => "money")
- }
-
- assert ! File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
-
- ensure
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
- end
-
- def test_caching_stylesheet_link_tag_when_caching_off_and_missing_css_file
- ENV["RAILS_ASSET_ID"] = ""
- config.perform_caching = false
-
- assert_raise(Errno::ENOENT) {
- stylesheet_link_tag('bank', 'robber', 'missing_security_guard', :cache => true)
- }
-
- assert ! File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
-
- assert_raise(Errno::ENOENT) {
- stylesheet_link_tag('bank', 'robber', 'missing_security_guard', :cache => "money")
- }
-
- assert ! File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
-
- ensure
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
- end
-
- def test_caching_stylesheet_link_tag_when_caching_on_with_proc_asset_host
- ENV["RAILS_ASSET_ID"] = ""
- @controller.config.asset_host = Proc.new { |source| "a#{source.length}.example.com" }
- config.perform_caching = true
-
- assert_equal '/stylesheets/styles.css'.length, 23
- assert_dom_equal(
- %(),
- stylesheet_link_tag(:all, :cache => 'styles')
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'styles.css'))
-
- ensure
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'styles.css'))
- end
-
- def test_caching_stylesheet_link_tag_with_relative_url_root
- ENV["RAILS_ASSET_ID"] = ""
- @controller.config.relative_url_root = "/collaboration/hieraki"
- config.perform_caching = true
-
- assert_dom_equal(
- %(),
- stylesheet_link_tag(:all, :cache => true)
- )
-
- files_to_be_joined = Dir["#{ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR}/[^all]*.css"]
-
- expected_mtime = files_to_be_joined.map { |p| File.mtime(p) }.max
- assert_equal expected_mtime, File.mtime(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
-
- assert_dom_equal(
- %(),
- stylesheet_link_tag(:all, :cache => "money")
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
- ensure
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
- end
-
- # Same as above, but with script_name
- def test_caching_stylesheet_link_tag_with_script_name
- ENV["RAILS_ASSET_ID"] = ""
- @request.script_name = "/collaboration/hieraki"
- config.perform_caching = true
-
- assert_dom_equal(
- %(),
- stylesheet_link_tag(:all, :cache => true)
- )
-
- files_to_be_joined = Dir["#{ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR}/[^all]*.css"]
-
- expected_mtime = files_to_be_joined.map { |p| File.mtime(p) }.max
- assert_equal expected_mtime, File.mtime(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
-
- assert_dom_equal(
- %(),
- stylesheet_link_tag(:all, :cache => "money")
- )
-
- assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
- ensure
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
- FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
- end
-
-
- def test_caching_stylesheet_link_tag_with_named_paths_and_relative_url_root_when_caching_off
- ENV["RAILS_ASSET_ID"] = ""
- @controller.config.relative_url_root = "/collaboration/hieraki"
- config.perform_caching = false
-
- assert_dom_equal(
- %(),
- stylesheet_link_tag('robber', :cache => true)
- )
-
- assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
-
- assert_dom_equal(
- %(),
- stylesheet_link_tag('robber', :cache => "money")
- )
-
- assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
- end
-
- # Same as above, but with script_name
- def test_caching_stylesheet_link_tag_with_named_paths_and_script_name_when_caching_off
- ENV["RAILS_ASSET_ID"] = ""
- @request.script_name = "/collaboration/hieraki"
- config.perform_caching = false
-
- assert_dom_equal(
- %(),
- stylesheet_link_tag('robber', :cache => true)
- )
-
- assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
-
- assert_dom_equal(
- %(),
- stylesheet_link_tag('robber', :cache => "money")
- )
-
- assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
- end
-
- def test_caching_stylesheet_include_tag_when_caching_off
- ENV["RAILS_ASSET_ID"] = ""
- config.perform_caching = false
-
- assert_dom_equal(
- %(\n\n),
- stylesheet_link_tag(:all, :cache => true)
- )
-
- assert_dom_equal(
- %(\n\n\n),
- stylesheet_link_tag(:all, :cache => true, :recursive => true)
- )
-
- assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
-
- assert_dom_equal(
- %(\n\n),
- stylesheet_link_tag(:all, :cache => "money")
- )
-
- assert_dom_equal(
- %(\n\n\n),
- stylesheet_link_tag(:all, :cache => "money", :recursive => true)
- )
-
- assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
- end
-
- def test_caching_stylesheet_include_tag_with_absolute_uri
- ENV["RAILS_ASSET_ID"] = ""
-
- assert_dom_equal(
- %(),
- stylesheet_link_tag("/foo/baz", :cache => true)
- )
-
- FileUtils.rm(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
- end
end
class AssetTagHelperNonVhostTest < ActionView::TestCase
@@ -1336,8 +586,6 @@ def setup
@request = Struct.new(:protocol).new("gopher://")
@controller.request = @request
-
- JavascriptIncludeTag.expansions.clear
end
def url_for(options)