diff options
| author | José Valim <jose.valim@gmail.com> | 2009-08-13 10:27:53 +0200 | 
|---|---|---|
| committer | José Valim <jose.valim@gmail.com> | 2009-08-13 10:27:53 +0200 | 
| commit | 8692b11e81ab2df2e4122c2f47d91e5eaaf508f2 (patch) | |
| tree | 695173d98666ddf3554ee380849a750d353d3314 /actionpack/lib/action_controller | |
| parent | 4f9047ecc8f0e2c3d4491bae0051679569da71dc (diff) | |
| parent | f413a703ba5bcf4b369932ae805615c4a34d34cb (diff) | |
| download | rails-8692b11e81ab2df2e4122c2f47d91e5eaaf508f2.tar.gz rails-8692b11e81ab2df2e4122c2f47d91e5eaaf508f2.tar.bz2 rails-8692b11e81ab2df2e4122c2f47d91e5eaaf508f2.zip  | |
Merge branch 'master' of git://github.com/rails/rails
Diffstat (limited to 'actionpack/lib/action_controller')
6 files changed, 23 insertions, 19 deletions
diff --git a/actionpack/lib/action_controller/metal/compatibility.rb b/actionpack/lib/action_controller/metal/compatibility.rb index f94d1c669c..5b0165f0e7 100644 --- a/actionpack/lib/action_controller/metal/compatibility.rb +++ b/actionpack/lib/action_controller/metal/compatibility.rb @@ -25,8 +25,9 @@ module ActionController        cattr_accessor :relative_url_root        self.relative_url_root = ENV['RAILS_RELATIVE_URL_ROOT'] -      cattr_accessor :default_charset -      self.default_charset = "utf-8" +      class << self +        delegate :default_charset=, :to => "ActionDispatch::Response" +      end        # cattr_reader :protected_instance_variables        cattr_accessor :protected_instance_variables @@ -101,11 +102,10 @@ module ActionController          options[:template].sub!(/^\//, '')        end -      options[:text] = nil if options[:nothing] == true +      options[:text] = nil if options.delete(:nothing) == true +      options[:text] = " " if options.key?(:text) && options[:text].nil? -      body = super -      body = [' '] if body.blank? -      body +      super || " "      end      def _handle_method_missing diff --git a/actionpack/lib/action_controller/metal/hide_actions.rb b/actionpack/lib/action_controller/metal/hide_actions.rb index af68c772b1..cdacdc40a6 100644 --- a/actionpack/lib/action_controller/metal/hide_actions.rb +++ b/actionpack/lib/action_controller/metal/hide_actions.rb @@ -13,7 +13,9 @@ module ActionController      # Overrides AbstractController::Base#action_method? to return false if the      # action name is in the list of hidden actions.      def action_method?(action_name) -      !hidden_actions.include?(action_name) && super +      self.class.visible_action?(action_name) do +        !hidden_actions.include?(action_name) && super +      end      end      module ClassMethods @@ -25,6 +27,16 @@ module ActionController          hidden_actions.merge(args.map! {|a| a.to_s })        end +      def inherited(klass) +        klass.instance_variable_set("@visible_actions", {}) +        super +      end + +      def visible_action?(action_name) +        return @visible_actions[action_name] if @visible_actions.key?(action_name) +        @visible_actions[action_name] = yield +      end +        # Overrides AbstractController::Base#action_methods to remove any methods        # that are listed as hidden methods.        def action_methods diff --git a/actionpack/lib/action_controller/metal/streaming.rb b/actionpack/lib/action_controller/metal/streaming.rb index 57318e8747..4761763a26 100644 --- a/actionpack/lib/action_controller/metal/streaming.rb +++ b/actionpack/lib/action_controller/metal/streaming.rb @@ -145,7 +145,6 @@ module ActionController #:nodoc:        def send_data(data, options = {}) #:doc:          logger.info "Sending data #{options[:filename]}" if logger          send_file_headers! options.merge(:length => data.bytesize) -        @performed_render = false          render :status => options[:status], :text => data        end @@ -175,6 +174,8 @@ module ActionController #:nodoc:            'Content-Transfer-Encoding' => 'binary'          ) +        response.sending_file = true +          # Fix a problem with IE 6.0 on opening downloaded files:          # If Cache-Control: no-cache is set (which Rails does by default),          # IE removes the file it just downloaded from its cache immediately diff --git a/actionpack/lib/action_controller/metal/url_for.rb b/actionpack/lib/action_controller/metal/url_for.rb index 7119c14cd3..14c6523045 100644 --- a/actionpack/lib/action_controller/metal/url_for.rb +++ b/actionpack/lib/action_controller/metal/url_for.rb @@ -4,15 +4,6 @@ module ActionController      include RackConvenience -    def process_action(*) -      initialize_current_url -      super -    end - -    def initialize_current_url -      @url = UrlRewriter.new(request, params.clone) -    end -      # Overwrite to implement a number of default options that all url_for-based methods will use. The default options should come in      # the form of a hash, just like the one you would use for url_for directly. Example:      # @@ -40,6 +31,7 @@ module ActionController          when String            options          when Hash +          @url ||= UrlRewriter.new(request, params)            @url.rewrite(rewrite_options(options))          else            polymorphic_url(options) diff --git a/actionpack/lib/action_controller/testing/process.rb b/actionpack/lib/action_controller/testing/process.rb index d32d5562e8..09b1a59254 100644 --- a/actionpack/lib/action_controller/testing/process.rb +++ b/actionpack/lib/action_controller/testing/process.rb @@ -52,7 +52,7 @@ module ActionController #:nodoc:    class TestResponse < ActionDispatch::TestResponse      def recycle!        @status = 200 -      @header = Rack::Utils::HeaderHash.new +      @header = {}        @writer = lambda { |x| @body << x }        @block = nil        @length = 0 diff --git a/actionpack/lib/action_controller/testing/test_case.rb b/actionpack/lib/action_controller/testing/test_case.rb index a11755b517..b66a4c15ff 100644 --- a/actionpack/lib/action_controller/testing/test_case.rb +++ b/actionpack/lib/action_controller/testing/test_case.rb @@ -179,7 +179,6 @@ module ActionController        if @controller          @controller.request = @request          @controller.params = {} -        @controller.send(:initialize_current_url)        end      end  | 
