From e44efac0865a66b0546e32b4c6f23605a98a5845 Mon Sep 17 00:00:00 2001 From: Ilya Grigorik Date: Thu, 4 Aug 2011 19:17:03 -0400 Subject: Clear out tmp/cache when assets:clean is invoked. Otherwise, if bad data is cached in tmp/clear then the next invocation of assets:precompile (or a regular incoming request) will pickup files from tmp without regenerating them from source. --- actionpack/lib/sprockets/assets.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 50278cffcd..0349b2865e 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -16,7 +16,7 @@ namespace :assets do end desc "Remove compiled assets" - task :clean => :environment do + task :clean => [:environment, 'tmp:cache:clear'] do assets = Rails.application.config.assets public_asset_path = Rails.public_path + assets.prefix rm_rf public_asset_path, :secure => true -- cgit v1.2.3 From ed5c6d254c9ef5d44a11159561fddde7a3033874 Mon Sep 17 00:00:00 2001 From: Ilya Grigorik Date: Thu, 4 Aug 2011 23:48:40 -0400 Subject: generate environment dependent asset digests If two different environments are configured to use the pipeline, but one has an extra step (such as compression) then without taking the environment into account you may end up serving wrong assets --- actionpack/lib/sprockets/railtie.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/railtie.rb b/actionpack/lib/sprockets/railtie.rb index c8438e6043..0c2eb5075b 100644 --- a/actionpack/lib/sprockets/railtie.rb +++ b/actionpack/lib/sprockets/railtie.rb @@ -20,6 +20,7 @@ module Sprockets app.assets = Sprockets::Environment.new(app.root.to_s) do |env| env.static_root = File.join(app.root.join('public'), config.assets.prefix) env.logger = ::Rails.logger + env.version = ::Rails.env + '-' + env.version if config.assets.cache_store != false env.cache = ActiveSupport::Cache.lookup_store(config.assets.cache_store) || ::Rails.cache -- cgit v1.2.3 From c0bfb5a63c926abcee8df26ed7b7598ef763463a Mon Sep 17 00:00:00 2001 From: Ilya Grigorik Date: Fri, 5 Aug 2011 22:55:56 -0700 Subject: use assets.version in asset checksum to allow user to easily override --- actionpack/lib/sprockets/railtie.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/railtie.rb b/actionpack/lib/sprockets/railtie.rb index 0c2eb5075b..e1db3c52a3 100644 --- a/actionpack/lib/sprockets/railtie.rb +++ b/actionpack/lib/sprockets/railtie.rb @@ -20,7 +20,7 @@ module Sprockets app.assets = Sprockets::Environment.new(app.root.to_s) do |env| env.static_root = File.join(app.root.join('public'), config.assets.prefix) env.logger = ::Rails.logger - env.version = ::Rails.env + '-' + env.version + env.version = ::Rails.env + '-' + config.assets.version if config.assets.cache_store != false env.cache = ActiveSupport::Cache.lookup_store(config.assets.cache_store) || ::Rails.cache -- cgit v1.2.3 From 8360d7196515ba66fe5d535f6dbeeea5394e966a Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Mon, 8 Aug 2011 12:49:10 -0300 Subject: Initialize config.assets.version the same way it's done in Sprockets --- actionpack/lib/sprockets/railtie.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/railtie.rb b/actionpack/lib/sprockets/railtie.rb index e1db3c52a3..0a2c8c1ea3 100644 --- a/actionpack/lib/sprockets/railtie.rb +++ b/actionpack/lib/sprockets/railtie.rb @@ -20,7 +20,7 @@ module Sprockets app.assets = Sprockets::Environment.new(app.root.to_s) do |env| env.static_root = File.join(app.root.join('public'), config.assets.prefix) env.logger = ::Rails.logger - env.version = ::Rails.env + '-' + config.assets.version + env.version = ::Rails.env + "#{'-' + config.assets.version if config.assets.version.present?}" if config.assets.cache_store != false env.cache = ActiveSupport::Cache.lookup_store(config.assets.cache_store) || ::Rails.cache -- cgit v1.2.3 From d9b690f71f82b52eb7fd4ff01c9d63b6356a035e Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Tue, 9 Aug 2011 20:40:52 -0300 Subject: rake assets:precompile defaults to production env --- actionpack/lib/sprockets/assets.rake | 1 + 1 file changed, 1 insertion(+) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 0349b2865e..3bad86413f 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -2,6 +2,7 @@ namespace :assets do # Ensures the RAILS_GROUPS environment variable is set task :ensure_env do ENV["RAILS_GROUPS"] ||= "assets" + ENV["RAILS_ENV"] ||= "production" end desc "Compile all the assets named in config.assets.precompile" -- cgit v1.2.3 From bb4f687bc670932f93a7befe07bfb2859a61411a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Tue, 9 Aug 2011 16:49:38 -0700 Subject: Remove lame comment. --- actionpack/lib/sprockets/assets.rake | 1 - 1 file changed, 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 3bad86413f..01132d218f 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -1,5 +1,4 @@ namespace :assets do - # Ensures the RAILS_GROUPS environment variable is set task :ensure_env do ENV["RAILS_GROUPS"] ||= "assets" ENV["RAILS_ENV"] ||= "production" -- cgit v1.2.3 From 652ab436db674a112bcbc72d8c73e21f2ced512a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sun, 14 Aug 2011 10:52:46 -0700 Subject: Ensure changing RAILS_GROUPS will load the proper dependencies. --- actionpack/lib/sprockets/assets.rake | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 01132d218f..50af88c44f 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -1,18 +1,21 @@ namespace :assets do - task :ensure_env do - ENV["RAILS_GROUPS"] ||= "assets" - ENV["RAILS_ENV"] ||= "production" - end - desc "Compile all the assets named in config.assets.precompile" - task :precompile => :ensure_env do - Rake::Task["environment"].invoke - Sprockets::Helpers::RailsHelper + task :precompile do + # We need to do this dance because RAILS_GROUPS is used + # too early in the boot process and changing here is already too late. + if ENV["RAILS_GROUPS"].to_s.empty? + ENV["RAILS_GROUPS"] = "assets" + ENV["RAILS_ENV"] ||= "production" + Kernel.exec $0, *ARGV + else + Rake::Task["environment"].invoke + Sprockets::Helpers::RailsHelper - assets = Rails.application.config.assets.precompile - # Always perform caching so that asset_path appends the timestamps to file references. - Rails.application.config.action_controller.perform_caching = true - Rails.application.assets.precompile(*assets) + assets = Rails.application.config.assets.precompile + # Always perform caching so that asset_path appends the timestamps to file references. + Rails.application.config.action_controller.perform_caching = true + Rails.application.assets.precompile(*assets) + end end desc "Remove compiled assets" @@ -21,4 +24,4 @@ namespace :assets do public_asset_path = Rails.public_path + assets.prefix rm_rf public_asset_path, :secure => true end -end +end \ No newline at end of file -- cgit v1.2.3 From 4ca605b71b0482c34c735b63b94ed001786c7125 Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Mon, 15 Aug 2011 15:31:47 -0300 Subject: rake assets:precompile executes in production environment as default if RAILS_ENV was not provided --- actionpack/lib/sprockets/assets.rake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 50af88c44f..9b2646b0a2 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -3,9 +3,9 @@ namespace :assets do task :precompile do # We need to do this dance because RAILS_GROUPS is used # too early in the boot process and changing here is already too late. - if ENV["RAILS_GROUPS"].to_s.empty? - ENV["RAILS_GROUPS"] = "assets" - ENV["RAILS_ENV"] ||= "production" + if ENV["RAILS_GROUPS"].to_s.empty? || ENV["RAILS_ENV"].to_s.empty? + ENV["RAILS_GROUPS"] ||= "assets" + ENV["RAILS_ENV"] ||= "production" Kernel.exec $0, *ARGV else Rake::Task["environment"].invoke @@ -24,4 +24,4 @@ namespace :assets do public_asset_path = Rails.public_path + assets.prefix rm_rf public_asset_path, :secure => true end -end \ No newline at end of file +end -- cgit v1.2.3 From 590239156714c03ad525b2248a11a3f34da3aa6a Mon Sep 17 00:00:00 2001 From: Jon Leighton Date: Tue, 16 Aug 2011 16:37:56 +0100 Subject: Fix assets tests in railties --- actionpack/lib/sprockets/assets.rake | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 9b2646b0a2..4cf5caab91 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -9,7 +9,9 @@ namespace :assets do Kernel.exec $0, *ARGV else Rake::Task["environment"].invoke - Sprockets::Helpers::RailsHelper + + # Ensure that action view is loaded and the appropriate sprockets hooks get executed + ActionView::Base assets = Rails.application.config.assets.precompile # Always perform caching so that asset_path appends the timestamps to file references. -- cgit v1.2.3 From 7223f10acda3d5683e6de817bc7131ca109f3f28 Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Thu, 18 Aug 2011 14:59:27 -0500 Subject: Debug assets by default in development and test environments --- actionpack/lib/sprockets/helpers/rails_helper.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index ec3d36d5ad..a65c5992ca 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -70,8 +70,8 @@ module Sprockets private def debug_assets? - params[:debug_assets] == '1' || - params[:debug_assets] == 'true' + Rails.env.development? || Rails.env.test? || + params[:debug_assets] == '1' || params[:debug_assets] == 'true' rescue NoMethodError false end -- cgit v1.2.3 From 63d3809e31cc9c0ed3b2e30617310407ae614fd4 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Sun, 21 Aug 2011 16:42:06 -0500 Subject: Fix sprockets warnings Fixes #2598 --- actionpack/lib/sprockets/assets.rake | 9 ++++++--- actionpack/lib/sprockets/helpers/rails_helper.rb | 13 ++++++++++++- actionpack/lib/sprockets/railtie.rb | 5 ++--- 3 files changed, 20 insertions(+), 7 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 4cf5caab91..acf2f256c2 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -13,17 +13,20 @@ namespace :assets do # Ensure that action view is loaded and the appropriate sprockets hooks get executed ActionView::Base - assets = Rails.application.config.assets.precompile # Always perform caching so that asset_path appends the timestamps to file references. Rails.application.config.action_controller.perform_caching = true + + config = Rails.application.config + assets = config.assets.precompile.dup + assets << {:to => File.join(Rails.public_path, config.assets.prefix)} Rails.application.assets.precompile(*assets) end end desc "Remove compiled assets" task :clean => [:environment, 'tmp:cache:clear'] do - assets = Rails.application.config.assets - public_asset_path = Rails.public_path + assets.prefix + config = Rails.application.config + public_asset_path = File.join(Rails.public_path, config.assets.prefix) rm_rf public_asset_path, :secure => true end end diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index a65c5992ca..69306ef631 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -112,11 +112,22 @@ module Sprockets asset_environment[source] end + def digest_for(logical_path) + if asset = asset_environment[logical_path] + return asset.digest_path + end + + logical_path + end + def rewrite_asset_path(source, dir) if source[0] == ?/ source else - asset_environment.path(source, performing_caching?, dir) + source = digest_for(source) if performing_caching? + source = File.join(dir, source) + source = "/#{url}" unless source =~ /^\// + source end end diff --git a/actionpack/lib/sprockets/railtie.rb b/actionpack/lib/sprockets/railtie.rb index 0a2c8c1ea3..c21bf57935 100644 --- a/actionpack/lib/sprockets/railtie.rb +++ b/actionpack/lib/sprockets/railtie.rb @@ -18,9 +18,8 @@ module Sprockets require 'sprockets' app.assets = Sprockets::Environment.new(app.root.to_s) do |env| - env.static_root = File.join(app.root.join('public'), config.assets.prefix) - env.logger = ::Rails.logger - env.version = ::Rails.env + "#{'-' + config.assets.version if config.assets.version.present?}" + env.logger = ::Rails.logger + env.version = ::Rails.env + "-#{config.assets.version}" if config.assets.cache_store != false env.cache = ActiveSupport::Cache.lookup_store(config.assets.cache_store) || ::Rails.cache -- cgit v1.2.3 From 18b2223b3290c4b3daa310edfc06b4d51161c312 Mon Sep 17 00:00:00 2001 From: "Andrey A.I. Sitnik" Date: Mon, 22 Aug 2011 09:36:36 +1100 Subject: Allow to debug assets by config.assets.debug --- actionpack/lib/sprockets/helpers/rails_helper.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 69306ef631..38df9cbf6e 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -70,10 +70,12 @@ module Sprockets private def debug_assets? - Rails.env.development? || Rails.env.test? || - params[:debug_assets] == '1' || params[:debug_assets] == 'true' - rescue NoMethodError - false + begin + params[:debug_assets] == '1' || + params[:debug_assets] == 'true' + rescue NoMethodError + false + end || Rails.application.config.assets.debug end # Override to specify an alternative prefix for asset path generation. -- cgit v1.2.3 From db181bddb646ff22c85218072ba5c69ca680dabd Mon Sep 17 00:00:00 2001 From: Daniel Schierbeck Date: Mon, 22 Aug 2011 16:50:33 +0200 Subject: Refactor Sprockets::Helpers::RailsHelper#performing_caching? No need for them lines to get so long! Also, move that comment into the method body where it belongs! --- actionpack/lib/sprockets/helpers/rails_helper.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 69306ef631..cb01532449 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -139,9 +139,14 @@ module Sprockets end end - # When included in Sprockets::Context, we need to ask the top-level config as the controller is not available def performing_caching? - config.action_controller.present? ? config.action_controller.perform_caching : config.perform_caching + # When included in Sprockets::Context, we need to ask the + # top-level config as the controller is not available. + if config.action_controller.present? + config.action_controller.perform_caching + else + config.perform_caching + end end end end -- cgit v1.2.3 From e1f11ff37f79d72b3afd5b718529186f2bc1417f Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Mon, 22 Aug 2011 11:12:54 -0500 Subject: Fix Sprockets rewrite_asset_path --- actionpack/lib/sprockets/helpers/rails_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index cb01532449..c239af77bc 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -126,7 +126,7 @@ module Sprockets else source = digest_for(source) if performing_caching? source = File.join(dir, source) - source = "/#{url}" unless source =~ /^\// + source = "/#{source}" unless source =~ /^\// source end end -- cgit v1.2.3 From d133fd6d290a4812a17cc58c0d7e5cd3895e23f6 Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Tue, 23 Aug 2011 21:36:21 -0500 Subject: Debug assets shouldn't ignore media type for stylesheets. Closes #2625 --- actionpack/lib/sprockets/helpers/rails_helper.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 7200ab1ddd..051624d05e 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -43,17 +43,18 @@ module Sprockets options = sources.extract_options! debug = options.key?(:debug) ? options.delete(:debug) : debug_assets? body = options.key?(:body) ? options.delete(:body) : false + media = options.key?(:media) ? options.delete(:media) : "screen" sources.collect do |source| if debug && asset = asset_paths.asset_for(source, 'css') asset.to_a.map { |dep| - stylesheet_link_tag(dep, :debug => false, :body => true) + stylesheet_link_tag(dep, :media => media, :debug => false, :body => true) }.join("\n").html_safe else tag_options = { 'rel' => "stylesheet", 'type' => "text/css", - 'media' => "screen", + 'media' => media, 'href' => asset_path(source, 'css', body, :request) }.merge(options.stringify_keys) -- cgit v1.2.3 From 13dd7758cedf6152835c4c72b69b1fe631a60733 Mon Sep 17 00:00:00 2001 From: Damien Mathieu <42@dmathieu.com> Date: Tue, 23 Aug 2011 11:02:44 +0200 Subject: remove useless rescue params is a method, defined in every controller, which always returns a hash. If it raises a NoMethodError, it means there's a bug somewhere else, which we want to know about. --- actionpack/lib/sprockets/helpers/rails_helper.rb | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 7200ab1ddd..4fb8d0af37 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -70,12 +70,9 @@ module Sprockets private def debug_assets? - begin - params[:debug_assets] == '1' || - params[:debug_assets] == 'true' - rescue NoMethodError - false - end || Rails.application.config.assets.debug + params[:debug_assets] == '1' || + params[:debug_assets] == 'true' || + Rails.application.config.assets.debug end # Override to specify an alternative prefix for asset path generation. -- cgit v1.2.3 From 827cdae6fb5e21056b68ab8a89047ae82738871f Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Mon, 22 Aug 2011 23:19:25 -0500 Subject: Add config.allow_debugging option to determine if the debug_assets query param can be passed by user --- actionpack/lib/sprockets/helpers/rails_helper.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 4fb8d0af37..50a8db4000 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -70,9 +70,10 @@ module Sprockets private def debug_assets? - params[:debug_assets] == '1' || - params[:debug_assets] == 'true' || - Rails.application.config.assets.debug + Rails.application.config.assets.allow_debugging && + (Rails.application.config.assets.debug || + params[:debug_assets] == '1' || + params[:debug_assets] == 'true') end # Override to specify an alternative prefix for asset path generation. -- cgit v1.2.3 From 5493d22419913c279a8baf38a10ffe6a9782c274 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Wed, 24 Aug 2011 10:54:01 -0500 Subject: Bring in sprockets precompile task --- actionpack/lib/sprockets/assets.rake | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index acf2f256c2..7594ee4296 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -17,9 +17,32 @@ namespace :assets do Rails.application.config.action_controller.perform_caching = true config = Rails.application.config - assets = config.assets.precompile.dup - assets << {:to => File.join(Rails.public_path, config.assets.prefix)} - Rails.application.assets.precompile(*assets) + env = Rails.application.assets + target = Rails.root.join("public#{config.assets.prefix}") + + if env.respond_to?(:each_logical_path) + config.assets.precompile.each do |path| + env.each_logical_path do |logical_path| + if path.is_a?(Regexp) + next unless path.match(logical_path) + else + next unless File.fnmatch(path.to_s, logical_path) + end + + if asset = env.find_asset(logical_path) + filename = target.join(asset.digest_path) + mkdir_p filename.dirname + asset.write_to(filename) + asset.write_to("#{filename}.gz") if filename.to_s =~ /\.(css|js)$/ + end + end + end + else + # TODO: Remove this once we're depending on sprockets beta 15 + assets = config.assets.precompile.dup + assets << {:to => target} + env.precompile(*assets) + end end end -- cgit v1.2.3 From c5a52850b3e2d0d1823f36d8d3afd9dc849cfddd Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Wed, 24 Aug 2011 15:40:10 -0500 Subject: Remove redundant join and call to html_safe --- actionpack/lib/sprockets/helpers/rails_helper.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index c50b0300d5..93ea7206a1 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -27,7 +27,7 @@ module Sprockets if debug && asset = asset_paths.asset_for(source, 'js') asset.to_a.map { |dep| javascript_include_tag(dep, :debug => false, :body => true) - }.join("\n").html_safe + } else tag_options = { 'type' => "text/javascript", @@ -49,7 +49,7 @@ module Sprockets if debug && asset = asset_paths.asset_for(source, 'css') asset.to_a.map { |dep| stylesheet_link_tag(dep, :media => media, :debug => false, :body => true) - }.join("\n").html_safe + } else tag_options = { 'rel' => "stylesheet", -- cgit v1.2.3 From e0db9cb17d37dfa9edb1d3ff86095c696b8f002a Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Wed, 24 Aug 2011 15:54:47 -0500 Subject: Use super in javascript_include_tag and stylesheet_link_tag instead of generate tags manually --- actionpack/lib/sprockets/helpers/rails_helper.rb | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 93ea7206a1..931d7a93a4 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -29,12 +29,7 @@ module Sprockets javascript_include_tag(dep, :debug => false, :body => true) } else - tag_options = { - 'type' => "text/javascript", - 'src' => asset_path(source, 'js', body) - }.merge(options.stringify_keys) - - content_tag 'script', "", tag_options + super(source.to_s, { 'src' => asset_path(source, 'js', body) }.merge!(options.stringify_keys)) end end.join("\n").html_safe end @@ -51,14 +46,7 @@ module Sprockets stylesheet_link_tag(dep, :media => media, :debug => false, :body => true) } else - tag_options = { - 'rel' => "stylesheet", - 'type' => "text/css", - 'media' => media, - 'href' => asset_path(source, 'css', body, :request) - }.merge(options.stringify_keys) - - tag 'link', tag_options + super(source.to_s, { 'href' => asset_path(source, 'css', body, :request), 'media' => media }.merge!(options.stringify_keys)) end end.join("\n").html_safe end -- cgit v1.2.3 From 23b5c5522160928005b0aa949b3f9a894e2618aa Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Wed, 24 Aug 2011 16:01:06 -0500 Subject: Preserve stylesheet_link_tag and javascript_include_tag options on debug --- actionpack/lib/sprockets/helpers/rails_helper.rb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 931d7a93a4..53cc5ec019 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -26,7 +26,7 @@ module Sprockets sources.collect do |source| if debug && asset = asset_paths.asset_for(source, 'js') asset.to_a.map { |dep| - javascript_include_tag(dep, :debug => false, :body => true) + javascript_include_tag(dep, options.stringify_keys.merge!({ :debug => false, :body => true })) } else super(source.to_s, { 'src' => asset_path(source, 'js', body) }.merge!(options.stringify_keys)) @@ -38,15 +38,14 @@ module Sprockets options = sources.extract_options! debug = options.key?(:debug) ? options.delete(:debug) : debug_assets? body = options.key?(:body) ? options.delete(:body) : false - media = options.key?(:media) ? options.delete(:media) : "screen" sources.collect do |source| if debug && asset = asset_paths.asset_for(source, 'css') asset.to_a.map { |dep| - stylesheet_link_tag(dep, :media => media, :debug => false, :body => true) + stylesheet_link_tag(dep, options.stringify_keys.merge!({ :debug => false, :body => true })) } else - super(source.to_s, { 'href' => asset_path(source, 'css', body, :request), 'media' => media }.merge!(options.stringify_keys)) + super(source.to_s, { 'href' => asset_path(source, 'css', body, :request) }.merge!(options.stringify_keys)) end end.join("\n").html_safe end -- cgit v1.2.3 From b59aa358bb311d3d06c5df856a1d57124b857d5a Mon Sep 17 00:00:00 2001 From: Daniel Schierbeck Date: Thu, 25 Aug 2011 12:36:11 +0200 Subject: Make Sprockets::Helpers::RailsHelper#debug_assets? more readable --- actionpack/lib/sprockets/helpers/rails_helper.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 53cc5ec019..bc1ab3c52a 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -58,10 +58,10 @@ module Sprockets private def debug_assets? - Rails.application.config.assets.allow_debugging && - (Rails.application.config.assets.debug || - params[:debug_assets] == '1' || - params[:debug_assets] == 'true') + config = Rails.application.config.assets + param = params[:debug_assets] + + config.allow_debugging && (config.debug || param == '1' || param == 'true') end # Override to specify an alternative prefix for asset path generation. -- cgit v1.2.3 From 8724f00cbd3ed7d244d5f2f498b4d5e08d963a29 Mon Sep 17 00:00:00 2001 From: Daniel Schierbeck Date: Thu, 25 Aug 2011 20:39:18 +0200 Subject: Don't require a specific value for the ?debug flag Previously, only "1" and "true" were accepted. This change makes any value, or no value at all, have the same effect. --- actionpack/lib/sprockets/helpers/rails_helper.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index bc1ab3c52a..a69cc8a29e 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -59,9 +59,7 @@ module Sprockets private def debug_assets? config = Rails.application.config.assets - param = params[:debug_assets] - - config.allow_debugging && (config.debug || param == '1' || param == 'true') + config.allow_debugging && (config.debug || params[:debug_assets]) end # Override to specify an alternative prefix for asset path generation. -- cgit v1.2.3 From f5472a3898d0a06edbc3a82b437de9989cf531ff Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Thu, 25 Aug 2011 15:54:18 -0500 Subject: Removing redundant stringify_keys in Sprockets helpers --- actionpack/lib/sprockets/helpers/rails_helper.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index bc1ab3c52a..4e228d1291 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -26,10 +26,10 @@ module Sprockets sources.collect do |source| if debug && asset = asset_paths.asset_for(source, 'js') asset.to_a.map { |dep| - javascript_include_tag(dep, options.stringify_keys.merge!({ :debug => false, :body => true })) + javascript_include_tag(dep, options.merge({ :debug => false, :body => true })) } else - super(source.to_s, { 'src' => asset_path(source, 'js', body) }.merge!(options.stringify_keys)) + super(source.to_s, { :src => asset_path(source, 'js', body) }.merge!(options)) end end.join("\n").html_safe end @@ -42,10 +42,10 @@ module Sprockets sources.collect do |source| if debug && asset = asset_paths.asset_for(source, 'css') asset.to_a.map { |dep| - stylesheet_link_tag(dep, options.stringify_keys.merge!({ :debug => false, :body => true })) + stylesheet_link_tag(dep, options.merge({ :debug => false, :body => true })) } else - super(source.to_s, { 'href' => asset_path(source, 'css', body, :request) }.merge!(options.stringify_keys)) + super(source.to_s, { :href => asset_path(source, 'css', body, :request) }.merge!(options)) end end.join("\n").html_safe end -- cgit v1.2.3 From 381904d26b601c89e2a8496612a7c76db8ae9359 Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Sun, 28 Aug 2011 19:00:58 -0500 Subject: Avoid extra recursive call in Sprockets helpers --- actionpack/lib/sprockets/helpers/rails_helper.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 7ad4d30d9e..7a2bf8bef6 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -26,7 +26,7 @@ module Sprockets sources.collect do |source| if debug && asset = asset_paths.asset_for(source, 'js') asset.to_a.map { |dep| - javascript_include_tag(dep, options.merge({ :debug => false, :body => true })) + super(dep.to_s, { :src => asset_path(dep, 'js', true) }.merge!(options)) } else super(source.to_s, { :src => asset_path(source, 'js', body) }.merge!(options)) @@ -42,7 +42,7 @@ module Sprockets sources.collect do |source| if debug && asset = asset_paths.asset_for(source, 'css') asset.to_a.map { |dep| - stylesheet_link_tag(dep, options.merge({ :debug => false, :body => true })) + super(dep.to_s, { :href => asset_path(dep, 'css', true, :request) }.merge!(options)) } else super(source.to_s, { :href => asset_path(source, 'css', body, :request) }.merge!(options)) -- cgit v1.2.3 From 725617a6475703270a9afd59f1cf91ac3297720a Mon Sep 17 00:00:00 2001 From: Daniel Schierbeck Date: Mon, 22 Aug 2011 19:21:35 +0200 Subject: Document the Sprockets compressors Add documentation to Sprockets::NullCompressor and Sprockets::LazyCompressor. Also, make LazyCompressor#compressor private, as it isn't part of the public API. --- actionpack/lib/sprockets/compressors.rb | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/compressors.rb b/actionpack/lib/sprockets/compressors.rb index 6544953df4..351eff1085 100644 --- a/actionpack/lib/sprockets/compressors.rb +++ b/actionpack/lib/sprockets/compressors.rb @@ -1,21 +1,37 @@ module Sprockets - class NullCompressor + # An asset compressor which does nothing. + # + # This compressor simply returns the asset as-is, without any compression + # whatsoever. It is useful in development mode, when compression isn't + # needed but using the same asset pipeline as production is desired. + class NullCompressor #:nodoc: def compress(content) content end end - class LazyCompressor + # An asset compressor which only initializes the underlying compression + # engine when needed. + # + # This postpones the initialization of the compressor until + # #compress is called the first time. + class LazyCompressor #:nodoc: + # Initializes a new LazyCompressor. + # + # The block should return a compressor when called, i.e. an object + # which responds to #compress. def initialize(&block) @block = block end - def compressor - @compressor ||= @block.call || NullCompressor.new - end - def compress(content) compressor.compress(content) end + + private + + def compressor + @compressor ||= (@block.call || NullCompressor.new) + end end -end \ No newline at end of file +end -- cgit v1.2.3 From e5f2b0d75f29cd7d9e11e8008d410caf48ab1078 Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Tue, 30 Aug 2011 20:47:01 -0300 Subject: Revert "Merge pull request #2647 from dmathieu/no_rescue" This reverts commit 125b1b0b9180ec8f0135da185e77250d2b8a4bea. --- actionpack/lib/sprockets/helpers/rails_helper.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 7a2bf8bef6..062aa4dae5 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -58,8 +58,12 @@ module Sprockets private def debug_assets? - config = Rails.application.config.assets - config.allow_debugging && (config.debug || params[:debug_assets]) + begin + config = Rails.application.config.assets + config.allow_debugging && (config.debug || params[:debug_assets]) + rescue NoMethodError + false + end end # Override to specify an alternative prefix for asset path generation. -- cgit v1.2.3 From 73d34feb4c6b658d28c83ac6c69413b737565b23 Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Wed, 31 Aug 2011 09:42:43 -0500 Subject: Always enable digest and compile in the Rake task --- actionpack/lib/sprockets/assets.rake | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 7594ee4296..5698f22080 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -13,8 +13,9 @@ namespace :assets do # Ensure that action view is loaded and the appropriate sprockets hooks get executed ActionView::Base - # Always perform caching so that asset_path appends the timestamps to file references. - Rails.application.config.action_controller.perform_caching = true + # Always calculate digests and compile files + Rails.application.config.assets.digest = true + Rails.application.config.assets.compile = true config = Rails.application.config env = Rails.application.assets -- cgit v1.2.3 From dffdd829930e664cef522f34730d5987be348596 Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Mon, 29 Aug 2011 16:28:11 -0500 Subject: Read digests of assets from manifest.yml if config.assets.manifest is on --- actionpack/lib/sprockets/assets.rake | 10 +++++++++- actionpack/lib/sprockets/helpers/rails_helper.rb | 17 ++++++++++++++++- actionpack/lib/sprockets/railtie.rb | 6 ++++++ 3 files changed, 31 insertions(+), 2 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 5698f22080..7ee82ee530 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -19,7 +19,8 @@ namespace :assets do config = Rails.application.config env = Rails.application.assets - target = Rails.root.join("public#{config.assets.prefix}") + target = Pathname.new(File.join(Rails.public_path, config.assets.prefix)) + manifest = {} if env.respond_to?(:each_logical_path) config.assets.precompile.each do |path| @@ -31,6 +32,7 @@ namespace :assets do end if asset = env.find_asset(logical_path) + manifest[logical_path] = asset.digest_path filename = target.join(asset.digest_path) mkdir_p filename.dirname asset.write_to(filename) @@ -44,6 +46,12 @@ namespace :assets do assets << {:to => target} env.precompile(*assets) end + + if config.assets.manifest + File.open("#{target}/manifest.yml", 'w') do |f| + YAML.dump(manifest, f) + end + end end end diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 062aa4dae5..8e7eb182fd 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -14,6 +14,7 @@ module Sprockets paths = RailsHelper::AssetPaths.new(config, controller) paths.asset_environment = asset_environment paths.asset_prefix = asset_prefix + paths.asset_digests = asset_digests paths end end @@ -76,6 +77,10 @@ module Sprockets Rails.application.config.assets.prefix end + def asset_digests + Rails.application.config.assets.digests + end + # Override to specify an alternative asset environment for asset # path generation. The environment should already have been mounted # at the prefix returned by +asset_prefix+. @@ -84,7 +89,9 @@ module Sprockets end class AssetPaths < ::ActionView::AssetPaths #:nodoc: - attr_accessor :asset_environment, :asset_prefix + attr_accessor :asset_environment, :asset_prefix, :asset_digests + + class AssetNotPrecompiledError < StandardError; end def compute_public_path(source, dir, ext=nil, include_host=true, protocol=nil) super(source, asset_prefix, ext, include_host, protocol) @@ -103,6 +110,14 @@ module Sprockets end def digest_for(logical_path) + if asset_digests && (digest = asset_digests[logical_path]) + return digest + end + + if digest.nil? && Rails.application.config.assets.precompile_only + raise AssetNotPrecompiledError + end + if asset = asset_environment[logical_path] return asset.digest_path end diff --git a/actionpack/lib/sprockets/railtie.rb b/actionpack/lib/sprockets/railtie.rb index c21bf57935..680cb980ff 100644 --- a/actionpack/lib/sprockets/railtie.rb +++ b/actionpack/lib/sprockets/railtie.rb @@ -26,6 +26,12 @@ module Sprockets end end + if config.assets.manifest + if File.exist?(path = File.join(Rails.public_path, config.assets.prefix, "manifest.yml")) + config.assets.digests = YAML.load_file(path) + end + end + ActiveSupport.on_load(:action_view) do include ::Sprockets::Helpers::RailsHelper -- cgit v1.2.3 From f236e00189b5a6cf0cebac5c275f64d41d73428d Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Wed, 31 Aug 2011 12:47:33 -0500 Subject: Backport f443f9cb0c64 to master --- actionpack/lib/sprockets/assets.rake | 6 ++--- actionpack/lib/sprockets/helpers/rails_helper.rb | 29 ++++++++---------------- actionpack/lib/sprockets/railtie.rb | 6 ++--- 3 files changed, 13 insertions(+), 28 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 7ee82ee530..54907abb39 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -47,10 +47,8 @@ namespace :assets do env.precompile(*assets) end - if config.assets.manifest - File.open("#{target}/manifest.yml", 'w') do |f| - YAML.dump(manifest, f) - end + File.open("#{target}/manifest.yml", 'w') do |f| + YAML.dump(manifest, f) end end end diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 8e7eb182fd..975dc9e80c 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -61,7 +61,7 @@ module Sprockets def debug_assets? begin config = Rails.application.config.assets - config.allow_debugging && (config.debug || params[:debug_assets]) + config.compile && (config.debug || params[:debug_assets]) rescue NoMethodError false end @@ -114,22 +114,21 @@ module Sprockets return digest end - if digest.nil? && Rails.application.config.assets.precompile_only - raise AssetNotPrecompiledError - end - - if asset = asset_environment[logical_path] - return asset.digest_path + if Rails.application.config.assets.compile + if asset = asset_environment[logical_path] + return asset.digest_path + end + return logical_path + else + raise AssetNotPrecompiledError.new("#{logical_path} isn't precompiled") end - - logical_path end def rewrite_asset_path(source, dir) if source[0] == ?/ source else - source = digest_for(source) if performing_caching? + source = digest_for(source) if Rails.application.config.assets.digest source = File.join(dir, source) source = "/#{source}" unless source =~ /^\// source @@ -143,16 +142,6 @@ module Sprockets source end end - - def performing_caching? - # When included in Sprockets::Context, we need to ask the - # top-level config as the controller is not available. - if config.action_controller.present? - config.action_controller.perform_caching - else - config.perform_caching - end - end end end end diff --git a/actionpack/lib/sprockets/railtie.rb b/actionpack/lib/sprockets/railtie.rb index 680cb980ff..4adfd000f8 100644 --- a/actionpack/lib/sprockets/railtie.rb +++ b/actionpack/lib/sprockets/railtie.rb @@ -26,10 +26,8 @@ module Sprockets end end - if config.assets.manifest - if File.exist?(path = File.join(Rails.public_path, config.assets.prefix, "manifest.yml")) - config.assets.digests = YAML.load_file(path) - end + if File.exist?(path = File.join(Rails.public_path, config.assets.prefix, "manifest.yml")) + config.assets.digests = YAML.load_file(path) end ActiveSupport.on_load(:action_view) do -- cgit v1.2.3 From d0b3937b8fe2cbc4385e843d47249af3e7181a83 Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Tue, 30 Aug 2011 16:30:53 -0500 Subject: Set default location of manifest with config.assets.manifest --- actionpack/lib/sprockets/assets.rake | 3 ++- actionpack/lib/sprockets/railtie.rb | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 54907abb39..6f38ece0c3 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -21,6 +21,7 @@ namespace :assets do env = Rails.application.assets target = Pathname.new(File.join(Rails.public_path, config.assets.prefix)) manifest = {} + manifest_path = config.assets.manifest || target if env.respond_to?(:each_logical_path) config.assets.precompile.each do |path| @@ -47,7 +48,7 @@ namespace :assets do env.precompile(*assets) end - File.open("#{target}/manifest.yml", 'w') do |f| + File.open("#{manifest_path}/manifest.yml", 'w') do |f| YAML.dump(manifest, f) end end diff --git a/actionpack/lib/sprockets/railtie.rb b/actionpack/lib/sprockets/railtie.rb index 4adfd000f8..7927b7bc2c 100644 --- a/actionpack/lib/sprockets/railtie.rb +++ b/actionpack/lib/sprockets/railtie.rb @@ -26,7 +26,13 @@ module Sprockets end end - if File.exist?(path = File.join(Rails.public_path, config.assets.prefix, "manifest.yml")) + if config.assets.manifest + path = File.join(config.assets.manifest, "manifest.yml") + else + path = File.join(Rails.public_path, config.assets.prefix, "manifest.yml") + end + + if File.exist?(path) config.assets.digests = YAML.load_file(path) end -- cgit v1.2.3 From 3ce3b5b1f1f92d79ee015d246a9f62a725eca5ca Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Wed, 31 Aug 2011 18:50:38 -0700 Subject: Merge pull request #2780 from guilleiguaran/assets-pipeline-minor-changes Assets pipeline: fix in manifest location and remove unused code --- actionpack/lib/sprockets/assets.rake | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 6f38ece0c3..f1fc7857a7 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -23,29 +23,22 @@ namespace :assets do manifest = {} manifest_path = config.assets.manifest || target - if env.respond_to?(:each_logical_path) - config.assets.precompile.each do |path| - env.each_logical_path do |logical_path| - if path.is_a?(Regexp) - next unless path.match(logical_path) - else - next unless File.fnmatch(path.to_s, logical_path) - end + config.assets.precompile.each do |path| + env.each_logical_path do |logical_path| + if path.is_a?(Regexp) + next unless path.match(logical_path) + else + next unless File.fnmatch(path.to_s, logical_path) + end - if asset = env.find_asset(logical_path) - manifest[logical_path] = asset.digest_path - filename = target.join(asset.digest_path) - mkdir_p filename.dirname - asset.write_to(filename) - asset.write_to("#{filename}.gz") if filename.to_s =~ /\.(css|js)$/ - end + if asset = env.find_asset(logical_path) + manifest[logical_path] = asset.digest_path + filename = target.join(asset.digest_path) + mkdir_p filename.dirname + asset.write_to(filename) + asset.write_to("#{filename}.gz") if filename.to_s =~ /\.(css|js)$/ end end - else - # TODO: Remove this once we're depending on sprockets beta 15 - assets = config.assets.precompile.dup - assets << {:to => target} - env.precompile(*assets) end File.open("#{manifest_path}/manifest.yml", 'w') do |f| -- cgit v1.2.3 From d5165e5ab0829bd4cb0345f24ab619109cd1fbe2 Mon Sep 17 00:00:00 2001 From: Sam Pohlenz Date: Thu, 1 Sep 2011 14:59:16 +0930 Subject: Move references to Rails.application.config out of Sprockets AssetPaths --- actionpack/lib/sprockets/helpers/rails_helper.rb | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 975dc9e80c..2dde2e9cc9 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -15,6 +15,8 @@ module Sprockets paths.asset_environment = asset_environment paths.asset_prefix = asset_prefix paths.asset_digests = asset_digests + paths.compile_assets = compile_assets? + paths.digest_assets = digest_assets? paths end end @@ -60,8 +62,7 @@ module Sprockets private def debug_assets? begin - config = Rails.application.config.assets - config.compile && (config.debug || params[:debug_assets]) + compile_assets? && (Rails.application.config.assets.debug || params[:debug_assets]) rescue NoMethodError false end @@ -81,6 +82,14 @@ module Sprockets Rails.application.config.assets.digests end + def compile_assets? + Rails.application.config.assets.compile + end + + def digest_assets? + Rails.application.config.assets.digest + end + # Override to specify an alternative asset environment for asset # path generation. The environment should already have been mounted # at the prefix returned by +asset_prefix+. @@ -89,7 +98,7 @@ module Sprockets end class AssetPaths < ::ActionView::AssetPaths #:nodoc: - attr_accessor :asset_environment, :asset_prefix, :asset_digests + attr_accessor :asset_environment, :asset_prefix, :asset_digests, :compile_assets, :digest_assets class AssetNotPrecompiledError < StandardError; end @@ -114,7 +123,7 @@ module Sprockets return digest end - if Rails.application.config.assets.compile + if compile_assets if asset = asset_environment[logical_path] return asset.digest_path end @@ -128,7 +137,7 @@ module Sprockets if source[0] == ?/ source else - source = digest_for(source) if Rails.application.config.assets.digest + source = digest_for(source) if digest_assets source = File.join(dir, source) source = "/#{source}" unless source =~ /^\// source -- cgit v1.2.3 From 58b0c9734777a4610e812a48ee64881b4f88b107 Mon Sep 17 00:00:00 2001 From: Sam Pohlenz Date: Thu, 1 Sep 2011 09:23:51 +0930 Subject: assets:precompile should not append asset digests when config.assets.digest is false --- actionpack/lib/sprockets/assets.rake | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index f1fc7857a7..a8128d9a82 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -13,8 +13,7 @@ namespace :assets do # Ensure that action view is loaded and the appropriate sprockets hooks get executed ActionView::Base - # Always calculate digests and compile files - Rails.application.config.assets.digest = true + # Always compile files Rails.application.config.assets.compile = true config = Rails.application.config @@ -32,8 +31,10 @@ namespace :assets do end if asset = env.find_asset(logical_path) - manifest[logical_path] = asset.digest_path - filename = target.join(asset.digest_path) + asset_path = config.assets.digest ? asset.digest_path : logical_path + manifest[logical_path] = asset_path + filename = target.join(asset_path) + mkdir_p filename.dirname asset.write_to(filename) asset.write_to("#{filename}.gz") if filename.to_s =~ /\.(css|js)$/ -- cgit v1.2.3 From a76fbee9c9cd2dcd392a570e65ad1f4868763aa0 Mon Sep 17 00:00:00 2001 From: Daniel Schierbeck Date: Sun, 4 Sep 2011 18:48:50 +0300 Subject: No need to use a begin block there --- actionpack/lib/sprockets/helpers/rails_helper.rb | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 2dde2e9cc9..e800ab77a4 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -61,11 +61,9 @@ module Sprockets private def debug_assets? - begin - compile_assets? && (Rails.application.config.assets.debug || params[:debug_assets]) - rescue NoMethodError - false - end + compile_assets? && (Rails.application.config.assets.debug || params[:debug_assets]) + rescue NoMethodError + false end # Override to specify an alternative prefix for asset path generation. -- cgit v1.2.3 From 9bc0082f299436552aabd101f5bcb6bc2fbd6a43 Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Sun, 4 Sep 2011 17:24:01 -0500 Subject: AssetNotPrecompiledError should be raise when config.assets.digest = false, config.assets.compile = false and manifest file isn't present --- actionpack/lib/sprockets/helpers/rails_helper.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 2dde2e9cc9..bcb70ee95d 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -124,7 +124,7 @@ module Sprockets end if compile_assets - if asset = asset_environment[logical_path] + if digest_assets && asset = asset_environment[logical_path] return asset.digest_path end return logical_path @@ -137,7 +137,7 @@ module Sprockets if source[0] == ?/ source else - source = digest_for(source) if digest_assets + source = digest_for(source) source = File.join(dir, source) source = "/#{source}" unless source =~ /^\// source -- cgit v1.2.3 From 6fc518e2ec59ec00076aaca08b9e3df3baee54a3 Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Tue, 6 Sep 2011 09:24:22 -0500 Subject: config.action_controller.perform_caching isn't used anymore in assets pipeline, instead we are using config.assets.digest now --- actionpack/lib/sprockets/railtie.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/railtie.rb b/actionpack/lib/sprockets/railtie.rb index 7927b7bc2c..dc991636a1 100644 --- a/actionpack/lib/sprockets/railtie.rb +++ b/actionpack/lib/sprockets/railtie.rb @@ -71,7 +71,7 @@ module Sprockets mount app.assets => config.assets.prefix end - if config.action_controller.perform_caching + if config.assets.digest app.assets = app.assets.index end end -- cgit v1.2.3 From 901c02d86a1e2cccc8cc2c6ea9ec3f68a6c72607 Mon Sep 17 00:00:00 2001 From: Alex Yakoubian Date: Thu, 8 Sep 2011 13:44:08 -0700 Subject: Fixed assets precompile regex, now accepts Procs --- actionpack/lib/sprockets/assets.rake | 2 ++ 1 file changed, 2 insertions(+) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index a8128d9a82..893ecf58fe 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -26,6 +26,8 @@ namespace :assets do env.each_logical_path do |logical_path| if path.is_a?(Regexp) next unless path.match(logical_path) + elsif path.is_a?(Proc) + next unless path.call(logical_path) else next unless File.fnmatch(path.to_s, logical_path) end -- cgit v1.2.3 From 3ce830272ee0516eb864a5765abba25d4b07cca4 Mon Sep 17 00:00:00 2001 From: kennyj Date: Tue, 13 Sep 2011 01:06:31 +0900 Subject: fix https://github.com/rails/rails/issues/2582 (with testcase) --- actionpack/lib/sprockets/assets.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index a8128d9a82..2e415bf6cc 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -42,7 +42,7 @@ namespace :assets do end end - File.open("#{manifest_path}/manifest.yml", 'w') do |f| + File.open("#{manifest_path}/manifest.yml", 'wb') do |f| YAML.dump(manifest, f) end end -- cgit v1.2.3 From 21eaba4c39773af3e7b279325fb8d6b5ab474ef0 Mon Sep 17 00:00:00 2001 From: kennyj Date: Tue, 13 Sep 2011 02:59:57 +0900 Subject: fix https://github.com/rails/rails/issues/2947 (with testcase) --- actionpack/lib/sprockets/assets.rake | 3 +++ 1 file changed, 3 insertions(+) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 2e415bf6cc..7e0c7cac52 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -16,6 +16,9 @@ namespace :assets do # Always compile files Rails.application.config.assets.compile = true + # Always ignore asset host + Rails.application.config.action_controller.asset_host = nil + config = Rails.application.config env = Rails.application.assets target = Pathname.new(File.join(Rails.public_path, config.assets.prefix)) -- cgit v1.2.3 From 9279d1102c7d96810813cad0d0a666db0a549b1f Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Sun, 11 Sep 2011 01:38:55 -0500 Subject: Set relative url root in assets when controller isn't available for Sprockets. Fix #2435 See https://github.com/rails/sass-rails/issues/42 for details --- actionpack/lib/sprockets/helpers/rails_helper.rb | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 3987e6e17f..7d9296fa90 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -17,6 +17,7 @@ module Sprockets paths.asset_digests = asset_digests paths.compile_assets = compile_assets? paths.digest_assets = digest_assets? + paths.relative_url_root = config.action_controller.relative_url_root paths end end @@ -96,12 +97,17 @@ module Sprockets end class AssetPaths < ::ActionView::AssetPaths #:nodoc: - attr_accessor :asset_environment, :asset_prefix, :asset_digests, :compile_assets, :digest_assets + attr_accessor :asset_environment, :asset_prefix, :asset_digests, :compile_assets, + :digest_assets, :relative_url_root class AssetNotPrecompiledError < StandardError; end - def compute_public_path(source, dir, ext=nil, include_host=true, protocol=nil) - super(source, asset_prefix, ext, include_host, protocol) + def compute_public_path(source, dir, ext = nil, include_host = true, protocol = nil) + public_path = super(source, asset_prefix, ext, include_host, protocol) + if !is_uri?(public_path) && relative_url_root + public_path = rewrite_relative_url_root(public_path, relative_url_root) + end + public_path end # Return the filesystem path for the source @@ -149,6 +155,10 @@ module Sprockets source end end + + def relative_url_root + has_request? ? super : @relative_url_root + end end end end -- cgit v1.2.3 From 5bad79d93011faae839a57edaa20195398ab5764 Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Tue, 13 Sep 2011 00:27:29 -0700 Subject: always rewrite_relative_url_root --- actionpack/lib/sprockets/helpers/rails_helper.rb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 7d9296fa90..f9135d43d2 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -103,11 +103,7 @@ module Sprockets class AssetNotPrecompiledError < StandardError; end def compute_public_path(source, dir, ext = nil, include_host = true, protocol = nil) - public_path = super(source, asset_prefix, ext, include_host, protocol) - if !is_uri?(public_path) && relative_url_root - public_path = rewrite_relative_url_root(public_path, relative_url_root) - end - public_path + super(source, asset_prefix, ext, include_host, protocol) end # Return the filesystem path for the source -- cgit v1.2.3 From f509b6988b8902a83b9ae5c559d8860c87f2a4df Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Tue, 13 Sep 2011 04:27:30 -0500 Subject: Fix for relative url root in assets --- actionpack/lib/sprockets/helpers/rails_helper.rb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index f9135d43d2..5785da5124 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -17,7 +17,6 @@ module Sprockets paths.asset_digests = asset_digests paths.compile_assets = compile_assets? paths.digest_assets = digest_assets? - paths.relative_url_root = config.action_controller.relative_url_root paths end end @@ -97,8 +96,7 @@ module Sprockets end class AssetPaths < ::ActionView::AssetPaths #:nodoc: - attr_accessor :asset_environment, :asset_prefix, :asset_digests, :compile_assets, - :digest_assets, :relative_url_root + attr_accessor :asset_environment, :asset_prefix, :asset_digests, :compile_assets, :digest_assets class AssetNotPrecompiledError < StandardError; end @@ -153,7 +151,7 @@ module Sprockets end def relative_url_root - has_request? ? super : @relative_url_root + has_request? ? super : config.action_controller.relative_url_root end end end -- cgit v1.2.3 From ae04fbfee961a7e6b90a3373dc305f100e50614f Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Tue, 13 Sep 2011 02:45:05 -0700 Subject: Fix asset_path relative_url_root method --- actionpack/lib/sprockets/helpers/rails_helper.rb | 4 ---- 1 file changed, 4 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 5785da5124..998f0bceb7 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -149,10 +149,6 @@ module Sprockets source end end - - def relative_url_root - has_request? ? super : config.action_controller.relative_url_root - end end end end -- cgit v1.2.3 From 82afaa06861d03f6a2887d40e40c0ded76db88db Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Tue, 13 Sep 2011 15:16:53 -0700 Subject: Provide a way to access to assets without using the digest, useful for static files and emails --- actionpack/lib/sprockets/assets.rake | 1 + 1 file changed, 1 insertion(+) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 0531b1509b..ee8ca1b3dd 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -43,6 +43,7 @@ namespace :assets do mkdir_p filename.dirname asset.write_to(filename) asset.write_to("#{filename}.gz") if filename.to_s =~ /\.(css|js)$/ + asset.write_to(target.join(logical_path)) end end end -- cgit v1.2.3 From f22407dd34024886edd8a8f618dc0b19152776a0 Mon Sep 17 00:00:00 2001 From: "Mark J. Titorenko" Date: Tue, 6 Sep 2011 10:34:24 +0100 Subject: Don't mount Sprockets at config.assets.prefix if config.assets.compile is false. --- actionpack/lib/sprockets/railtie.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/railtie.rb b/actionpack/lib/sprockets/railtie.rb index dc991636a1..f05d835554 100644 --- a/actionpack/lib/sprockets/railtie.rb +++ b/actionpack/lib/sprockets/railtie.rb @@ -67,8 +67,10 @@ module Sprockets end end - app.routes.prepend do - mount app.assets => config.assets.prefix + if config.assets.compile + app.routes.prepend do + mount app.assets => config.assets.prefix + end end if config.assets.digest -- cgit v1.2.3 From 9c7e8850073fdefa17367b8fec256257c31559bc Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Tue, 13 Sep 2011 22:05:46 -0500 Subject: Clear cache before of each precompile to avoid inconsistencies. Fixes #3014 --- actionpack/lib/sprockets/assets.rake | 1 + 1 file changed, 1 insertion(+) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index ee8ca1b3dd..b7e8f39b43 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -9,6 +9,7 @@ namespace :assets do Kernel.exec $0, *ARGV else Rake::Task["environment"].invoke + Rake::Task["tmp:cache:clear"].invoke # Ensure that action view is loaded and the appropriate sprockets hooks get executed ActionView::Base -- cgit v1.2.3 From 0d48b3afa98375cf71ea0ad731eaac6c309fbb57 Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Wed, 14 Sep 2011 00:29:03 -0700 Subject: Revert "Provide a way to access to assets without using the digest, useful for static files and emails" This reverts commit 82afaa06861d03f6a2887d40e40c0ded76db88db. --- actionpack/lib/sprockets/assets.rake | 1 - 1 file changed, 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index ee8ca1b3dd..0531b1509b 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -43,7 +43,6 @@ namespace :assets do mkdir_p filename.dirname asset.write_to(filename) asset.write_to("#{filename}.gz") if filename.to_s =~ /\.(css|js)$/ - asset.write_to(target.join(logical_path)) end end end -- cgit v1.2.3 From da7f0426ec7b0aa053489633c2a8a3da6423654f Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Wed, 14 Sep 2011 14:47:49 -0700 Subject: Allow asset tag helper methods to accept :digest => false option in order to completely avoid the digest generation. --- actionpack/lib/sprockets/helpers/rails_helper.rb | 28 +++++++++++++----------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 998f0bceb7..457ab93ae3 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -25,38 +25,40 @@ module Sprockets options = sources.extract_options! debug = options.key?(:debug) ? options.delete(:debug) : debug_assets? body = options.key?(:body) ? options.delete(:body) : false + digest = options.key?(:digest) ? options.delete(:digest) : digest_assets? sources.collect do |source| if debug && asset = asset_paths.asset_for(source, 'js') asset.to_a.map { |dep| - super(dep.to_s, { :src => asset_path(dep, 'js', true) }.merge!(options)) + super(dep.to_s, { :src => asset_path(dep, :ext => 'js', :body => true, :digest => digest) }.merge!(options)) } else - super(source.to_s, { :src => asset_path(source, 'js', body) }.merge!(options)) + super(source.to_s, { :src => asset_path(source, :ext => 'js', :body => body, :digest => digest) }.merge!(options)) end end.join("\n").html_safe end def stylesheet_link_tag(*sources) options = sources.extract_options! - debug = options.key?(:debug) ? options.delete(:debug) : debug_assets? - body = options.key?(:body) ? options.delete(:body) : false + debug = options.key?(:debug) ? options.delete(:debug) : debug_assets? + body = options.key?(:body) ? options.delete(:body) : false + digest = options.key?(:digest) ? options.delete(:digest) : digest_assets? sources.collect do |source| if debug && asset = asset_paths.asset_for(source, 'css') asset.to_a.map { |dep| - super(dep.to_s, { :href => asset_path(dep, 'css', true, :request) }.merge!(options)) + super(dep.to_s, { :href => asset_path(dep, :ext => 'css', :body => true, :protocol => :request, :digest => digest) }.merge!(options)) } else - super(source.to_s, { :href => asset_path(source, 'css', body, :request) }.merge!(options)) + super(source.to_s, { :href => asset_path(source, :ext => 'css', :body => body, :protocol => :request, :digest => digest) }.merge!(options)) end end.join("\n").html_safe end - def asset_path(source, default_ext = nil, body = false, protocol = nil) + def asset_path(source, options = {}) source = source.logical_path if source.respond_to?(:logical_path) - path = asset_paths.compute_public_path(source, 'assets', default_ext, true, protocol) - body ? "#{path}?body=1" : path + path = asset_paths.compute_public_path(source, 'assets', options.merge(:body => true)) + options[:body] ? "#{path}?body=1" : path end private @@ -100,8 +102,8 @@ module Sprockets class AssetNotPrecompiledError < StandardError; end - def compute_public_path(source, dir, ext = nil, include_host = true, protocol = nil) - super(source, asset_prefix, ext, include_host, protocol) + def compute_public_path(source, dir, options = {}) + super(source, asset_prefix, options) end # Return the filesystem path for the source @@ -131,11 +133,11 @@ module Sprockets end end - def rewrite_asset_path(source, dir) + def rewrite_asset_path(source, dir, options = {}) if source[0] == ?/ source else - source = digest_for(source) + source = digest_for(source) unless options[:digest] == false source = File.join(dir, source) source = "/#{source}" unless source =~ /^\// source -- cgit v1.2.3 From b50394bf844d0520d5dca485b169bba87f6d009a Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Thu, 15 Sep 2011 19:55:52 -0500 Subject: config.action_controller.asset_host shouldn't set to nil during precompile --- actionpack/lib/sprockets/assets.rake | 3 --- 1 file changed, 3 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 9b2f3a3f94..81223b7ead 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -17,9 +17,6 @@ namespace :assets do # Always compile files Rails.application.config.assets.compile = true - # Always ignore asset host - Rails.application.config.action_controller.asset_host = nil - config = Rails.application.config env = Rails.application.assets target = Pathname.new(File.join(Rails.public_path, config.assets.prefix)) -- cgit v1.2.3 From 857d20efdab98cf56b777e034e1f150187c5fe9a Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Tue, 20 Sep 2011 02:12:29 -0500 Subject: Move precompile task to Sprockets::StaticCompiler --- actionpack/lib/sprockets/assets.rake | 24 ++----------- actionpack/lib/sprockets/railtie.rb | 1 + actionpack/lib/sprockets/static_compiler.rb | 53 +++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 22 deletions(-) create mode 100644 actionpack/lib/sprockets/static_compiler.rb (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 81223b7ead..e38ac6b489 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -20,30 +20,10 @@ namespace :assets do config = Rails.application.config env = Rails.application.assets target = Pathname.new(File.join(Rails.public_path, config.assets.prefix)) - manifest = {} manifest_path = config.assets.manifest || target - config.assets.precompile.each do |path| - env.each_logical_path do |logical_path| - if path.is_a?(Regexp) - next unless path.match(logical_path) - elsif path.is_a?(Proc) - next unless path.call(logical_path) - else - next unless File.fnmatch(path.to_s, logical_path) - end - - if asset = env.find_asset(logical_path) - asset_path = config.assets.digest ? asset.digest_path : logical_path - manifest[logical_path] = asset_path - filename = target.join(asset_path) - - mkdir_p filename.dirname - asset.write_to(filename) - asset.write_to("#{filename}.gz") if filename.to_s =~ /\.(css|js)$/ - end - end - end + static_compiler = Sprockets::StaticCompiler.new(env, target, :digest => config.assets.digest) + manifest = static_compiler.precompile(config.assets.precompile) File.open("#{manifest_path}/manifest.yml", 'wb') do |f| YAML.dump(manifest, f) diff --git a/actionpack/lib/sprockets/railtie.rb b/actionpack/lib/sprockets/railtie.rb index f05d835554..9b31604dbe 100644 --- a/actionpack/lib/sprockets/railtie.rb +++ b/actionpack/lib/sprockets/railtie.rb @@ -2,6 +2,7 @@ module Sprockets autoload :Helpers, "sprockets/helpers" autoload :LazyCompressor, "sprockets/compressors" autoload :NullCompressor, "sprockets/compressors" + autoload :StaticCompiler, "sprockets/static_compiler" # TODO: Get rid of config.assets.enabled class Railtie < ::Rails::Railtie diff --git a/actionpack/lib/sprockets/static_compiler.rb b/actionpack/lib/sprockets/static_compiler.rb new file mode 100644 index 0000000000..fa4f9451df --- /dev/null +++ b/actionpack/lib/sprockets/static_compiler.rb @@ -0,0 +1,53 @@ +require 'fileutils' +require 'pathname' + +module Sprockets + class StaticCompiler + attr_accessor :env, :target, :digest + + def initialize(env, target, options = {}) + @env = env + @target = target + @digest = options.key?(:digest) ? options.delete(:digest) : true + end + + def precompile(paths) + Rails.application.config.assets.digest = digest + manifest = {} + + env.each_logical_path do |logical_path| + next unless precompile_path?(logical_path, paths) + if asset = env.find_asset(logical_path) + manifest[logical_path] = compile(asset) + end + end + manifest + end + + def compile(asset) + asset_path = digest_asset(asset) + filename = target.join(asset_path) + FileUtils.mkdir_p filename.dirname + asset.write_to(filename) + asset.write_to("#{filename}.gz") if filename.to_s =~ /\.(css|js)$/ + asset_path + end + + def precompile_path?(logical_path, paths) + paths.each do |path| + if path.is_a?(Regexp) + return true if path.match(logical_path) + elsif path.is_a?(Proc) + return true if path.call(logical_path) + else + return true if File.fnmatch(path.to_s, logical_path) + end + end + false + end + + def digest_asset(asset) + digest ? asset.digest_path : asset.logical_path + end + end +end -- cgit v1.2.3 From c070cc4ab41fd848fc72f19e7f99d75b1e1fd097 Mon Sep 17 00:00:00 2001 From: docunext Date: Wed, 21 Sep 2011 13:19:48 -0400 Subject: Fixes #1489 again, with updated code and numerous tests to confirm --- actionpack/lib/sprockets/helpers/rails_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index 457ab93ae3..c569124c94 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -57,7 +57,7 @@ module Sprockets def asset_path(source, options = {}) source = source.logical_path if source.respond_to?(:logical_path) - path = asset_paths.compute_public_path(source, 'assets', options.merge(:body => true)) + path = asset_paths.compute_public_path(source, asset_prefix, options.merge(:body => true)) options[:body] ? "#{path}?body=1" : path end -- cgit v1.2.3 From 9d46823b5d00e78c6ffaaae731a9a7acf6bb2b14 Mon Sep 17 00:00:00 2001 From: Terence Lee Date: Thu, 22 Sep 2011 12:03:59 -0500 Subject: set env to let rails know we're precompiling --- actionpack/lib/sprockets/assets.rake | 3 +++ 1 file changed, 3 insertions(+) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index e38ac6b489..7241671db0 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -1,6 +1,9 @@ namespace :assets do desc "Compile all the assets named in config.assets.precompile" task :precompile do + # let rails know we're precompiling assets + ENV["RAILS_ASSETS_PRECOMPILE"] = 'true' + # We need to do this dance because RAILS_GROUPS is used # too early in the boot process and changing here is already too late. if ENV["RAILS_GROUPS"].to_s.empty? || ENV["RAILS_ENV"].to_s.empty? -- cgit v1.2.3 From a29c2bfba3cfdfcbb19f809105861b6ca81e72cc Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Fri, 23 Sep 2011 13:34:11 -0500 Subject: Remove Sprockets compute_public_path, AV compute_public_path can be used directly --- actionpack/lib/sprockets/helpers/rails_helper.rb | 5 ----- 1 file changed, 5 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index c569124c94..fe822b338e 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -13,7 +13,6 @@ module Sprockets controller = self.controller if respond_to?(:controller) paths = RailsHelper::AssetPaths.new(config, controller) paths.asset_environment = asset_environment - paths.asset_prefix = asset_prefix paths.asset_digests = asset_digests paths.compile_assets = compile_assets? paths.digest_assets = digest_assets? @@ -102,10 +101,6 @@ module Sprockets class AssetNotPrecompiledError < StandardError; end - def compute_public_path(source, dir, options = {}) - super(source, asset_prefix, options) - end - # Return the filesystem path for the source def compute_source_path(source, ext) asset_for(source, ext) -- cgit v1.2.3 From eb367afeed2905d1036f46940aa6c91323f7faab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sat, 24 Sep 2011 01:56:49 +0200 Subject: `rake assets:precompile` loads the application but does not initialize it. To the app developer, this means configuration add in config/initializers/* will not be executed. Plugins developers need to special case their initializers that are meant to be run in the assets group by adding :group => :assets. Conflicts: railties/CHANGELOG railties/test/application/assets_test.rb --- actionpack/lib/sprockets/assets.rake | 3 +- actionpack/lib/sprockets/bootstrap.rb | 65 +++++++++++++++++++++++++++++++++++ actionpack/lib/sprockets/railtie.rb | 59 +++---------------------------- 3 files changed, 71 insertions(+), 56 deletions(-) create mode 100644 actionpack/lib/sprockets/bootstrap.rb (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 7241671db0..5dd48fea98 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -11,8 +11,9 @@ namespace :assets do ENV["RAILS_ENV"] ||= "production" Kernel.exec $0, *ARGV else - Rake::Task["environment"].invoke Rake::Task["tmp:cache:clear"].invoke + Rails.application.initialize!(:assets) + Sprockets::Bootstrap.new(Rails.application).run # Ensure that action view is loaded and the appropriate sprockets hooks get executed ActionView::Base diff --git a/actionpack/lib/sprockets/bootstrap.rb b/actionpack/lib/sprockets/bootstrap.rb new file mode 100644 index 0000000000..ed1ed09374 --- /dev/null +++ b/actionpack/lib/sprockets/bootstrap.rb @@ -0,0 +1,65 @@ +module Sprockets + class Bootstrap + def initialize(app) + @app = app + end + + # TODO: Get rid of config.assets.enabled + def run + app, config = @app, @app.config + return unless app.assets + + config.assets.paths.each { |path| app.assets.append_path(path) } + + if config.assets.compress + # temporarily hardcode default JS compressor to uglify. Soon, it will work + # the same as SCSS, where a default plugin sets the default. + unless config.assets.js_compressor == false + app.assets.js_compressor = LazyCompressor.new { expand_js_compressor(config.assets.js_compressor || :uglifier) } + end + + unless config.assets.css_compressor == false + app.assets.css_compressor = LazyCompressor.new { expand_css_compressor(config.assets.css_compressor) } + end + end + + if config.assets.compile + app.routes.prepend do + mount app.assets => config.assets.prefix + end + end + + if config.assets.digest + app.assets = app.assets.index + end + end + + protected + + def expand_js_compressor(sym) + case sym + when :closure + require 'closure-compiler' + Closure::Compiler.new + when :uglifier + require 'uglifier' + Uglifier.new + when :yui + require 'yui/compressor' + YUI::JavaScriptCompressor.new + else + sym + end + end + + def expand_css_compressor(sym) + case sym + when :yui + require 'yui/compressor' + YUI::CssCompressor.new + else + sym + end + end + end +end \ No newline at end of file diff --git a/actionpack/lib/sprockets/railtie.rb b/actionpack/lib/sprockets/railtie.rb index 9b31604dbe..edcd4c1113 100644 --- a/actionpack/lib/sprockets/railtie.rb +++ b/actionpack/lib/sprockets/railtie.rb @@ -1,5 +1,6 @@ module Sprockets - autoload :Helpers, "sprockets/helpers" + autoload :Bootstrap, "sprockets/bootstrap" + autoload :Helpers, "sprockets/helpers" autoload :LazyCompressor, "sprockets/compressors" autoload :NullCompressor, "sprockets/compressors" autoload :StaticCompiler, "sprockets/static_compiler" @@ -12,7 +13,7 @@ module Sprockets load "sprockets/assets.rake" end - initializer "sprockets.environment" do |app| + initializer "sprockets.environment", :group => :assets do |app| config = app.config next unless config.assets.enabled @@ -51,59 +52,7 @@ module Sprockets # are compiled, and so that other Railties have an opportunity to # register compressors. config.after_initialize do |app| - next unless app.assets - config = app.config - - config.assets.paths.each { |path| app.assets.append_path(path) } - - if config.assets.compress - # temporarily hardcode default JS compressor to uglify. Soon, it will work - # the same as SCSS, where a default plugin sets the default. - unless config.assets.js_compressor == false - app.assets.js_compressor = LazyCompressor.new { expand_js_compressor(config.assets.js_compressor || :uglifier) } - end - - unless config.assets.css_compressor == false - app.assets.css_compressor = LazyCompressor.new { expand_css_compressor(config.assets.css_compressor) } - end - end - - if config.assets.compile - app.routes.prepend do - mount app.assets => config.assets.prefix - end - end - - if config.assets.digest - app.assets = app.assets.index - end + Sprockets::Bootstrap.new(app).run end - - protected - def expand_js_compressor(sym) - case sym - when :closure - require 'closure-compiler' - Closure::Compiler.new - when :uglifier - require 'uglifier' - Uglifier.new - when :yui - require 'yui/compressor' - YUI::JavaScriptCompressor.new - else - sym - end - end - - def expand_css_compressor(sym) - case sym - when :yui - require 'yui/compressor' - YUI::CssCompressor.new - else - sym - end - end end end -- cgit v1.2.3 From 6795a9b30905a6e0b28a8d5458b452cb385d21b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sat, 24 Sep 2011 02:15:18 +0200 Subject: Remove the ENV flag, yagni. --- actionpack/lib/sprockets/assets.rake | 3 --- 1 file changed, 3 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 5dd48fea98..782ea38991 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -1,9 +1,6 @@ namespace :assets do desc "Compile all the assets named in config.assets.precompile" task :precompile do - # let rails know we're precompiling assets - ENV["RAILS_ASSETS_PRECOMPILE"] = 'true' - # We need to do this dance because RAILS_GROUPS is used # too early in the boot process and changing here is already too late. if ENV["RAILS_GROUPS"].to_s.empty? || ENV["RAILS_ENV"].to_s.empty? -- cgit v1.2.3 From e69011521da0a9d4559436da21ea030465e54d08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sat, 24 Sep 2011 03:05:36 +0200 Subject: Avoid using pathnames and automatically create the manifest directory if one does not exist yet. --- actionpack/lib/sprockets/assets.rake | 11 +++++++++-- actionpack/lib/sprockets/static_compiler.rb | 5 ++--- 2 files changed, 11 insertions(+), 5 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 782ea38991..12b954371a 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -8,10 +8,15 @@ namespace :assets do ENV["RAILS_ENV"] ||= "production" Kernel.exec $0, *ARGV else + require "fileutils" Rake::Task["tmp:cache:clear"].invoke Rails.application.initialize!(:assets) Sprockets::Bootstrap.new(Rails.application).run + unless Rails.application.config.assets.enabled + raise "Cannot precompile assets if sprockets is disabled. Please set config.assets.enabled to true" + end + # Ensure that action view is loaded and the appropriate sprockets hooks get executed ActionView::Base @@ -20,11 +25,13 @@ namespace :assets do config = Rails.application.config env = Rails.application.assets - target = Pathname.new(File.join(Rails.public_path, config.assets.prefix)) - manifest_path = config.assets.manifest || target + target = File.join(Rails.public_path, config.assets.prefix) static_compiler = Sprockets::StaticCompiler.new(env, target, :digest => config.assets.digest) + manifest = static_compiler.precompile(config.assets.precompile) + manifest_path = config.assets.manifest || target + FileUtils.mkdir_p(manifest_path) File.open("#{manifest_path}/manifest.yml", 'wb') do |f| YAML.dump(manifest, f) diff --git a/actionpack/lib/sprockets/static_compiler.rb b/actionpack/lib/sprockets/static_compiler.rb index fa4f9451df..4a0078be46 100644 --- a/actionpack/lib/sprockets/static_compiler.rb +++ b/actionpack/lib/sprockets/static_compiler.rb @@ -1,5 +1,4 @@ require 'fileutils' -require 'pathname' module Sprockets class StaticCompiler @@ -26,8 +25,8 @@ module Sprockets def compile(asset) asset_path = digest_asset(asset) - filename = target.join(asset_path) - FileUtils.mkdir_p filename.dirname + filename = File.join(target, asset_path) + FileUtils.mkdir_p File.dirname(filename) asset.write_to(filename) asset.write_to("#{filename}.gz") if filename.to_s =~ /\.(css|js)$/ asset_path -- cgit v1.2.3 From d54ff41f8e0588df0d6e2f48554f62e1176a873e Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Sat, 24 Sep 2011 14:18:01 -0700 Subject: Merge pull request #3121 from cablegram/3-1-stable Re-launch assets:precompile task using (Rake.)ruby instead of Kernel.exec so it works on Windows --- actionpack/lib/sprockets/assets.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 12b954371a..7764bd401a 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -6,7 +6,7 @@ namespace :assets do if ENV["RAILS_GROUPS"].to_s.empty? || ENV["RAILS_ENV"].to_s.empty? ENV["RAILS_GROUPS"] ||= "assets" ENV["RAILS_ENV"] ||= "production" - Kernel.exec $0, *ARGV + ruby $0, *ARGV else require "fileutils" Rake::Task["tmp:cache:clear"].invoke -- cgit v1.2.3 From 038808ba1a6927189c4a11b7b77ba9a724dd5532 Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Sat, 24 Sep 2011 18:01:08 -0500 Subject: Add public API for register new js and css compressors for Sprockets --- actionpack/lib/sprockets/bootstrap.rb | 34 +++--------------------- actionpack/lib/sprockets/compressors.rb | 46 +++++++++++++++++++++++++++++++++ actionpack/lib/sprockets/railtie.rb | 1 + 3 files changed, 50 insertions(+), 31 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/bootstrap.rb b/actionpack/lib/sprockets/bootstrap.rb index ed1ed09374..395b264fe7 100644 --- a/actionpack/lib/sprockets/bootstrap.rb +++ b/actionpack/lib/sprockets/bootstrap.rb @@ -15,11 +15,11 @@ module Sprockets # temporarily hardcode default JS compressor to uglify. Soon, it will work # the same as SCSS, where a default plugin sets the default. unless config.assets.js_compressor == false - app.assets.js_compressor = LazyCompressor.new { expand_js_compressor(config.assets.js_compressor || :uglifier) } + app.assets.js_compressor = LazyCompressor.new { Sprockets::Compressors.registered_js_compressor(config.assets.js_compressor || :uglifier) } end unless config.assets.css_compressor == false - app.assets.css_compressor = LazyCompressor.new { expand_css_compressor(config.assets.css_compressor) } + app.assets.css_compressor = LazyCompressor.new { Sprockets::Compressors.registered_css_compressor(config.assets.css_compressor) } end end @@ -33,33 +33,5 @@ module Sprockets app.assets = app.assets.index end end - - protected - - def expand_js_compressor(sym) - case sym - when :closure - require 'closure-compiler' - Closure::Compiler.new - when :uglifier - require 'uglifier' - Uglifier.new - when :yui - require 'yui/compressor' - YUI::JavaScriptCompressor.new - else - sym - end - end - - def expand_css_compressor(sym) - case sym - when :yui - require 'yui/compressor' - YUI::CssCompressor.new - else - sym - end - end end -end \ No newline at end of file +end diff --git a/actionpack/lib/sprockets/compressors.rb b/actionpack/lib/sprockets/compressors.rb index 351eff1085..cb3e13314b 100644 --- a/actionpack/lib/sprockets/compressors.rb +++ b/actionpack/lib/sprockets/compressors.rb @@ -1,4 +1,50 @@ module Sprockets + module Compressors + @@css_compressors = {} + @@js_compressors = {} + @@default_css_compressor = nil + @@default_js_compressor = nil + + def self.register_css_compressor(name, klass, options = {}) + @@default_css_compressor = name.to_sym if options[:default] || @@default_css_compressor.nil? + @@css_compressors[name.to_sym] = {:klass => klass.to_s, :require => options[:require]} + end + + def self.register_js_compressor(name, klass, options = {}) + @@default_js_compressor = name.to_sym if options[:default] || @@default_js_compressor.nil? + @@js_compressors[name.to_sym] = {:klass => klass.to_s, :require => options[:require]} + end + + def self.registered_css_compressor(name) + if name.respond_to?(:to_sym) + compressor = @@css_compressors[name.to_sym] || @@css_compressors[@@default_css_compressor] + require compressor[:require] if compressor[:require] + compressor[:klass].constantize.new + else + name + end + end + + def self.registered_js_compressor(name) + if name.respond_to?(:to_sym) + compressor = @@js_compressors[name.to_sym] || @@js_compressors[@@default_js_compressor] + require compressor[:require] if compressor[:require] + compressor[:klass].constantize.new + else + name + end + end + + # The default compressors must be registered in default plugins (ex. Sass-Rails) + register_css_compressor(:scss, 'Sass::Rails::Compressor', :require => 'sass/rails/compressor', :default => true) + register_js_compressor(:uglifier, 'Uglifier', :require => 'uglifier', :default => true) + + # Automaticaly register some compressors + register_css_compressor(:yui, 'YUI::CssCompressor', :require => 'yui/compressor') + register_js_compressor(:closure, 'Closure::Compiler', :require => 'closure-compiler') + register_js_compressor(:yui, 'YUI::JavaScriptCompressor', :require => 'yui/compressor') + end + # An asset compressor which does nothing. # # This compressor simply returns the asset as-is, without any compression diff --git a/actionpack/lib/sprockets/railtie.rb b/actionpack/lib/sprockets/railtie.rb index edcd4c1113..6b67fb1d2d 100644 --- a/actionpack/lib/sprockets/railtie.rb +++ b/actionpack/lib/sprockets/railtie.rb @@ -1,6 +1,7 @@ module Sprockets autoload :Bootstrap, "sprockets/bootstrap" autoload :Helpers, "sprockets/helpers" + autoload :Compressors, "sprockets/compressors" autoload :LazyCompressor, "sprockets/compressors" autoload :NullCompressor, "sprockets/compressors" autoload :StaticCompiler, "sprockets/static_compiler" -- cgit v1.2.3 From 793e9da63d74a082281d41c2bc90e7bd02adcde4 Mon Sep 17 00:00:00 2001 From: Christos Zisopoulos Date: Mon, 26 Sep 2011 14:27:04 +0200 Subject: Give precedence to `config.digest = false` over manifest.yml asset digests --- actionpack/lib/sprockets/helpers/rails_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index fe822b338e..1e0e9bef77 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -114,7 +114,7 @@ module Sprockets end def digest_for(logical_path) - if asset_digests && (digest = asset_digests[logical_path]) + if digest_assets && asset_digests && (digest = asset_digests[logical_path]) return digest end -- cgit v1.2.3 From b8553274439d34568a4c16031ed86ac6d111681d Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Mon, 26 Sep 2011 11:20:30 -0300 Subject: image_tag should use /assets if asset pipelining is turned on. Closes #3126 --- actionpack/lib/sprockets/helpers/rails_helper.rb | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index fe822b338e..62bfcb24dd 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -60,6 +60,10 @@ module Sprockets options[:body] ? "#{path}?body=1" : path end + def path_to_image(source) + asset_paths.compute_public_path(source, asset_prefix) + end + private def debug_assets? compile_assets? && (Rails.application.config.assets.debug || params[:debug_assets]) -- cgit v1.2.3 From 5c0e9333c0973123fb1ce2cde68a1c211d422f91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Mon, 26 Sep 2011 16:26:04 +0200 Subject: Encapsulate assets initialization in its own rake task. --- actionpack/lib/sprockets/assets.rake | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 7764bd401a..65f0ad4cc8 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -10,8 +10,7 @@ namespace :assets do else require "fileutils" Rake::Task["tmp:cache:clear"].invoke - Rails.application.initialize!(:assets) - Sprockets::Bootstrap.new(Rails.application).run + Rake::Task["assets:environment"].invoke unless Rails.application.config.assets.enabled raise "Cannot precompile assets if sprockets is disabled. Please set config.assets.enabled to true" @@ -40,9 +39,14 @@ namespace :assets do end desc "Remove compiled assets" - task :clean => [:environment, 'tmp:cache:clear'] do + task :clean => ['assets:environment', 'tmp:cache:clear'] do config = Rails.application.config public_asset_path = File.join(Rails.public_path, config.assets.prefix) rm_rf public_asset_path, :secure => true end + + task :environment do + Rails.application.initialize!(:assets) + Sprockets::Bootstrap.new(Rails.application).run + end end -- cgit v1.2.3 From b8ea31540a7f3b195a211457a73de7a22b30059b Mon Sep 17 00:00:00 2001 From: Christos Zisopoulos Date: Mon, 26 Sep 2011 18:45:49 +0200 Subject: Correctly override image_path in sprockets rails_helper --- actionpack/lib/sprockets/helpers/rails_helper.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index fe37553fc1..b60165de5b 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -60,9 +60,10 @@ module Sprockets options[:body] ? "#{path}?body=1" : path end - def path_to_image(source) + def image_path(source) asset_paths.compute_public_path(source, asset_prefix) end + alias_method :path_to_image, :image_path # aliased to avoid conflicts with an image_path named route private def debug_assets? -- cgit v1.2.3 From 17882d2a9e8e93a5f6dbe2278deb73269fff30c9 Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Mon, 26 Sep 2011 13:50:20 -0300 Subject: Copy assets to nondigested filenames too --- actionpack/lib/sprockets/assets.rake | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 65f0ad4cc8..1e72d29ca2 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -19,10 +19,10 @@ namespace :assets do # Ensure that action view is loaded and the appropriate sprockets hooks get executed ActionView::Base - # Always compile files - Rails.application.config.assets.compile = true - config = Rails.application.config + config.assets.compile = true + config.assets.digest = false if ENV["RAILS_ASSETS_NONDIGEST"] + env = Rails.application.assets target = File.join(Rails.public_path, config.assets.prefix) @@ -32,8 +32,12 @@ namespace :assets do manifest_path = config.assets.manifest || target FileUtils.mkdir_p(manifest_path) - File.open("#{manifest_path}/manifest.yml", 'wb') do |f| - YAML.dump(manifest, f) + unless ENV["RAILS_ASSETS_NONDIGEST"] + File.open("#{manifest_path}/manifest.yml", 'wb') do |f| + YAML.dump(manifest, f) + end + ENV["RAILS_ASSETS_NONDIGEST"] = "true" + ruby $0, *ARGV end end end -- cgit v1.2.3 From 1996e93eaa97993e176d2036be7b76d93709b141 Mon Sep 17 00:00:00 2001 From: Christos Zisopoulos Date: Mon, 26 Sep 2011 18:56:30 +0200 Subject: Refactor image_path to use asset_path directly --- actionpack/lib/sprockets/helpers/rails_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index b60165de5b..c8c6c3ddd9 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -61,7 +61,7 @@ module Sprockets end def image_path(source) - asset_paths.compute_public_path(source, asset_prefix) + asset_path(source) end alias_method :path_to_image, :image_path # aliased to avoid conflicts with an image_path named route -- cgit v1.2.3 From cf90181d8409909803a8325f33e04b5dbdcd6ada Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Mon, 26 Sep 2011 09:56:38 -0700 Subject: Merge pull request #3136 from guilleiguaran/clear-digests-on-precompile Avoid use of existing precompiled assets during rake assets:precompile run --- actionpack/lib/sprockets/assets.rake | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 1e72d29ca2..e29661e4e7 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -25,6 +25,10 @@ namespace :assets do env = Rails.application.assets + # Always compile files and avoid use of existing precompiled assets + config.assets.compile = true + config.assets.digests = {} + target = File.join(Rails.public_path, config.assets.prefix) static_compiler = Sprockets::StaticCompiler.new(env, target, :digest => config.assets.digest) -- cgit v1.2.3 From 64b0c8888b908ede5372e0a70cb4cb8731d372ba Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Wed, 28 Sep 2011 20:13:24 -0300 Subject: javascript_path and stylesheet_path should honor the asset pipelining --- actionpack/lib/sprockets/helpers/rails_helper.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index c8c6c3ddd9..e1d8fccf04 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -65,6 +65,16 @@ module Sprockets end alias_method :path_to_image, :image_path # aliased to avoid conflicts with an image_path named route + def javascript_path(source) + asset_path(source) + end + alias_method :path_to_javascript, :javascript_path # aliased to avoid conflicts with an javascript_path named route + + def stylesheet_path(source) + asset_path(source) + end + alias_method :path_to_stylesheet, :stylesheet_path # aliased to avoid conflicts with an stylesheet_path named route + private def debug_assets? compile_assets? && (Rails.application.config.assets.debug || params[:debug_assets]) -- cgit v1.2.3 From b30ffbbfd6da4547449c5cea81ec7627762259c6 Mon Sep 17 00:00:00 2001 From: Arun Agrawal Date: Sat, 1 Oct 2011 14:27:12 +0530 Subject: Use of :: in void context Warning removed --- actionpack/lib/sprockets/assets.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index e29661e4e7..bb5cf6740a 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -17,7 +17,7 @@ namespace :assets do end # Ensure that action view is loaded and the appropriate sprockets hooks get executed - ActionView::Base + _ = ActionView::Base config = Rails.application.config config.assets.compile = true -- cgit v1.2.3 From 753424079e497d8ab7bc611093a34194200e3c7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sun, 2 Oct 2011 12:14:31 +0200 Subject: Provide initialize_on_precompile which, when set to false, does not initialize the app for precompilation. Defaults to true. --- actionpack/lib/sprockets/assets.rake | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index bb5cf6740a..7b86d84a27 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -54,7 +54,11 @@ namespace :assets do end task :environment do - Rails.application.initialize!(:assets) - Sprockets::Bootstrap.new(Rails.application).run + if Rails.application.config.assets.initialize_on_precompile + Rake::Task["environment"].invoke + else + Rails.application.initialize!(:assets) + Sprockets::Bootstrap.new(Rails.application).run + end end end -- cgit v1.2.3 From d68884f4fddf5452f1dcbdf1a7b35d5889926fe5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sun, 2 Oct 2011 22:02:12 +0200 Subject: :group => :assets should only run in the assets environment. --- actionpack/lib/sprockets/railtie.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/railtie.rb b/actionpack/lib/sprockets/railtie.rb index 6b67fb1d2d..6e93bd3035 100644 --- a/actionpack/lib/sprockets/railtie.rb +++ b/actionpack/lib/sprockets/railtie.rb @@ -14,7 +14,7 @@ module Sprockets load "sprockets/assets.rake" end - initializer "sprockets.environment", :group => :assets do |app| + initializer "sprockets.environment", :group => :all do |app| config = app.config next unless config.assets.enabled -- cgit v1.2.3 From 6f429f375e43529f2dd1a2f37cbaabeef40c6ea9 Mon Sep 17 00:00:00 2001 From: Sam Pohlenz Date: Mon, 3 Oct 2011 16:06:04 +1030 Subject: Ensure that enhancements to assets:precompile task are only run once MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: José Valim --- actionpack/lib/sprockets/assets.rake | 2 ++ 1 file changed, 2 insertions(+) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 7b86d84a27..ff678426ab 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -7,6 +7,7 @@ namespace :assets do ENV["RAILS_GROUPS"] ||= "assets" ENV["RAILS_ENV"] ||= "production" ruby $0, *ARGV + exit else require "fileutils" Rake::Task["tmp:cache:clear"].invoke @@ -42,6 +43,7 @@ namespace :assets do end ENV["RAILS_ASSETS_NONDIGEST"] = "true" ruby $0, *ARGV + exit end end end -- cgit v1.2.3 From 2120d7b838819e14b1722f68941d9c553563a6da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Mon, 3 Oct 2011 17:31:11 +0200 Subject: Fix #3198. --- actionpack/lib/sprockets/assets.rake | 74 +++++++++++++++++------------------- 1 file changed, 35 insertions(+), 39 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index ff678426ab..cc1e70d114 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -1,55 +1,51 @@ -namespace :assets do - desc "Compile all the assets named in config.assets.precompile" - task :precompile do - # We need to do this dance because RAILS_GROUPS is used - # too early in the boot process and changing here is already too late. - if ENV["RAILS_GROUPS"].to_s.empty? || ENV["RAILS_ENV"].to_s.empty? - ENV["RAILS_GROUPS"] ||= "assets" - ENV["RAILS_ENV"] ||= "production" - ruby $0, *ARGV - exit - else - require "fileutils" - Rake::Task["tmp:cache:clear"].invoke - Rake::Task["assets:environment"].invoke +require "fileutils" - unless Rails.application.config.assets.enabled - raise "Cannot precompile assets if sprockets is disabled. Please set config.assets.enabled to true" - end +namespace :assets do + def invoke_precompile + args = [$0, "assets:internal_precompile"] + args << "--trace" if Rake.application.options.trace + ruby *args + end - # Ensure that action view is loaded and the appropriate sprockets hooks get executed - _ = ActionView::Base + desc "Compile all the assets named in config.assets.precompile" + task :precompile => "assets:clean" do + ENV["RAILS_GROUPS"] ||= "assets" + ENV["RAILS_ENV"] ||= "production" + invoke_precompile + end - config = Rails.application.config - config.assets.compile = true - config.assets.digest = false if ENV["RAILS_ASSETS_NONDIGEST"] + task :internal_precompile => "assets:environment" do + unless Rails.application.config.assets.enabled + raise "Cannot precompile assets if sprockets is disabled. Please set config.assets.enabled to true" + end - env = Rails.application.assets + # Ensure that action view is loaded and the appropriate sprockets hooks get executed + _ = ActionView::Base - # Always compile files and avoid use of existing precompiled assets - config.assets.compile = true - config.assets.digests = {} + config = Rails.application.config + config.assets.compile = true + config.assets.digest = false if ENV["RAILS_ASSETS_NONDIGEST"] + config.assets.digests = {} - target = File.join(Rails.public_path, config.assets.prefix) - static_compiler = Sprockets::StaticCompiler.new(env, target, :digest => config.assets.digest) + env = Rails.application.assets + target = File.join(Rails.public_path, config.assets.prefix) + static_compiler = Sprockets::StaticCompiler.new(env, target, :digest => config.assets.digest) - manifest = static_compiler.precompile(config.assets.precompile) - manifest_path = config.assets.manifest || target - FileUtils.mkdir_p(manifest_path) + manifest = static_compiler.precompile(config.assets.precompile) + manifest_path = config.assets.manifest || target + FileUtils.mkdir_p(manifest_path) - unless ENV["RAILS_ASSETS_NONDIGEST"] - File.open("#{manifest_path}/manifest.yml", 'wb') do |f| - YAML.dump(manifest, f) - end - ENV["RAILS_ASSETS_NONDIGEST"] = "true" - ruby $0, *ARGV - exit + unless ENV["RAILS_ASSETS_NONDIGEST"] + File.open("#{manifest_path}/manifest.yml", 'wb') do |f| + YAML.dump(manifest, f) end + ENV["RAILS_ASSETS_NONDIGEST"] = "true" + invoke_precompile end end desc "Remove compiled assets" - task :clean => ['assets:environment', 'tmp:cache:clear'] do + task :clean => "tmp:cache:clear" do config = Rails.application.config public_asset_path = File.join(Rails.public_path, config.assets.prefix) rm_rf public_asset_path, :secure => true -- cgit v1.2.3 From 7f1a666db57983814e175cb5b54bb6621ec95c4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Tue, 4 Oct 2011 11:24:12 +0200 Subject: Fix failing tests and refactor assets.rake --- actionpack/lib/sprockets/assets.rake | 61 ++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 24 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index cc1e70d114..000e7175c0 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -1,51 +1,64 @@ require "fileutils" namespace :assets do - def invoke_precompile - args = [$0, "assets:internal_precompile"] + def ruby_rake_task(task) + args = [$0, task] args << "--trace" if Rake.application.options.trace ruby *args end desc "Compile all the assets named in config.assets.precompile" - task :precompile => "assets:clean" do + task :precompile do ENV["RAILS_GROUPS"] ||= "assets" ENV["RAILS_ENV"] ||= "production" - invoke_precompile + ruby_rake_task "assets:precompile:all" end - task :internal_precompile => "assets:environment" do - unless Rails.application.config.assets.enabled - raise "Cannot precompile assets if sprockets is disabled. Please set config.assets.enabled to true" - end + namespace :precompile do + def internal_precompile(digest=nil) + unless Rails.application.config.assets.enabled + warn "Cannot precompile assets if sprockets is disabled. Please set config.assets.enabled to true" + exit + end - # Ensure that action view is loaded and the appropriate sprockets hooks get executed - _ = ActionView::Base + # Ensure that action view is loaded and the appropriate + # sprockets hooks get executed + _ = ActionView::Base - config = Rails.application.config - config.assets.compile = true - config.assets.digest = false if ENV["RAILS_ASSETS_NONDIGEST"] - config.assets.digests = {} + config = Rails.application.config + config.assets.compile = true + config.assets.digest = digest unless digest.nil? + config.assets.digests = {} + + env = Rails.application.assets + target = File.join(Rails.public_path, config.assets.prefix) + static_compiler = Sprockets::StaticCompiler.new(env, target, :digest => config.assets.digest) + static_compiler.precompile(config.assets.precompile) + end - env = Rails.application.assets - target = File.join(Rails.public_path, config.assets.prefix) - static_compiler = Sprockets::StaticCompiler.new(env, target, :digest => config.assets.digest) + task :all do + Rake::Task["assets:precompile:digest"].invoke + ruby_rake_task "assets:precompile:nondigest" + end - manifest = static_compiler.precompile(config.assets.precompile) - manifest_path = config.assets.manifest || target - FileUtils.mkdir_p(manifest_path) + task :digest => ["assets:environment", "tmp:cache:clear"] do + manifest = internal_precompile + config = Rails.application.config + manifest_path = config.assets.manifest || File.join(Rails.public_path, config.assets.prefix) + FileUtils.mkdir_p(manifest_path) - unless ENV["RAILS_ASSETS_NONDIGEST"] File.open("#{manifest_path}/manifest.yml", 'wb') do |f| YAML.dump(manifest, f) end - ENV["RAILS_ASSETS_NONDIGEST"] = "true" - invoke_precompile + end + + task :nondigest => ["assets:environment", "tmp:cache:clear"] do + internal_precompile(false) end end desc "Remove compiled assets" - task :clean => "tmp:cache:clear" do + task :clean => ["assets:environment", "tmp:cache:clear"] do config = Rails.application.config public_asset_path = File.join(Rails.public_path, config.assets.prefix) rm_rf public_asset_path, :secure => true -- cgit v1.2.3 From dc85fc546fb9c40a610d3f3d029ccb3692aefc02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Tue, 4 Oct 2011 22:03:59 +0200 Subject: Fix failing test added in previous commit. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: José Valim --- actionpack/lib/sprockets/assets.rake | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 000e7175c0..7ab079c626 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -58,10 +58,18 @@ namespace :assets do end desc "Remove compiled assets" - task :clean => ["assets:environment", "tmp:cache:clear"] do - config = Rails.application.config - public_asset_path = File.join(Rails.public_path, config.assets.prefix) - rm_rf public_asset_path, :secure => true + task :clean do + ENV["RAILS_GROUPS"] ||= "assets" + ENV["RAILS_ENV"] ||= "production" + ruby_rake_task "assets:clean:all" + end + + namespace :clean do + task :all => ["assets:environment", "tmp:cache:clear"] do + config = Rails.application.config + public_asset_path = File.join(Rails.public_path, config.assets.prefix) + rm_rf public_asset_path, :secure => true + end end task :environment do -- cgit v1.2.3 From b41bd968c6734737d14c542c514b8deef30a3ffe Mon Sep 17 00:00:00 2001 From: "Mark J. Titorenko" Date: Tue, 4 Oct 2011 23:05:01 +0100 Subject: assets compilation task refactoring MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: José Valim --- actionpack/lib/sprockets/assets.rake | 19 ++++++----- actionpack/lib/sprockets/static_compiler.rb | 49 +++++++++++++++++------------ 2 files changed, 38 insertions(+), 30 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 7ab079c626..8f993b0abb 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -28,12 +28,18 @@ namespace :assets do config = Rails.application.config config.assets.compile = true config.assets.digest = digest unless digest.nil? + config.assets.digests = {} env = Rails.application.assets target = File.join(Rails.public_path, config.assets.prefix) - static_compiler = Sprockets::StaticCompiler.new(env, target, :digest => config.assets.digest) - static_compiler.precompile(config.assets.precompile) + compiler = Sprockets::StaticCompiler.new(env, + target, + config.assets.precompile, + :manifest_path => config.assets.manifest, + :digest => config.assets.digest, + :manifest => digest.nil?) + compiler.compile end task :all do @@ -42,14 +48,7 @@ namespace :assets do end task :digest => ["assets:environment", "tmp:cache:clear"] do - manifest = internal_precompile - config = Rails.application.config - manifest_path = config.assets.manifest || File.join(Rails.public_path, config.assets.prefix) - FileUtils.mkdir_p(manifest_path) - - File.open("#{manifest_path}/manifest.yml", 'wb') do |f| - YAML.dump(manifest, f) - end + internal_precompile end task :nondigest => ["assets:environment", "tmp:cache:clear"] do diff --git a/actionpack/lib/sprockets/static_compiler.rb b/actionpack/lib/sprockets/static_compiler.rb index 4a0078be46..32a9d66e6e 100644 --- a/actionpack/lib/sprockets/static_compiler.rb +++ b/actionpack/lib/sprockets/static_compiler.rb @@ -2,41 +2,50 @@ require 'fileutils' module Sprockets class StaticCompiler - attr_accessor :env, :target, :digest + attr_accessor :env, :target, :paths - def initialize(env, target, options = {}) + def initialize(env, target, paths, options = {}) @env = env @target = target + @paths = paths @digest = options.key?(:digest) ? options.delete(:digest) : true + @manifest = options.key?(:manifest) ? options.delete(:manifest) : true + @manifest_path = options.delete(:manifest_path) || target end - def precompile(paths) - Rails.application.config.assets.digest = digest + def compile manifest = {} - env.each_logical_path do |logical_path| - next unless precompile_path?(logical_path, paths) + next unless compile_path?(logical_path) if asset = env.find_asset(logical_path) - manifest[logical_path] = compile(asset) + manifest[logical_path] = write_asset(asset) end end - manifest + write_manifest(manifest) if @manifest end - def compile(asset) - asset_path = digest_asset(asset) - filename = File.join(target, asset_path) - FileUtils.mkdir_p File.dirname(filename) - asset.write_to(filename) - asset.write_to("#{filename}.gz") if filename.to_s =~ /\.(css|js)$/ - asset_path + def write_manifest(manifest) + FileUtils.mkdir_p(@manifest_path) + File.open("#{@manifest_path}/manifest.yml", 'wb') do |f| + YAML.dump(manifest, f) + end + end + + def write_asset(asset) + path_for(asset).tap do |path| + filename = File.join(target, path) + FileUtils.mkdir_p File.dirname(filename) + asset.write_to(filename) + asset.write_to("#{filename}.gz") if filename.to_s =~ /\.(css|js)$/ + end end - def precompile_path?(logical_path, paths) + def compile_path?(logical_path) paths.each do |path| - if path.is_a?(Regexp) + case path + when Regexp return true if path.match(logical_path) - elsif path.is_a?(Proc) + when Proc return true if path.call(logical_path) else return true if File.fnmatch(path.to_s, logical_path) @@ -45,8 +54,8 @@ module Sprockets false end - def digest_asset(asset) - digest ? asset.digest_path : asset.logical_path + def path_for(asset) + @digest ? asset.digest_path : asset.logical_path end end end -- cgit v1.2.3 From ee51cc30ff93201c9e76e7fcfa2d298e4e1568c3 Mon Sep 17 00:00:00 2001 From: "Mark J. Titorenko" Date: Tue, 4 Oct 2011 23:10:11 +0100 Subject: don't munge the environment, let rake do that for us MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: José Valim --- actionpack/lib/sprockets/assets.rake | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 8f993b0abb..18fe9f05a0 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -2,15 +2,15 @@ require "fileutils" namespace :assets do def ruby_rake_task(task) - args = [$0, task] + env = ENV['RAILS_ENV'] || 'production' + groups = ENV['RAILS_GROUPS'] || 'assets' + args = [$0, task,"RAILS_ENV=#{env}","RAILS_GROUPS=#{groups}"] args << "--trace" if Rake.application.options.trace ruby *args end desc "Compile all the assets named in config.assets.precompile" task :precompile do - ENV["RAILS_GROUPS"] ||= "assets" - ENV["RAILS_ENV"] ||= "production" ruby_rake_task "assets:precompile:all" end @@ -58,8 +58,6 @@ namespace :assets do desc "Remove compiled assets" task :clean do - ENV["RAILS_GROUPS"] ||= "assets" - ENV["RAILS_ENV"] ||= "production" ruby_rake_task "assets:clean:all" end -- cgit v1.2.3 From 42eda8f8a19e30e9d5de4e8963df1ee6ed8ce5a1 Mon Sep 17 00:00:00 2001 From: "Mark J. Titorenko" Date: Tue, 4 Oct 2011 23:22:51 +0100 Subject: only execute the nondigest task if needed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: José Valim --- actionpack/lib/sprockets/assets.rake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 18fe9f05a0..68d9a9ca31 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -43,11 +43,11 @@ namespace :assets do end task :all do - Rake::Task["assets:precompile:digest"].invoke - ruby_rake_task "assets:precompile:nondigest" + Rake::Task["assets:precompile:primary"].invoke + ruby_rake_task "assets:precompile:nondigest" if Rails.application.config.assets.digest end - task :digest => ["assets:environment", "tmp:cache:clear"] do + task :primary => ["assets:environment", "tmp:cache:clear"] do internal_precompile end -- cgit v1.2.3 From 26a62a6552b19332f23cc4af87d74ae3ee4aa123 Mon Sep 17 00:00:00 2001 From: "Mark J. Titorenko" Date: Tue, 4 Oct 2011 23:27:29 +0100 Subject: only reinvoke if necessary MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: José Valim --- actionpack/lib/sprockets/assets.rake | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 68d9a9ca31..15cba0c475 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -11,7 +11,14 @@ namespace :assets do desc "Compile all the assets named in config.assets.precompile" task :precompile do - ruby_rake_task "assets:precompile:all" + if ENV['RAILS_GROUPS'].to_s.empty? || ENV['RAILS_ENV'].to_s.empty? + # We are currently running with no explicit bundler group + # and/or no explicit environment - we have to reinvoke rake to + # execute this task. + ruby_rake_task "assets:precompile:all" + else + Rake::Task["assets:precompile:all"].invoke + end end namespace :precompile do @@ -58,7 +65,14 @@ namespace :assets do desc "Remove compiled assets" task :clean do - ruby_rake_task "assets:clean:all" + if ENV['RAILS_GROUPS'].to_s.empty? || ENV['RAILS_ENV'].to_s.empty? + # We are currently running with no explicit bundler group + # and/or no explicit environment - we have to reinvoke rake to + # execute this task. + ruby_rake_task "assets:clean:all" + else + Rake::Task["assets:clean:all"].invoke + end end namespace :clean do -- cgit v1.2.3 From 110ce85482a3f57f7776067f206408ecc36b9363 Mon Sep 17 00:00:00 2001 From: "Mark J. Titorenko" Date: Tue, 4 Oct 2011 23:27:53 +0100 Subject: added comment about why nondigest assets requires a reinvocation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: José Valim --- actionpack/lib/sprockets/assets.rake | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 15cba0c475..e2536e4ac1 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -51,6 +51,11 @@ namespace :assets do task :all do Rake::Task["assets:precompile:primary"].invoke + # We need to reinvoke in order to run the secondary digestless + # asset compilation run - a fresh Sprockets environment is + # required in order to compile digestless assets as the + # environment has already cached the assets on the primary + # run. ruby_rake_task "assets:precompile:nondigest" if Rails.application.config.assets.digest end -- cgit v1.2.3 From ac2f6bd6431311b1eae9d8ac6c217d2c2fbc2b3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 5 Oct 2011 01:17:04 +0200 Subject: Encapsulate common rake invocation logic in a method. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: José Valim --- actionpack/lib/sprockets/assets.rake | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index e2536e4ac1..a801050084 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -2,25 +2,29 @@ require "fileutils" namespace :assets do def ruby_rake_task(task) - env = ENV['RAILS_ENV'] || 'production' + env = ENV['RAILS_ENV'] || 'production' groups = ENV['RAILS_GROUPS'] || 'assets' - args = [$0, task,"RAILS_ENV=#{env}","RAILS_GROUPS=#{groups}"] + args = [$0, task,"RAILS_ENV=#{env}","RAILS_GROUPS=#{groups}"] args << "--trace" if Rake.application.options.trace ruby *args end - desc "Compile all the assets named in config.assets.precompile" - task :precompile do + # We are currently running with no explicit bundler group + # and/or no explicit environment - we have to reinvoke rake to + # execute this task. + def invoke_or_reboot_rake_task(task) if ENV['RAILS_GROUPS'].to_s.empty? || ENV['RAILS_ENV'].to_s.empty? - # We are currently running with no explicit bundler group - # and/or no explicit environment - we have to reinvoke rake to - # execute this task. - ruby_rake_task "assets:precompile:all" + ruby_rake_task task else - Rake::Task["assets:precompile:all"].invoke + Rake::Task[task].invoke end end + desc "Compile all the assets named in config.assets.precompile" + task :precompile do + invoke_or_reboot_rake_task "assets:precompile:all" + end + namespace :precompile do def internal_precompile(digest=nil) unless Rails.application.config.assets.enabled @@ -70,14 +74,7 @@ namespace :assets do desc "Remove compiled assets" task :clean do - if ENV['RAILS_GROUPS'].to_s.empty? || ENV['RAILS_ENV'].to_s.empty? - # We are currently running with no explicit bundler group - # and/or no explicit environment - we have to reinvoke rake to - # execute this task. - ruby_rake_task "assets:clean:all" - else - Rake::Task["assets:clean:all"].invoke - end + invoke_or_reboot_rake_task "assets:clean:all" end namespace :clean do -- cgit v1.2.3 From 5711a35ad8faa3fb6d138b234cbe9acfad27a9a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 5 Oct 2011 02:07:25 +0200 Subject: Ensure default_asset_host_protocol is respected, closes #2980. --- actionpack/lib/sprockets/railtie.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/railtie.rb b/actionpack/lib/sprockets/railtie.rb index 6e93bd3035..2cf54b7777 100644 --- a/actionpack/lib/sprockets/railtie.rb +++ b/actionpack/lib/sprockets/railtie.rb @@ -1,3 +1,5 @@ +require "action_controller/railtie" + module Sprockets autoload :Bootstrap, "sprockets/bootstrap" autoload :Helpers, "sprockets/helpers" @@ -8,7 +10,7 @@ module Sprockets # TODO: Get rid of config.assets.enabled class Railtie < ::Rails::Railtie - config.default_asset_host_protocol = :relative + config.action_controller.default_asset_host_protocol = :relative rake_tasks do load "sprockets/assets.rake" -- cgit v1.2.3 From 87c57bb88f0eb1462ed31733ebcf3d9a535d8f16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 5 Oct 2011 02:17:29 +0200 Subject: Fix the lame config.action_controller.present? check scattered throughout assets_path. Conflicts: actionpack/test/template/sprockets_helper_test.rb --- actionpack/lib/sprockets/assets.rake | 7 ++++--- actionpack/lib/sprockets/helpers.rb | 3 ++- actionpack/lib/sprockets/helpers/precompile_helper.rb | 13 +++++++++++++ actionpack/lib/sprockets/helpers/rails_helper.rb | 3 --- actionpack/lib/sprockets/railtie.rb | 5 +---- 5 files changed, 20 insertions(+), 11 deletions(-) create mode 100644 actionpack/lib/sprockets/helpers/precompile_helper.rb (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index a801050084..80c3d4d0b8 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -39,12 +39,13 @@ namespace :assets do config = Rails.application.config config.assets.compile = true config.assets.digest = digest unless digest.nil? - config.assets.digests = {} - env = Rails.application.assets + env = Rails.application.assets + env.context_class.send :include, ::Sprockets::Helpers::PrecompileHelper + target = File.join(Rails.public_path, config.assets.prefix) - compiler = Sprockets::StaticCompiler.new(env, + compiler = Sprockets::StaticCompiler.new(env, target, config.assets.precompile, :manifest_path => config.assets.manifest, diff --git a/actionpack/lib/sprockets/helpers.rb b/actionpack/lib/sprockets/helpers.rb index a952a55c5e..cd9c8f62e6 100644 --- a/actionpack/lib/sprockets/helpers.rb +++ b/actionpack/lib/sprockets/helpers.rb @@ -1,5 +1,6 @@ module Sprockets module Helpers - autoload :RailsHelper, "sprockets/helpers/rails_helper" + autoload :RailsHelper, "sprockets/helpers/rails_helper" + autoload :PrecompileHelper, "sprockets/helpers/precompile_helper" end end diff --git a/actionpack/lib/sprockets/helpers/precompile_helper.rb b/actionpack/lib/sprockets/helpers/precompile_helper.rb new file mode 100644 index 0000000000..ca7927f6fb --- /dev/null +++ b/actionpack/lib/sprockets/helpers/precompile_helper.rb @@ -0,0 +1,13 @@ +module Sprockets + module Helpers + module PrecompileHelper + def controller + nil + end + + def config + Rails.application.config.action_controller + end + end + end +end diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index e1d8fccf04..f866bc626e 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -8,9 +8,6 @@ module Sprockets def asset_paths @asset_paths ||= begin - config = self.config if respond_to?(:config) - config ||= Rails.application.config - controller = self.controller if respond_to?(:controller) paths = RailsHelper::AssetPaths.new(config, controller) paths.asset_environment = asset_environment paths.asset_digests = asset_digests diff --git a/actionpack/lib/sprockets/railtie.rb b/actionpack/lib/sprockets/railtie.rb index 2cf54b7777..e29612d320 100644 --- a/actionpack/lib/sprockets/railtie.rb +++ b/actionpack/lib/sprockets/railtie.rb @@ -43,10 +43,7 @@ module Sprockets ActiveSupport.on_load(:action_view) do include ::Sprockets::Helpers::RailsHelper - - app.assets.context_class.instance_eval do - include ::Sprockets::Helpers::RailsHelper - end + app.assets.context_class.send :include, ::Sprockets::Helpers::RailsHelper end end -- cgit v1.2.3 From 4cea4ee6b54fee897b984a3c0288d12ce2d1efe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 5 Oct 2011 09:35:27 +0200 Subject: Fix regression when calling helpers inside sprockets. --- actionpack/lib/sprockets/assets.rake | 6 ++---- actionpack/lib/sprockets/helpers.rb | 4 ++-- actionpack/lib/sprockets/helpers/isolated_helper.rb | 13 +++++++++++++ actionpack/lib/sprockets/helpers/precompile_helper.rb | 13 ------------- actionpack/lib/sprockets/railtie.rb | 5 ++++- 5 files changed, 21 insertions(+), 20 deletions(-) create mode 100644 actionpack/lib/sprockets/helpers/isolated_helper.rb delete mode 100644 actionpack/lib/sprockets/helpers/precompile_helper.rb (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index 80c3d4d0b8..a5145080c2 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -41,10 +41,8 @@ namespace :assets do config.assets.digest = digest unless digest.nil? config.assets.digests = {} - env = Rails.application.assets - env.context_class.send :include, ::Sprockets::Helpers::PrecompileHelper - - target = File.join(Rails.public_path, config.assets.prefix) + env = Rails.application.assets + target = File.join(Rails.public_path, config.assets.prefix) compiler = Sprockets::StaticCompiler.new(env, target, config.assets.precompile, diff --git a/actionpack/lib/sprockets/helpers.rb b/actionpack/lib/sprockets/helpers.rb index cd9c8f62e6..fee48386e0 100644 --- a/actionpack/lib/sprockets/helpers.rb +++ b/actionpack/lib/sprockets/helpers.rb @@ -1,6 +1,6 @@ module Sprockets module Helpers - autoload :RailsHelper, "sprockets/helpers/rails_helper" - autoload :PrecompileHelper, "sprockets/helpers/precompile_helper" + autoload :RailsHelper, "sprockets/helpers/rails_helper" + autoload :IsolatedHelper, "sprockets/helpers/isolated_helper" end end diff --git a/actionpack/lib/sprockets/helpers/isolated_helper.rb b/actionpack/lib/sprockets/helpers/isolated_helper.rb new file mode 100644 index 0000000000..3adb928c45 --- /dev/null +++ b/actionpack/lib/sprockets/helpers/isolated_helper.rb @@ -0,0 +1,13 @@ +module Sprockets + module Helpers + module IsolatedHelper + def controller + nil + end + + def config + Rails.application.config.action_controller + end + end + end +end diff --git a/actionpack/lib/sprockets/helpers/precompile_helper.rb b/actionpack/lib/sprockets/helpers/precompile_helper.rb deleted file mode 100644 index ca7927f6fb..0000000000 --- a/actionpack/lib/sprockets/helpers/precompile_helper.rb +++ /dev/null @@ -1,13 +0,0 @@ -module Sprockets - module Helpers - module PrecompileHelper - def controller - nil - end - - def config - Rails.application.config.action_controller - end - end - end -end diff --git a/actionpack/lib/sprockets/railtie.rb b/actionpack/lib/sprockets/railtie.rb index e29612d320..3d330bd91a 100644 --- a/actionpack/lib/sprockets/railtie.rb +++ b/actionpack/lib/sprockets/railtie.rb @@ -43,7 +43,10 @@ module Sprockets ActiveSupport.on_load(:action_view) do include ::Sprockets::Helpers::RailsHelper - app.assets.context_class.send :include, ::Sprockets::Helpers::RailsHelper + app.assets.context_class.instance_eval do + include ::Sprockets::Helpers::IsolatedHelper + include ::Sprockets::Helpers::RailsHelper + end end end -- cgit v1.2.3 From fd8f0b297822ba36002084faa36bd0320d3be4a7 Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Wed, 5 Oct 2011 15:41:28 -0200 Subject: stylesheet_link_tag('/stylesheets/application') and similar helpers doesn't throw Sprockets::FileOutsidePaths exception anymore --- actionpack/lib/sprockets/helpers/rails_helper.rb | 2 ++ 1 file changed, 2 insertions(+) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index f866bc626e..ddf9b08b54 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -123,6 +123,8 @@ module Sprockets return nil if is_uri?(source) source = rewrite_extension(source, nil, ext) asset_environment[source] + rescue Sprockets::FileOutsidePaths + nil end def digest_for(logical_path) -- cgit v1.2.3 From ca219a21b60ea20868deab20afaa0335d32f1c17 Mon Sep 17 00:00:00 2001 From: Arun Agrawal Date: Sun, 9 Oct 2011 17:15:55 +0530 Subject: Warnings removed when running with 1.9.3 --- actionpack/lib/sprockets/assets.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/assets.rake b/actionpack/lib/sprockets/assets.rake index a5145080c2..a61a121d55 100644 --- a/actionpack/lib/sprockets/assets.rake +++ b/actionpack/lib/sprockets/assets.rake @@ -6,7 +6,7 @@ namespace :assets do groups = ENV['RAILS_GROUPS'] || 'assets' args = [$0, task,"RAILS_ENV=#{env}","RAILS_GROUPS=#{groups}"] args << "--trace" if Rake.application.options.trace - ruby *args + ruby(*args) end # We are currently running with no explicit bundler group -- cgit v1.2.3 From aa491f6a9c90641a2d4115420b14e45514962834 Mon Sep 17 00:00:00 2001 From: lest Date: Tue, 22 Nov 2011 16:39:07 +0300 Subject: javascript_include_tag should add '.js' to sources that contain '.' --- actionpack/lib/sprockets/helpers/rails_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/helpers/rails_helper.rb b/actionpack/lib/sprockets/helpers/rails_helper.rb index ddf9b08b54..1ebe7f68f7 100644 --- a/actionpack/lib/sprockets/helpers/rails_helper.rb +++ b/actionpack/lib/sprockets/helpers/rails_helper.rb @@ -154,7 +154,7 @@ module Sprockets end def rewrite_extension(source, dir, ext) - if ext && File.extname(source).empty? + if ext && File.extname(source) != ".#{ext}" "#{source}.#{ext}" else source -- cgit v1.2.3 From 88237daae48c9867fca3b0e14e779d4f4cdd88d0 Mon Sep 17 00:00:00 2001 From: Jonathan del Strother Date: Thu, 17 Nov 2011 11:48:12 +0000 Subject: Leave default_asset_host_protocol unset When default_asset_host_protocol is left as nil, it will use absolute protocols when a request is present, and relative protocols otherwise (eg in asset generation) --- actionpack/lib/sprockets/railtie.rb | 2 -- 1 file changed, 2 deletions(-) (limited to 'actionpack/lib/sprockets') diff --git a/actionpack/lib/sprockets/railtie.rb b/actionpack/lib/sprockets/railtie.rb index 3d330bd91a..a7eb03acaf 100644 --- a/actionpack/lib/sprockets/railtie.rb +++ b/actionpack/lib/sprockets/railtie.rb @@ -10,8 +10,6 @@ module Sprockets # TODO: Get rid of config.assets.enabled class Railtie < ::Rails::Railtie - config.action_controller.default_asset_host_protocol = :relative - rake_tasks do load "sprockets/assets.rake" end -- cgit v1.2.3