From 6e8fe1bf021139a2fbd06a10778ad2c6b67930ef Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Valim?= <jose.valim@gmail.com>
Date: Sun, 2 Oct 2011 11:28:48 +0200
Subject: TestCase should respect the view_assigns API instead of pulling
 variables on its own.

---
 actionpack/lib/abstract_controller/rendering.rb      |  4 ++--
 .../lib/action_dispatch/testing/test_process.rb      |  7 +------
 actionpack/test/controller/test_test.rb              | 20 ++++++++++++++++++++
 3 files changed, 23 insertions(+), 8 deletions(-)

(limited to 'actionpack')

diff --git a/actionpack/lib/abstract_controller/rendering.rb b/actionpack/lib/abstract_controller/rendering.rb
index ab2c532859..41fdc11196 100644
--- a/actionpack/lib/abstract_controller/rendering.rb
+++ b/actionpack/lib/abstract_controller/rendering.rb
@@ -120,8 +120,6 @@ module AbstractController
       view_renderer.render(view_context, options)
     end
 
-    private
-
     DEFAULT_PROTECTED_INSTANCE_VARIABLES = %w(
       @_action_name @_response_body @_formats @_prefixes @_config
       @_view_context_class @_view_renderer @_lookup_context
@@ -139,6 +137,8 @@ module AbstractController
       hash
     end
 
+    private
+
     # Normalize args and options.
     # :api: private
     def _normalize_render(*args, &block)
diff --git a/actionpack/lib/action_dispatch/testing/test_process.rb b/actionpack/lib/action_dispatch/testing/test_process.rb
index f668b81b45..b08ff41950 100644
--- a/actionpack/lib/action_dispatch/testing/test_process.rb
+++ b/actionpack/lib/action_dispatch/testing/test_process.rb
@@ -5,12 +5,7 @@ require 'active_support/core_ext/hash/indifferent_access'
 module ActionDispatch
   module TestProcess
     def assigns(key = nil)
-      assigns = {}.with_indifferent_access
-      @controller.instance_variable_names.each do |ivar|
-        next if ActionController::Base.protected_instance_variables.include?(ivar)
-        assigns[ivar[1..-1]] = @controller.instance_variable_get(ivar)
-      end
-
+      assigns = @controller.view_assigns.with_indifferent_access
       key.nil? ? assigns : assigns[key]
     end
 
diff --git a/actionpack/test/controller/test_test.rb b/actionpack/test/controller/test_test.rb
index cba3aded2f..ca87cda2a3 100644
--- a/actionpack/test/controller/test_test.rb
+++ b/actionpack/test/controller/test_test.rb
@@ -146,6 +146,17 @@ XML
     end
   end
 
+  class ViewAssignsController < ActionController::Base
+    def test_assigns
+      @foo = "foo"
+      render :nothing => true
+    end
+
+    def view_assigns
+      { "bar" => "bar" }
+    end
+  end
+
   def test_raw_post_handling
     params = ActiveSupport::OrderedHash[:page, {:name => 'page name'}, 'some key', 123]
     post :render_raw_post, params.dup
@@ -256,6 +267,15 @@ XML
     assert_equal "foo", assigns["foo"]
   end
 
+  def test_view_assigns
+    @controller = ViewAssignsController.new
+    process :test_assigns
+    assert_equal nil, assigns(:foo)
+    assert_equal nil, assigns[:foo]
+    assert_equal "bar", assigns(:bar)
+    assert_equal "bar", assigns[:bar]
+  end
+
   def test_assert_tag_tag
     process :test_html_output
 
-- 
cgit v1.2.3


From 753424079e497d8ab7bc611093a34194200e3c7c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Valim?= <jose.valim@gmail.com>
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')

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?= <jose.valim@gmail.com>
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')

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 0eb80fabdd46baaf06e27697cfbd2cd8900d7f67 Mon Sep 17 00:00:00 2001
From: Alexey Vakhov <vakhov@gmail.com>
Date: Mon, 3 Oct 2011 10:01:52 +0400
Subject: use safe_constantize instead constantize in AC::TestCase

---
 actionpack/lib/action_controller/test_case.rb | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

(limited to 'actionpack')

diff --git a/actionpack/lib/action_controller/test_case.rb b/actionpack/lib/action_controller/test_case.rb
index a83fa74795..343beae1bb 100644
--- a/actionpack/lib/action_controller/test_case.rb
+++ b/actionpack/lib/action_controller/test_case.rb
@@ -352,9 +352,7 @@ module ActionController
         end
 
         def determine_default_controller_class(name)
-          name.sub(/Test$/, '').constantize
-        rescue NameError
-          nil
+          name.sub(/Test$/, '').safe_constantize
         end
 
         def prepare_controller_class(new_class)
-- 
cgit v1.2.3


From f51cb36fe9ef9edf67801df607ad034b12f7a8ea Mon Sep 17 00:00:00 2001
From: Alexey Vakhov <vakhov@gmail.com>
Date: Mon, 3 Oct 2011 10:36:13 +0400
Subject: missed underscore in AV::TestCase helper_method documentation

---
 actionpack/lib/action_view/test_case.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'actionpack')

