diff options
Diffstat (limited to 'actionpack')
| -rw-r--r-- | actionpack/actionpack.gemspec | 2 | ||||
| -rw-r--r-- | actionpack/lib/action_controller/base.rb | 8 | ||||
| -rw-r--r-- | actionpack/lib/action_dispatch/middleware/debug_exceptions.rb | 8 | ||||
| -rw-r--r-- | actionpack/lib/action_dispatch/testing/integration.rb | 7 | ||||
| -rw-r--r-- | actionpack/test/dispatch/debug_exceptions_test.rb | 23 | 
5 files changed, 41 insertions, 7 deletions
diff --git a/actionpack/actionpack.gemspec b/actionpack/actionpack.gemspec index 965fafff5f..f912a72efe 100644 --- a/actionpack/actionpack.gemspec +++ b/actionpack/actionpack.gemspec @@ -21,7 +21,7 @@ Gem::Specification.new do |s|    s.add_dependency 'activesupport', version -  s.add_dependency 'rack',      '~> 2.x' +  s.add_dependency 'rack',      '~> 2.0'    s.add_dependency 'rack-test', '~> 0.6.3'    s.add_dependency 'rails-html-sanitizer', '~> 1.0', '>= 1.0.2'    s.add_dependency 'rails-dom-testing', '~> 2.0' diff --git a/actionpack/lib/action_controller/base.rb b/actionpack/lib/action_controller/base.rb index d546d7260c..251289d4bb 100644 --- a/actionpack/lib/action_controller/base.rb +++ b/actionpack/lib/action_controller/base.rb @@ -32,7 +32,7 @@ module ActionController    # new post), it initiates a redirect instead. This redirect works by returning an external    # "302 Moved" HTTP response that takes the user to the index action.    # -  # These two methods represent the two basic action archetypes used in Action Controllers. Get-and-show and do-and-redirect. +  # These two methods represent the two basic action archetypes used in Action Controllers: Get-and-show and do-and-redirect.    # Most actions are variations on these themes.    #    # == Requests @@ -51,8 +51,8 @@ module ActionController    # == Parameters    #    # All request parameters, whether they come from a query string in the URL or form data submitted through a POST request are -  # available through the params method which returns a hash. For example, an action that was performed through -  # <tt>/posts?category=All&limit=5</tt> will include <tt>{ "category" => "All", "limit" => "5" }</tt> in params. +  # available through the <tt>params</tt> method which returns a hash. For example, an action that was performed through +  # <tt>/posts?category=All&limit=5</tt> will include <tt>{ "category" => "All", "limit" => "5" }</tt> in <tt>params</tt>.    #    # It's also possible to construct multi-dimensional parameter hashes by specifying keys using brackets, such as:    # @@ -60,7 +60,7 @@ module ActionController    #   <input type="text" name="post[address]" value="hyacintvej">    #    # A request stemming from a form holding these inputs will include <tt>{ "post" => { "name" => "david", "address" => "hyacintvej" } }</tt>. -  # If the address input had been named <tt>post[address][street]</tt>, the params would have included +  # If the address input had been named <tt>post[address][street]</tt>, the <tt>params</tt> would have included    # <tt>{ "post" => { "address" => { "street" => "hyacintvej" } } }</tt>. There's no limit to the depth of the nesting.    #    # == Sessions diff --git a/actionpack/lib/action_dispatch/middleware/debug_exceptions.rb b/actionpack/lib/action_dispatch/middleware/debug_exceptions.rb index 5f758d641a..8974258cf7 100644 --- a/actionpack/lib/action_dispatch/middleware/debug_exceptions.rb +++ b/actionpack/lib/action_dispatch/middleware/debug_exceptions.rb @@ -36,6 +36,14 @@ module ActionDispatch        def debug_hash(object)          object.to_hash.sort_by { |k, _| k.to_s }.map { |k, v| "#{k}: #{v.inspect rescue $!.message}" }.join("\n")        end + +      def render(*) +        if logger = ActionView::Base.logger +          logger.silence { super } +        else +          super +        end +      end      end      def initialize(app, routes_app = nil, response_format = :default) diff --git a/actionpack/lib/action_dispatch/testing/integration.rb b/actionpack/lib/action_dispatch/testing/integration.rb index 5627e79bb7..a7805edaa2 100644 --- a/actionpack/lib/action_dispatch/testing/integration.rb +++ b/actionpack/lib/action_dispatch/testing/integration.rb @@ -423,8 +423,11 @@ module ActionDispatch            end            def append_format_to(path) -            path << @path_format unless @url_encoded_form -            path +            if @url_encoded_form +              path + @path_format +            else +              path +            end            end            def content_type diff --git a/actionpack/test/dispatch/debug_exceptions_test.rb b/actionpack/test/dispatch/debug_exceptions_test.rb index 5a39db145e..6f3d30ebf9 100644 --- a/actionpack/test/dispatch/debug_exceptions_test.rb +++ b/actionpack/test/dispatch/debug_exceptions_test.rb @@ -362,6 +362,29 @@ class DebugExceptionsTest < ActionDispatch::IntegrationTest      assert_match(/puke/, output.rewind && output.read)    end +  test 'logs only what is necessary' do +    @app = DevelopmentApp +    io = StringIO.new +    logger = ActiveSupport::Logger.new(io) + +    _old, ActionView::Base.logger = ActionView::Base.logger, logger +    begin +      get "/", headers: { 'action_dispatch.show_exceptions' => true, 'action_dispatch.logger' => logger } +    ensure +      ActionView::Base.logger = _old +    end + +    output = io.rewind && io.read +    lines = output.lines + +    # Other than the first three... +    assert_equal(["  \n", "RuntimeError (puke!):\n", "  \n"], lines.slice!(0, 3)) +    lines.each do |line| +      # .. all the remaining lines should be from the backtrace +      assert_match(/:\d+:in /, line) +    end +  end +    test 'uses backtrace cleaner from env' do      @app = DevelopmentApp      backtrace_cleaner = ActiveSupport::BacktraceCleaner.new  | 
