aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch
Commit message (Collapse)AuthorAgeFilesLines
* [Rails4 regression] prevent thin and puma cause error in Non ASCII URL on ↵Toshi MARUYAMA2015-04-091-1/+1
| | | | | | | | | | | | | | | | | | | Windows * https://github.com/rails/rails/issues/19187 * https://github.com/rails/rails/pull/19533 * https://github.com/macournoyer/thin/issues/268 These are serious Rails 4 regression for Redmine Bitnami Windows users. https://community.bitnami.com/t/problems-with-3-0-1-installation-see-report-inside/30195/ It is not caused on webrick users. Related: * https://github.com/rack/rack/issues/732#issuecomment-67677272 * https://github.com/phusion/passenger/issues/1328
* Merge pull request #19700 from tancnle/trivial-shallow-nesting-depth-countRafael Mendonça França2015-04-081-1/+1
|\ | | | | A shorter and more concise version of select..size
| * A shorter and more concise version of select..sizeTan Le2015-04-091-1/+1
| |
* | Merge pull request #19633 from y00rb/sort_router_parameters_duplicated_keysRafael Mendonça França2015-04-082-2/+2
|\ \ | | | | | | avoid error when sort mixture keys in symbol and string
| * | sort_by instead of sortYang Bo2015-04-082-2/+2
| | | | | | | | | | | | | | | | | | it is avoid sort errot within different and mixed keys. used `sort_by` + `block` to list parameter by keys. keep minimum changes
* | | remove new line between doc and methodBruce Park2015-04-071-1/+0
| | |
* | | added docs for ActionDispatch::Request::Session#createBruce Park2015-04-071-1/+3
| | |
* | | Fix method signature of `parse_query` to match rackeileencodes2015-04-061-1/+1
|/ / | | | | | | | | | | | | Recently rack was changed to have a second argument on the `parse_query` method (in rack/rack#781). Rails relies on this and it's `parse_query` method was complaining about missing the second argument. I changed the arguments to `*` so we don't have this issue in the future.
* | Add ActiveSupport::ArrayInquirer and Array#inquiryGeorge Claghorn2015-03-241-27/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Wrapping an array in an `ArrayInquirer` gives a friendlier way to check its string-like contents. For example, `request.variant` returns an `ArrayInquirer` object. To check a request's variants, you can call: request.variant.phone? request.variant.any?(:phone, :tablet) ...instead of: request.variant.include?(:phone) request.variant.any? { |v| v.in?([:phone, :tablet]) } `Array#inquiry` is a shortcut for wrapping the receiving array in an `ArrayInquirer`: pets = [:cat, :dog] pets.cat? # => true pets.ferret? # => false pets.any?(:cat, :ferret} # => true
* | Provide friendlier access to request variantsGeorge Claghorn2015-03-241-7/+34
| | | | | | | | Closes #18933.
* | Fix ActionDispatch::PublicExceptions returning string rack statusRyan Tomayko2015-03-231-2/+2
| | | | | | | | | | | | | | | | The status returned in the rack [status, headers, body] array was a string, which can cause problems with middleware that assumes the status will be a Fixnum. This likely never surfaced because other middleware to_i the status returned from downstream apps before passing it on.
* | Fix handling of empty X_FORWARDED_HOST header.adam2015-03-201-1/+1
| | | | | | | | | | | | Previously, an empty X_FORWARDED_HOST header would cause Actiondispatch::Http:URL.raw_host_with_port to return nil, causing Actiondispatch::Http:URL.host to raise a NoMethodError.
* | Compare content_type with Mime::XML instead of regexpBoris Peterbarg2015-03-161-1/+1
| | | | | | | | | | Regexp is broken for both content types including charsets and for integration tests, where the content_type is a Mime::Type and not String
* | Also skip Content-Encoding and Vary header if 304Kohei Suzuki2015-03-121-3/+4
| |
* | 304 response should not include Content-Type headerKohei Suzuki2015-03-101-1/+3
| | | | | | | | | | Rack::Lint raises an error saying "Content-Type header found in 304 response, not allowed".
* | Call super last in before_setupeileencodes2015-03-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes the reasons 4cf3b8a, 303567e, and fa63448 needed to be reverted in 7142059. The revert has been reverted and this fixes the issues caused previously. If we call `super` first we will end up nuking the session settings in the application tests that do `setup do` - so any session login or cookie settings will not be persisted thoughout the test sessions. Calling `super` last prevents `@integration_session` from getting nuked and set to nil if it's already set. Test added to prevent regression of this behavior in the future.
* | Revert "Revert integration test refactoring that caused app test regressions"eileencodes2015-03-091-14/+10
| | | | | | | | This reverts commit 714205988315d2f98aa3e749747c44470e18676b.
* | update integration test example as is not output deprecation warning [ci skip]yuuji.yaginuma2015-03-071-7/+8
| |
* | pass a config to the route setAaron Patterson2015-03-052-5/+19
| | | | | | | | | | This way we can get the relative_url_root from the application without setting another global value
* | Merge pull request #19215 from ↵Sean Griffin2015-03-052-4/+2
|\ \ | | | | | | | | | | | | gsamokovarov/revert-ruby-2-2-0-kwarg-crash-workarounds Revert work arounds for upstream Ruby 2.2.0 kwargs bug
| * | Revert work arounds for upstream Ruby 2.2.0 kwargs bugGenadi Samokovarov2015-03-052-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The bug caused a segfault and you can find more info about it at: https://bugs.ruby-lang.org/issues/10685. We did a couple of work arounds, but 2.2.1 rolled out and those aren't needed anymore. Here are the reverted commits: - Revert "Work around for upstream Ruby bug #10685", commit 707a433870e9e06af688f85a4aedc64a90791a64. - Revert "Fix segmentation fault in ActionPack tests", commit 22e0a22d5f98e162290d9820891d8191e720ad3b. I'm also bumping the Ruby version check to 2.2.1 to prevent future segfaults.
* | | nodoc filtered_location [ci skip]Sushruth Sivaramakrishnan2015-03-051-1/+1
|/ /
* | Drop request class from RouteSet constructor.Aaron Patterson2015-03-041-4/+7
| | | | | | | | | | If you would like to use a custom request class, please subclass and implemet the `request_class` method.
* | Merge pull request #18775 from yasyf/issue_5122Rafael Mendonça França2015-03-032-1/+5
|\ \ | | | | | | | | | Fallback to RAILS_RELATIVE_URL_ROOT in `url_for`
| * | Fallback to RAILS_RELATIVE_URL_ROOT in `url_for`.Yasyf Mohamedali2015-02-242-1/+5
| | | | | | | | | | | | | | | | | | Fixed an issue where the `RAILS_RELATIVE_URL_ROOT` environment variable is not prepended to the path when `url_for` is called. If `SCRIPT_NAME` (used by Rack) is set, it takes precedence.
* | | Merge pull request #19147 from gsamokovarov/work-around-ruby-10695Eileen M. Uchitelle2015-03-022-2/+4
|\ \ \ | | | | | | | | Work around for upstream Ruby bug #10685
| * | | Work around for upstream Ruby bug #10685Genadi Samokovarov2015-03-012-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In f6e293ec54f02f83cdb37502bea117f66f87bcae we avoided a segfault in the tests, however I think we should try to avoid the crash, as it may happen in user code as well. Here is what I distiled the bug down to: ```ruby # Rails case - works on 2.0, 2.1; crashes on 2.2 require 'action_dispatch' ActionDispatch::Response.new(200, "Content-Type" => "text/xml") # General case - works on 2.0, 2.1; crashes on 2.2 def foo(optional = {}, default_argument: nil) end foo('quux' => 'bar') ```
* | | | Merge pull request #15806 from tgxworld/partition_routes_during_setupAaron Patterson2015-03-022-8/+13
|\ \ \ \ | | | | | | | | | | Partition routes during setup.
| * | | | Partition routes during setup.Guo Xiang Tan2015-02-262-8/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Partitioning of all the routes is currently being done during the first request. Since there is no need to clear the cache for `partitioned_routes` when adding a new route. We can move the partitioning of the routes during setup time.
* | | | | be optimistic about missing route keysAaron Patterson2015-03-021-13/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | this patch makes errors slightly more expensive when someone is missing a route key, but in exchange it drops 4 allocations per `url_for` call. Since missing a route key is an error, optimizing for the non-error path seems like a good trade off
* | | | | use arg size for parallel iterationAaron Patterson2015-03-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | we already know the length of the args, so we can use that length for parallel iteration and cut down on allocations for `url_for` calls.
* | | | | ask the routes objects for its Rack env keyAaron Patterson2015-03-022-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | this centralizes the logic for determining the script name key and drops object allocations when calling `engine_script_name` (which is called on each `url_for`).
* | | | | refactor `handle_model` to use private helper methods for generationAaron Patterson2015-03-011-8/+6
| | | | |
* | | | | drop allocations for string and class polymorphic routesAaron Patterson2015-03-011-3/+3
| | | | |
* | | | | drop string allocations per model url_for call in viewsAaron Patterson2015-03-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ```ruby article = Article.new.tap(&:save!) view.url_for article result = ObjectSpace::AllocationTracer.trace do 3000.times { view.url_for article } end p ObjectSpace::AllocationTracer.allocated_count_table[:T_STRING] / 3000 ```
* | | | | move _generate_paths_by_default to where it is usedAaron Patterson2015-03-011-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | | _generate_paths_by_default wasn't used in AD::Routing::UrlFor, so we should be able to move it where it is used in AV::Routing
* | | | | Merge branch 'master' of github.com:rails/docrailsVijay Dev2015-03-013-3/+20
|\ \ \ \ \ | |_|/ / / |/| | | |
| * | | | Explained how to set session expiry through session_store configIain Beeston2015-02-273-3/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Most session stores offer an :expire_after option, but it's largely undocumented. Cookie store also supports a number of options via rack (these used to be documented in rails 2.3)
* | | | | drop allocations when handling model url generationAaron Patterson2015-02-281-1/+1
| | | | |
* | | | | Revert integration test refactoring that caused app test regressionsJeremy Kemper2015-02-261-10/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Haven't diagnosed yet. No similarly failing tests in Rails to work from. cc @tenderlove, @eileencodes Revert "there is always an integration session, so remove the check" Revert "lazily create the integration session" Revert "use before_setup to set up test instance variables" This reverts commits 4cf3b8ac47f109fa83a6f66eb97d6cb0eace0d05, 303567e554de26822f3107be55c471d6477a745f, and fa63448420d3385dbd043aca22dba973b45b8bb2.
* | | | | Revert "Merge pull request #18764 from tsun1215/master"Jeremy Kemper2015-02-261-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit b6dd0c4ddebf5e7aab0a669915cb349ec65e5b88, reversing changes made to de9a3748c436f849dd1877851115cd94663c2725.
* | | | | Merge pull request #18434 from brainopia/change_filter_on_rails_info_routesRichard Schneeman2015-02-263-89/+67
|\ \ \ \ \ | |_|/ / / |/| | | | Change filter on /rails/info/routes to use an actual path regexp from rails
| * | | | Change filter on /rails/info/routes to use an actual path regexp from railsbrainopia2015-02-233-89/+67
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | Change filter on /rails/info/routes to use an actual path regexp from rails and not approximate javascript version. Oniguruma supports much more extensive list of features than javascript regexp engine. Fixes #18402.
* / | | Fix default headers in test responsesJeremy Kemper2015-02-253-18/+5
|/ / / | | | | | | | | | | | | | | | | | | Fixes regression in #18423. Merge default headers for new responses, but don't merge when creating a response from the last session request. hat tip @senny :heart:
* | | fix method name in mime type example. `Mime::Type.[]` doesn't exist. [ci skip]yuuji.yaginuma2015-02-231-1/+1
| | |
* | | Prefer request_id over uuid and test the aliasRafael Mendonça França2015-02-201-4/+4
| | |
* | | Aliased the ActionDispatch::Request#uuid method with ↵David Ilizarov2015-02-202-1/+3
| | | | | | | | | | | | ActionDispatch::Request#request_id
* | | Merge pull request #18218 from brainopia/fix_match_shorthand_in_routesRafael Mendonça França2015-02-201-1/+1
|\ \ \ | | | | | | | | Don't use shorthand match on routes with inappropriate symbols
| * | | Improve shorthand matching for routesbrainopia2015-01-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Shorthand route match is when controller and action are taken literally from path. E.g. get '/foo/bar' # => will use 'foo#bar' as endpoint get '/foo/bar/baz' # => will use 'foo/bar#baz' as endpoint Not any path with level two or more of nesting can be used as shortcut. If path contains any characters outside of /[\w-]/ then it can't be used as such. This commit ensures that invalid shortcuts aren't used. ':controller/:action/postfix' - is an example of invalid shortcut that was previosly matched and led to exception: "ArgumentError - ':controller/:action' is not a supported controller name"
* | | | Merge pull request #18665 from sgrif/sg-test-route-allSean Griffin2015-02-201-8/+14
|\ \ \ \ | | | | | | | | | | Allow `method: "all"` as a valid routing test option