diff --git a/actionpack/lib/action_view/test_case.rb b/actionpack/lib/action_view/test_case.rb
index c4d51d7946..1db079d0e3 100644
--- a/actionpack/lib/action_view/test_case.rb
+++ b/actionpack/lib/action_view/test_case.rb
@@ -63,7 +63,7 @@ module ActionView
           methods.flatten.each do |method|
             _helpers.module_eval <<-end_eval
               def #{method}(*args, &block)                    # def current_user(*args, &block)
-                _test_case.send(%(#{method}), *args, &block)  #   test_case.send(%(current_user), *args, &block)
+                _test_case.send(%(#{method}), *args, &block)  #   _test_case.send(%(current_user), *args, &block)
               end                                             # end
             end_eval
           end
-- 
cgit v1.2.3


From 8e946daf6957b46744a90d25266b0ec5e8537079 Mon Sep 17 00:00:00 2001
From: Alexey Vakhov <vakhov@gmail.com>
Date: Mon, 3 Oct 2011 10:19:15 +0400
Subject: normalize arg for AC::TestCase tests class method

---
 actionpack/lib/action_controller/test_case.rb | 16 ++++++++++++++--
 actionpack/test/controller/test_test.rb       | 16 ++++++++++++++++
 2 files changed, 30 insertions(+), 2 deletions(-)

(limited to 'actionpack')

diff --git a/actionpack/lib/action_controller/test_case.rb b/actionpack/lib/action_controller/test_case.rb
index a83fa74795..964ec6d5ae 100644
--- a/actionpack/lib/action_controller/test_case.rb
+++ b/actionpack/lib/action_controller/test_case.rb
@@ -333,9 +333,21 @@ module ActionController
       module ClassMethods
 
         # Sets the controller class name. Useful if the name can't be inferred from test class.
-        # Expects +controller_class+ as a constant. Example: <tt>tests WidgetController</tt>.
+        # Normalizes +controller_class+ before using. Examples:
+        #
+        #   tests WidgetController
+        #   tests :widget
+        #   tests 'widget'
+        #
         def tests(controller_class)
-          self.controller_class = controller_class
+          case controller_class
+          when String, Symbol
+            self.controller_class = "#{controller_class.to_s.underscore}_controller".camelize.constantize
+          when Class
+            self.controller_class = controller_class
+          else
+            raise ArgumentError, "controller class must be a String, Symbol, or Class"
+          end
         end
 
         def controller_class=(new_class)
diff --git a/actionpack/test/controller/test_test.rb b/actionpack/test/controller/test_test.rb
index ca87cda2a3..b64e275363 100644
--- a/actionpack/test/controller/test_test.rb
+++ b/actionpack/test/controller/test_test.rb
@@ -774,6 +774,22 @@ class CrazyNameTest < ActionController::TestCase
   end
 end
 
+class CrazySymbolNameTest < ActionController::TestCase
+  tests :content
+
+  def test_set_controller_class_using_symbol
+    assert_equal ContentController, self.class.controller_class
+  end
+end
+
+class CrazyStringNameTest < ActionController::TestCase
+  tests 'content'
+
+  def test_set_controller_class_using_string
+    assert_equal ContentController, self.class.controller_class
+  end
+end
+
 class NamedRoutesControllerTest < ActionController::TestCase
   tests ContentController
 
-- 
cgit v1.2.3


From 6f429f375e43529f2dd1a2f37cbaabeef40c6ea9 Mon Sep 17 00:00:00 2001
From: Sam Pohlenz <sam@sampohlenz.com>
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 <jose.valim@gmail.com>
---
 actionpack/lib/sprockets/assets.rake | 2 ++
 1 file changed, 2 insertions(+)

(limited to 'actionpack')

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?= <jose.valim@gmail.com>
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')

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 b05a56f47da24e57f1f1a398115cf664ec7eee56 Mon Sep 17 00:00:00 2001
From: Brendan Ribera <brendan.ribera@gmail.com>
Date: Mon, 3 Oct 2011 11:27:02 -0700
Subject: Require rack-cache 1.1.

Versions prior to 1.1 delete the If-Modified-Since and If-Not-Modified headers when
config.action_controller.perform_caching is true. This has two problems:
 * unexpected inconsistent behaviour between development & production environments
 * breaks applications that use of these headers
---
 actionpack/actionpack.gemspec | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'actionpack')

diff --git a/actionpack/actionpack.gemspec b/actionpack/actionpack.gemspec
index f1b7966b9c..b208357584 100644
--- a/actionpack/actionpack.gemspec
+++ b/actionpack/actionpack.gemspec
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
 
   s.add_dependency('activesupport',    version)
   s.add_dependency('activemodel',      version)
-  s.add_dependency('rack-cache',       '~> 1.0.3')
+  s.add_dependency('rack-cache',       '~> 1.1')
   s.add_dependency('builder',          '~> 3.0.0')
   s.add_dependency('i18n',             '~> 0.6')
   s.add_dependency('rack',             '~> 1.3.2')
-- 
cgit v1.2.3


From de942e5534a26942e261a7699adc28597c5ad1bc Mon Sep 17 00:00:00 2001
From: Kamil Sobieraj <ksobej@gmail.com>
Date: Tue, 4 Oct 2011 09:16:34 +0100
Subject: :subdomain can now be specified with a value of false in url_for,
 allowing for subdomain(s) removal from the host during link generation.
 Closes #2025

---
 actionpack/lib/action_dispatch/http/url.rb        |  8 +++++---
 actionpack/lib/action_dispatch/routing/url_for.rb |  5 +++--
 actionpack/test/controller/url_for_test.rb        | 14 ++++++++++++++
 actionpack/test/dispatch/request_test.rb          |  1 +
 4 files changed, 23 insertions(+), 5 deletions(-)

(limited to 'actionpack')

diff --git a/actionpack/lib/action_dispatch/http/url.rb b/actionpack/lib/action_dispatch/http/url.rb
index caa1decb9e..0db404957b 100644
--- a/actionpack/lib/action_dispatch/http/url.rb
+++ b/actionpack/lib/action_dispatch/http/url.rb
@@ -64,13 +64,15 @@ module ActionDispatch
         end
 
         def host_or_subdomain_and_domain(options)
-          return options[:host] unless options[:subdomain] || options[:domain]
+          return options[:host] unless options[:subdomain] || options[:subdomain] == false || options[:domain]
 
           tld_length = options[:tld_length] || @@tld_length
 
           host = ""
-          host << (options[:subdomain] || extract_subdomain(options[:host], tld_length))
-          host << "."
+          unless options[:subdomain] == false
+            host << (options[:subdomain] || extract_subdomain(options[:host], tld_length))
+            host << "."
+          end
           host << (options[:domain]    || extract_domain(options[:host], tld_length))
           host
         end
diff --git a/actionpack/lib/action_dispatch/routing/url_for.rb b/actionpack/lib/action_dispatch/routing/url_for.rb
index 30048cd48a..8fc8dc191b 100644
--- a/actionpack/lib/action_dispatch/routing/url_for.rb
+++ b/actionpack/lib/action_dispatch/routing/url_for.rb
@@ -116,9 +116,10 @@ module ActionDispatch
       #   If <tt>:only_path</tt> is false, this option must be
       #   provided either explicitly, or via +default_url_options+.
       # * <tt>:subdomain</tt> - Specifies the subdomain of the link, using the +tld_length+
-      #   to split the domain from the host.
-      # * <tt>:domain</tt> - Specifies the domain of the link, using the +tld_length+
       #   to split the subdomain from the host.
+      #   If false, removes all subdomains from the host part of the link.
+      # * <tt>:domain</tt> - Specifies the domain of the link, using the +tld_length+
+      #   to split the domain from the host.
       # * <tt>:tld_length</tt> - Number of labels the TLD id composed of, only used if
       #   <tt>:subdomain</tt> or <tt>:domain</tt> are supplied. Defaults to
       #   <tt>ActionDispatch::Http::URL.tld_length</tt>, which in turn defaults to 1.
diff --git a/actionpack/test/controller/url_for_test.rb b/actionpack/test/controller/url_for_test.rb
index 484e996f31..11ced2df2a 100644
--- a/actionpack/test/controller/url_for_test.rb
+++ b/actionpack/test/controller/url_for_test.rb
@@ -67,6 +67,20 @@ module AbstractController
         )
       end
 
+      def test_subdomain_may_be_removed
+        add_host!
+        assert_equal('http://basecamphq.com/c/a/i',
+          W.new.url_for(:subdomain => false, :controller => 'c', :action => 'a', :id => 'i')
+        )
+      end
+
+      def test_multiple_subdomains_may_be_removed
+        W.default_url_options[:host] = 'mobile.www.api.basecamphq.com'
+        assert_equal('http://basecamphq.com/c/a/i',
+          W.new.url_for(:subdomain => false, :controller => 'c', :action => 'a', :id => 'i')
+        )
+      end
+
       def test_domain_may_be_changed
         add_host!
         assert_equal('http://www.37signals.com/c/a/i',
diff --git a/actionpack/test/dispatch/request_test.rb b/actionpack/test/dispatch/request_test.rb
index 060bcfb5ec..a611252b31 100644
--- a/actionpack/test/dispatch/request_test.rb
+++ b/actionpack/test/dispatch/request_test.rb
@@ -15,6 +15,7 @@ class RequestTest < ActiveSupport::TestCase
 
     assert_equal 'http://www.example.com',  url_for
     assert_equal 'http://api.example.com',  url_for(:subdomain => 'api')
+    assert_equal 'http://example.com',      url_for(:subdomain => false)
     assert_equal 'http://www.ror.com',      url_for(:domain => 'ror.com')
     assert_equal 'http://api.ror.co.uk',    url_for(:host => 'www.ror.co.uk', :subdomain => 'api', :tld_length => 2)
     assert_equal 'http://www.example.com:8080',   url_for(:port => 8080)
-- 
cgit v1.2.3


From 7f1a666db57983814e175cb5b54bb6621ec95c4f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Valim?= <jose.valim@gmail.com>
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')

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 96aa3bd0eae0afa98a1a16d87f5e0b6fa0005dab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Valim?= <jose.valim@gmail.com>
Date: Tue, 4 Oct 2011 11:31:47 +0200
Subject: Clean up subdomain code a bit.

---
 actionpack/lib/action_dispatch/http/url.rb | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'actionpack')

diff --git a/actionpack/lib/action_dispatch/http/url.rb b/actionpack/lib/action_dispatch/http/url.rb
index 0db404957b..170c68f3e0 100644
--- a/actionpack/lib/action_dispatch/http/url.rb
+++ b/actionpack/lib/action_dispatch/http/url.rb
@@ -64,7 +64,7 @@ module ActionDispatch
         end
 
         def host_or_subdomain_and_domain(options)
-          return options[:host] unless options[:subdomain] || options[:subdomain] == false || options[:domain]
+          return options[:host] if options[:subdomain].nil? && options[:domain].nil?
 
           tld_length = options[:tld_length] || @@tld_length
 
@@ -73,7 +73,7 @@ module ActionDispatch
             host << (options[:subdomain] || extract_subdomain(options[:host], tld_length))
             host << "."
           end
-          host << (options[:domain]    || extract_domain(options[:host], tld_length))
+          host << (options[:domain] || extract_domain(options[:host], tld_length))
           host
         end
       end
-- 
cgit v1.2.3


From db262211c983b26ed252a1f1c3bd07fdf128a023 Mon Sep 17 00:00:00 2001
From: Santiago Pastorino <santiago@wyeworks.com>
Date: Tue, 4 Oct 2011 14:14:36 -0200
Subject: Bump sprockets to 2.0.2

---
 actionpack/actionpack.gemspec | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

(limited to 'actionpack')

diff --git a/actionpack/actionpack.gemspec b/actionpack/actionpack.gemspec
index b208357584..96d583730a 100644
--- a/actionpack/actionpack.gemspec
+++ b/actionpack/actionpack.gemspec
@@ -16,16 +16,16 @@ Gem::Specification.new do |s|
   s.require_path = 'lib'
   s.requirements << 'none'
 
-  s.add_dependency('activesupport',    version)
-  s.add_dependency('activemodel',      version)
-  s.add_dependency('rack-cache',       '~> 1.1')
-  s.add_dependency('builder',          '~> 3.0.0')
-  s.add_dependency('i18n',             '~> 0.6')
-  s.add_dependency('rack',             '~> 1.3.2')
-  s.add_dependency('rack-test',        '~> 0.6.1')
-  s.add_dependency('journey',      '~> 1.0.0')
-  s.add_dependency('sprockets',        '~> 2.0.0')
-  s.add_dependency('erubis',           '~> 2.7.0')
+  s.add_dependency('activesupport', version)
+  s.add_dependency('activemodel',   version)
+  s.add_dependency('rack-cache',    '~> 1.1')
+  s.add_dependency('builder',       '~> 3.0.0')
+  s.add_dependency('i18n',          '~> 0.6')
+  s.add_dependency('rack',          '~> 1.3.2')
+  s.add_dependency('rack-test',     '~> 0.6.1')
+  s.add_dependency('journey',       '~> 1.0.0')
+  s.add_dependency('sprockets',     '~> 2.0.2')
+  s.add_dependency('erubis',        '~> 2.7.0')
 
-  s.add_development_dependency('tzinfo',           '~> 0.3.29')
+  s.add_development_dependency('tzinfo', '~> 0.3.29')
 end
-- 
cgit v1.2.3


From dc85fc546fb9c40a610d3f3d029ccb3692aefc02 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Valim?= <jose.valim@gmail.com>
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 <jose.valim@gmail.com>
---
 actionpack/lib/sprockets/assets.rake | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

(limited to 'actionpack')

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" <mark@titorenko.net>
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 <jose.valim@gmail.com>
---
 actionpack/lib/sprockets/assets.rake        | 19 ++++++-----
 actionpack/lib/sprockets/static_compiler.rb | 49 +++++++++++++++++------------
 2 files changed, 38 insertions(+), 30 deletions(-)

(limited to 'actionpack')

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" <mark@titorenko.net>
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 <jose.valim@gmail.com>
---
 actionpack/lib/sprockets/assets.rake | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

(limited to 'actionpack')

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" <mark@titorenko.net>
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 <jose.valim@gmail.com>
---
 actionpack/lib/sprockets/assets.rake | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

(limited to 'actionpack')

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" <mark@titorenko.net>
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 <jose.valim@gmail.com>
---
 actionpack/lib/sprockets/assets.rake | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

(limited to 'actionpack')

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" <mark@titorenko.net>
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 <jose.valim@gmail.com>
---
 actionpack/lib/sprockets/assets.rake | 5 +++++
 1 file changed, 5 insertions(+)

(limited to 'actionpack')

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?= <jose.valim@gmail.com>
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 <jose.valim@gmail.com>
---
 actionpack/lib/sprockets/assets.rake | 31 ++++++++++++++-----------------
 1 file changed, 14 insertions(+), 17 deletions(-)

(limited to 'actionpack')

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?= <jose.valim@gmail.com>
Date: Wed, 5 Oct 2011 02:07:25 +0200
Subject: Ensure default_asset_host_protocol is respected, closes #2980.

---
 actionpack/lib/abstract_controller/asset_paths.rb | 3 ++-
 actionpack/lib/action_view/asset_paths.rb         | 5 +----
 actionpack/lib/sprockets/railtie.rb               | 4 +++-
 actionpack/test/template/sprockets_helper_test.rb | 6 ++++--
 4 files changed, 10 insertions(+), 8 deletions(-)

(limited to 'actionpack')

diff --git a/actionpack/lib/abstract_controller/asset_paths.rb b/actionpack/lib/abstract_controller/asset_paths.rb
index b104d34fb5..c2a6809f58 100644
--- a/actionpack/lib/abstract_controller/asset_paths.rb
+++ b/actionpack/lib/abstract_controller/asset_paths.rb
@@ -3,7 +3,8 @@ module AbstractController
     extend ActiveSupport::Concern
 
     included do
-      config_accessor :asset_host, :asset_path, :assets_dir, :javascripts_dir, :stylesheets_dir
+      config_accessor :asset_host, :asset_path, :assets_dir, :javascripts_dir,
+        :stylesheets_dir, :default_asset_host_protocol
     end
   end
 end
diff --git a/actionpack/lib/action_view/asset_paths.rb b/actionpack/lib/action_view/asset_paths.rb
index cf30ad7e57..3321b4181d 100644
--- a/actionpack/lib/action_view/asset_paths.rb
+++ b/actionpack/lib/action_view/asset_paths.rb
@@ -16,8 +16,6 @@ module ActionView
     # roots. Rewrite the asset path for cache-busting asset ids. Include
     # asset host, if configured, with the correct request protocol.
     #
-    # When include_host is true and the asset host does not specify the protocol
-    # the protocol parameter specifies how the protocol will be added.
     # When :relative (default), the protocol will be determined by the client using current protocol
     # When :request, the protocol will be the request protocol
     # Otherwise, the protocol is used (E.g. :http, :https, etc)
@@ -25,11 +23,10 @@ module ActionView
       source = source.to_s
       return source if is_uri?(source)
 
-      options[:include_host] ||= true
       source = rewrite_extension(source, dir, options[:ext]) if options[:ext]
       source = rewrite_asset_path(source, dir, options)
       source = rewrite_relative_url_root(source, relative_url_root)
-      source = rewrite_host_and_protocol(source, options[:protocol]) if options[:include_host]
+      source = rewrite_host_and_protocol(source, options[:protocol])
       source
     end
 
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"
diff --git a/actionpack/test/template/sprockets_helper_test.rb b/actionpack/test/template/sprockets_helper_test.rb
index fd3e01ec03..f0fb783a93 100644
--- a/actionpack/test/template/sprockets_helper_test.rb
+++ b/actionpack/test/template/sprockets_helper_test.rb
@@ -75,8 +75,9 @@ class SprocketsHelperTest < ActionView::TestCase
   end
 
   test "with a simple asset host the url should default to protocol relative" do
+    @controller.config.default_asset_host_protocol = :relative
     @controller.config.asset_host = "assets-%d.example.com"
-    assert_match %r{//assets-\d.example.com/assets/logo-[0-9a-f]+.png},
+    assert_match %r{^//assets-\d.example.com/assets/logo-[0-9a-f]+.png},
       asset_path("logo.png")
   end
 
@@ -88,10 +89,11 @@ class SprocketsHelperTest < ActionView::TestCase
   end
 
   test "With a proc asset host that returns no protocol the url should be protocol relative" do
+    @controller.config.default_asset_host_protocol = :relative
     @controller.config.asset_host = Proc.new do |asset|
       "assets-999.example.com"
     end
-    assert_match %r{//assets-999.example.com/assets/logo-[0-9a-f]+.png},
+    assert_match %r{^//assets-999.example.com/assets/logo-[0-9a-f]+.png},
       asset_path("logo.png")
   end
 
-- 
cgit v1.2.3


From 87c57bb88f0eb1462ed31733ebcf3d9a535d8f16 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Valim?= <jose.valim@gmail.com>
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/action_view/asset_paths.rb             | 16 +++-------------
 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 +----
 actionpack/test/template/sprockets_helper_test.rb     | 15 +++++++++------
 7 files changed, 32 insertions(+), 30 deletions(-)
 create mode 100644 actionpack/lib/sprockets/helpers/precompile_helper.rb

(limited to 'actionpack')

diff --git a/actionpack/lib/action_view/asset_paths.rb b/actionpack/lib/action_view/asset_paths.rb
index 3321b4181d..1d16e34df6 100644
--- a/actionpack/lib/action_view/asset_paths.rb
+++ b/actionpack/lib/action_view/asset_paths.rb
@@ -86,9 +86,7 @@ module ActionView
     end
 
     def default_protocol
-      protocol = @config.action_controller.default_asset_host_protocol if @config.action_controller.present?
-      protocol ||= @config.default_asset_host_protocol
-      protocol || (has_request? ? :request : :relative)
+      @config.default_asset_host_protocol || (has_request? ? :request : :relative)
     end
 
     def invalid_asset_host!(help_message)
@@ -117,19 +115,11 @@ module ActionView
     end
 
     def relative_url_root
-      if config.action_controller.present?
-        config.action_controller.relative_url_root
-      else
-        config.relative_url_root
-      end
+      config.relative_url_root
     end
 
     def asset_host_config
-      if config.action_controller.present?
-        config.action_controller.asset_host
-      else
-        config.asset_host
-      end
+      config.asset_host
     end
 
     # Returns the current request if one exists.
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
 
diff --git a/actionpack/test/template/sprockets_helper_test.rb b/actionpack/test/template/sprockets_helper_test.rb
index f0fb783a93..08b66fec8b 100644
--- a/actionpack/test/template/sprockets_helper_test.rb
+++ b/actionpack/test/template/sprockets_helper_test.rb
@@ -28,7 +28,6 @@ class SprocketsHelperTest < ActionView::TestCase
     application = Struct.new(:config, :assets).new(config, @assets)
     Rails.stubs(:application).returns(application)
     @config = config
-    @config.action_controller ||= ActiveSupport::InheritableOptions.new
     @config.perform_caching = true
     @config.assets.digest = true
     @config.assets.compile = true
@@ -38,6 +37,10 @@ class SprocketsHelperTest < ActionView::TestCase
     "http://www.example.com"
   end
 
+  def config
+    @controller ? @controller.config : @config
+  end
+
   test "asset_path" do
     assert_match %r{/assets/logo-[0-9a-f]+.png},
       asset_path("logo.png")
@@ -116,7 +119,7 @@ class SprocketsHelperTest < ActionView::TestCase
 
   test "stylesheets served without a controller in scope cannot access the request" do
     @controller = nil
-    @config.action_controller.asset_host = Proc.new do |asset, request|
+    @config.asset_host = Proc.new do |asset, request|
       fail "This should not have been called."
     end
     assert_raises ActionController::RoutingError do
@@ -154,9 +157,9 @@ class SprocketsHelperTest < ActionView::TestCase
 
   test "stylesheets served without a controller in do not use asset hosts when the default protocol is :request" do
     @controller = nil
-    @config.action_controller.asset_host = "assets-%d.example.com"
-    @config.action_controller.default_asset_host_protocol = :request
-    @config.action_controller.perform_caching = true
+    @config.asset_host = "assets-%d.example.com"
+    @config.default_asset_host_protocol = :request
+    @config.perform_caching = true
 
     assert_match %r{/assets/logo-[0-9a-f]+.png},
       asset_path("logo.png")
@@ -170,7 +173,7 @@ class SprocketsHelperTest < ActionView::TestCase
 
   test "asset path with relative url root when controller isn't present but relative_url_root is" do
     @controller = nil
-    @config.action_controller.relative_url_root = "/collaboration/hieraki"
+    @config.relative_url_root = "/collaboration/hieraki"
     assert_equal "/collaboration/hieraki/images/logo.gif",
      asset_path("/images/logo.gif")
   end
-- 
cgit v1.2.3


From 4cea4ee6b54fee897b984a3c0288d12ce2d1efe1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Valim?= <jose.valim@gmail.com>
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')

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 c495bfc127405f7ead0d1c275c4d75682a51e00e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Valim?= <jose.valim@gmail.com>
Date: Wed, 5 Oct 2011 15:31:01 +0200
Subject: Do not require railtie as it messes up Rails.application setup.

---
 actionpack/test/template/compressors_test.rb | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

(limited to 'actionpack')

diff --git a/actionpack/test/template/compressors_test.rb b/actionpack/test/template/compressors_test.rb
index 583a1455ba..a273f15bd7 100644
--- a/actionpack/test/template/compressors_test.rb
+++ b/actionpack/test/template/compressors_test.rb
@@ -1,6 +1,5 @@
 require 'abstract_unit'
-require 'rails/railtie'
-require 'sprockets/railtie'
+require 'sprockets/compressors'
 
 class CompressorsTest < ActiveSupport::TestCase
   def test_register_css_compressor
-- 
cgit v1.2.3