1. 30 8月, 2016 1 次提交
  2. 27 8月, 2016 1 次提交
  3. 22 8月, 2016 2 次提交
    • C
      Return 307 status instead of 301 when rerouting POST requests to SSL · 64f9802e
      Chirag Singhal 提交于
      When `config.force_ssl` is set to `true`, any POST/PUT/DELETE requests coming in to non-secure url are being redirected with a 301 status.
      However, when that happens, the request is converted to a GET request and ends up hitting a different action on the controller.
      
      Since we can not do non-GET redirects, we can instead redirect with a 307 status code instead to indicate to the caller that a fresh request should be tried preserving the original request method.
      
      `rack-ssl` gem which was used to achieve this before we had this middleware directly baked into Rails also used to do the same, ref: https://github.com/josh/rack-ssl/blob/master/lib/rack/ssl.rb#L54
      
      This would be specially important for any apps switching from older version of Rails or apps which expose an API through Rails.
      64f9802e
    • R
      Fix `ActionDispatch::Http::URL` docs [ci skip] · 602fe932
      Ryoji Yoshioka 提交于
      Use ActionDispatch::Request instead of Request because ActionDispatch::Request no longer inherits from Rack::Request.
      602fe932
  4. 21 8月, 2016 1 次提交
  5. 20 8月, 2016 1 次提交
    • S
      Allow the `integration_sesion` to be set early on ActionDispatch::Integration::Runner. · a887c9cb
      Sam Phippen 提交于
      In commit fa634484, @tenderlove changed
      the behaviour of the way `integration_session` is set up in this object.
      It used to be the case that the first time it was accessed, it was
      memoized with nil, however, this means that if it had already been set
      it was not replaced. After that commit, it is now always set to `nil` in
      the execution of `before_setup`.
      
      In RSpec, users are able to invoke `host!` in `before(:all)` blocks,
      which execute well before `before_setup` is ever invoked (which happens
      in what is equivalent to a `before(:each)` block, for each test. `host!`
      causes the integration session to be set up to correctly change the
      host, but after fa634484 the
      `integration_session` gets overwritten, meaning that users lose their
      `host!` configuration (see https://github.com/rspec/rspec-rails/issues/1662).
      
      This commit changes the behaviour back to memoizing with `nil`, as
      opposed to directly overwriting with `nil`. This causes the correct
      behaviour to occur in RSpec, and unless I'm mistaken will also ensure
      that users who want to modify their integration sessions early in rails
      will also be able to do so.
      a887c9cb
  6. 18 8月, 2016 2 次提交
    • R
      Change method visibility to be private · 6568cfd7
      Rafael Mendonça França 提交于
      Those methods are only using inside this module and by a private method
      so they all should be private.
      6568cfd7
    • R
      Push :defaults extraction down one level · 4c91c442
      Rafael Mendonça França 提交于
      Since e852daa6 only the verb methods
      where extracting the defaults options. It was merged a fix for the
      `root` method in 31fbbb7f but `match`
      was still broken since `:defaults` where not extracted.
      
      This was causing routes defined using `match` and having the `:defaults`
      keys to not be recognized.
      
      To fix this it was extracted a new private method with the actual
      content of `match` and the `:defaults` extracting was moved to `match`.
      4c91c442
  7. 16 8月, 2016 1 次提交
  8. 15 8月, 2016 2 次提交
  9. 14 8月, 2016 1 次提交
  10. 13 8月, 2016 2 次提交
  11. 10 8月, 2016 1 次提交
  12. 09 8月, 2016 1 次提交
  13. 07 8月, 2016 7 次提交
  14. 06 8月, 2016 1 次提交
    • E
      Fix GET JSON integration test request to use method override · af1680f5
      eileencodes 提交于
      When a `GET` request is sent `as: :json` in an integration test the test
      should use Rack's method override to change to a post request so the
      paramters are included in the postdata. Otherwise it will not encode the
      parameters correctly for the integration test.
      
      Because integration test sets up it's own middleware,
      `Rack::MethodOverride` needs to be included in the integration tests as
      well.
      
      `headers ||= {}` was moved so that headers are never nil. They should
      default to a hash.
      
      Fixes #26033
      
      [Eileen M. Uchitelle & Aaron Patterson]
      af1680f5
  15. 27 7月, 2016 2 次提交
  16. 25 7月, 2016 1 次提交
  17. 22 7月, 2016 1 次提交
    • C
      Fix 'defaults' option for root route · 31fbbb7f
      Chris Arcand 提交于
      The merging of the 'defaults' option was moved up the stack in e852daa6
      This allows us to see where these options originate from the standard
      HttpHelpers (get, post, patch, put, delete)
      
      Unfortunately this move didn't incorporate the 'root' method, which has
      always allowed the same 'defaults' option before.
      31fbbb7f
  18. 17 7月, 2016 1 次提交
  19. 14 7月, 2016 2 次提交
    • G
      Check `request.path_parameters` encoding at the point they're set · 9f38a3fb
      Grey Baker 提交于
      Check for any non-UTF8 characters in path parameters at the point they're
      set in `env`. Previously they were checked for when used to get a controller
      class, but this meant routes that went directly to a Rack app, or skipped
      controller instantiation for some other reason, had to defend against
      non-UTF8 characters themselves.
      9f38a3fb
    • G
      Don't raise ActionController::UnknownHttpMethod from ActionDispatch::Static · 25c14617
      Grey Baker 提交于
      The `ActionDispatch::Static` middleware is used low down in the stack to serve
      static assets before doing much processing. Since it's called from so low in
      the stack, we don't have access to the request ID at this point, and generally
      won't have any exception handling defined (by default `ShowExceptions` is added
      to the stack quite a bit higher and relies on logging and request ID).
      
      Before https://github.com/rails/rails/commit/8f27d6036a2ddc3cb7a7ad98afa2666ec163c2c3
      this middleware would ignore unknown HTTP methods, and an exception about these
      would be raised higher in the stack. After that commit, however, that exception
      will be raised here.
      
      If we want to keep `ActionDispatch::Static` so low in the stack (I think we do)
      we should suppress the `ActionController::UnknownHttpMethod` exception here,
      and instead let it be raised higher up the stack, once we've had a chance to
      define exception handling behaviour.
      
      This PR updates `ActionDispatch::Static` so it passes `Rack::Request` objects to
      `ActionDispatch::FileHandler`, which won't raise an
      `ActionController::UnknownHttpMethod` error. If an unknown method is
      passed, it should exception higher in the stack instead, once we've had a
      chance to define exception handling behaviour.`
      25c14617
  20. 12 7月, 2016 1 次提交
  21. 11 7月, 2016 1 次提交
    • K
      Let TestResponse assign a parser. · 333670ce
      Kasper Timm Hansen 提交于
      Previously we'd only assign a response parser when a request came through
      Action Dispatch integration tests. This made calls to `parsed_body` when a TestResponse
      was manually instantiated — though own doing or perhaps from a framework — unintentionally
      blow up because no parser was set at that time.
      
      The response can lookup a parser entirely through its own ivars. Extract request encoder to
      its own file and assume that a viable content type is present at TestResponse instantiation.
      
      Since the default response parser is a no-op, making `parsed_body` equal to `body`, no
      exceptions will be thrown.
      333670ce
  22. 08 7月, 2016 1 次提交
  23. 07 7月, 2016 1 次提交
    • T
      [ci skip] Correct defaults in documentation for ActionDispatch::SSL · 8a12c7c2
      Tim Rogers 提交于
      `config.ssl_options` permits configuring various options for the middleware. Default options for HSTS (specified with the `:hsts` key in the options hash) are specified in `.default_hsts_options`. The documentation did not make clear these defaults, and in one case was wrong.
      8a12c7c2
  24. 05 7月, 2016 1 次提交
    • V
      Deprecate usage of nil as route path · 1fd9cdfd
      Volmer 提交于
      In Rails 4 these kind of routes used to work:
      
      ```ruby
      scope '/*id', controller: :builds, as: :build do
        get action: :show
      end
      ```
      
      But since 1a830cbd, routes are only created for
      paths specified as strings or symbols. Implicit `nil` paths are just ignored,
      with no deprecation warnings or errors. Routes are simply not created. This come
      as a surprise for people migrating to Rails 5, since the lack of logs or errors
      makes hard to understand where the problem is.
      
      This commit introduces a deprecation warning in case of path as `nil`, while
      still allowing the route definition.
      1fd9cdfd
  25. 02 7月, 2016 4 次提交
    • K
      Fix conditional order broken in ea40ec56. · 173bf350
      Kasper Timm Hansen 提交于
      173bf350
    • G
      Silence DebugExceptions template render logs during exceptions · 40fc3874
      Genadi Samokovarov 提交于
      When an exception is raised, those Action View rendering logs are just
      noise for the end developer. I recently silenced those from Web Console,
      as we do use Action View rendering in it as well. It used created a half
      a screen of rendering logs. I think we can save those in this recent
      push for cleaner development logs.
      
      Now, the silencing is a bit hacky and we have a bunch of it now, so we
      can also invest in turning off the logs directly from Action View
      objects instead of silencing off the logging stream.
      40fc3874
    • K
      Make mutation stand out some more. · ea40ec56
      Kasper Timm Hansen 提交于
      Felt that += overwriting the path variable was a little too hidden.
      
      Make the outcomes easier to spot with an if-else branch.
      ea40ec56
    • V
      Fix request encoding in tests when string literals are frozen · fa107874
      Volmer 提交于
      When running tests with `--enable-frozen-string-literal` or
      `# frozen_string_literal: true`, it's currently attempted to mutate the path
      string in order to append the format, causing a `RuntimeError`.
      
      ```ruby
      get '/posts', as: :json
      ```
      
      ```
      RuntimeError:
       can't modify frozen String
      ```
      
      This commit fixes the problem by replacing the mutation with a concatenation,
      returning a new string.
      fa107874