aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | Remove unneeded comment. [ci skip]Zoltan Kiss2015-03-021-1/+0
| | | | |
* | | | | Skip the failing tests on Rubinius for nowRobin Dupret2015-03-021-0/+2
| | | | |
* | | | | Avoid accurate assertions on error messagesRobin Dupret2015-03-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | Since there are disparities between the raised error messages on the different implementations, let's avoid being too accurate.
* | | | | Avoid parallelizing Action Pack's tests on RubiniusRobin Dupret2015-03-021-2/+2
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since the `ForkingExecutor` class seems to be pretty slow on Rubinius due to DRb (c.f. http://git.io/xIVg), let's avoid running tests with it on this platform. Also, the `parallelize_me!` call make the suite to output a bunch of errors due to rubinius/rubinius#2934 since there are thread-safety problems with autoloading.
* | | | 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 ```
* | | | Bump rack-test to fix nil values being sent to `parse_nested_query`eileencodes2015-03-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I found that nil values were being incorrectly sent to `parse_nested_query` in Rack. Originally it was thought that Rails was doing something incorrect but it was actually rack-test. This was fixed in brynary/rack-test@4a4b2c1 and is no longer an issue. This commit bumps rack-test in Rails so changes to Rack don't cause failures. See rack/rack#813 for more information.
* | | | 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)
* | | | Fix segmentation fault in ActionPack testseileencodes2015-02-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Introduced in f6e293e ActionPack tests began sefaulting. I found that it was the kwargs and the test causing the seg fault was missing the new default_headers argument.
* | | | drop allocations when handling model url generationAaron Patterson2015-02-281-1/+1
| | | |
* | | | Removed non-standard and unused require 'active_support/deprecation' from ↵Vipul A M2015-02-272-3/+0
| | | | | | | | | | | | | | | | parts out of active_support.
* | | | Merge pull request #19104 from y-yagi/fix_skip_filterCarlos Antonio da Silva2015-02-272-1/+9
|\ \ \ \ | | | | | | | | | | fix NameError in `skip_filter`. callback doesn't exist.
| * | | | fix NameError in `skip_filter`. callback doesn't exist.yuuji.yaginuma2015-02-272-1/+9
| | | | |
* | | | | Revert integration test refactoring that caused app test regressionsJeremy Kemper2015-02-262-10/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-262-5/+5
|/ / / / | | | | | | | | | | | | | | | | This reverts commit b6dd0c4ddebf5e7aab0a669915cb349ec65e5b88, reversing changes made to de9a3748c436f849dd1877851115cd94663c2725.
* | | | Merge pull request #18434 from brainopia/change_filter_on_rails_info_routesRichard Schneeman2015-02-265-97/+75
|\ \ \ \ | |_|/ / |/| | | 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-235-97/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | add CHANGELOG for f6e293ec54f02f83cdb37502bea117f66f87bcae. [ci skip]Yves Senn2015-02-251-0/+7
| | | |
* | | | Fix default headers in test responsesJeremy Kemper2015-02-255-34/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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:
* | | | Merge pull request #18948 from kaspth/automatic-collection-cachingRafael Mendonça França2015-02-254-0/+66
|\ \ \ \ | | | | | | | | | | Merge multi_fetch_fragments.
| * | | | Collections automatically cache and fetch partials.Kasper Timm Hansen2015-02-214-0/+66
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Collections can take advantage of `multi_read` if they render one template and their partials begin with a cache call. The cache call must correspond to either what the collections elements are rendered as, or match the inferred name of the partial. So with a notifications/_notification.html.erb template like: ```ruby <% cache notification %> <%# ... %> <% end %> ``` A collection would be able to use `multi_read` if rendered like: ```ruby <%= render @notifications %> <%= render partial: 'notifications/notification', collection: @notifications, as: :notification %> ```
* | | | Add a failing test demonstrating regression with HEAD requests to Rack apps, ↵Jeremy Kemper2015-02-241-3/+9
| |_|/ |/| | | | | | | | re #18764
* | | Use other controller instead of sharing the controllerRafael Mendonça França2015-02-241-18/+17
| | |
* | | Make TestController available to all test classesRafael Mendonça França2015-02-241-16/+16
| | |
* | | Merge pull request #19060 from iainbeeston/deprecate-skip-action-callbackRafael Mendonça França2015-02-243-2/+28
|\ \ \ | | | | | | | | Deprecate `AbstractController::Callbacks#skip_action_callback`
| * | | Deprecate `AbstractController::Callbacks#skip_action_callback`Iain Beeston2015-02-243-2/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As part of #19029, in future `skip_before_action`, `skip_after_action` and `skip_around_action` will raise an ArgumentError if the specified callback does not exist. `skip_action_callback` calls all three of these methods and will almost certainly result in an ArgumentError. If anyone wants to remove all three callbacks then they can still call the three individual methods. Therefore let's deprecate `skip_action_callback` now and remove it when #19029 is merged.
* | | | Merge pull request #19038 from tchandy/cleaning_actionpack_testsSantiago Pastorino2015-02-234-41/+3
|\ \ \ \ | |_|_|/ |/| | | Cleaning actionpack tests
| * | | Removing old helper that was necessary for compatibility with Ruby 1.8.xThiago Pradi2015-02-223-18/+3
| | | |
| * | | Removing unused constants from abstract_unitThiago Pradi2015-02-221-2/+0
| | | |
| * | | Removing unused controller from abstract_unitThiago Pradi2015-02-221-16/+0
| | | |
| * | | Removing unused templateThiago Pradi2015-02-221-5/+0
| |/ /
* | | some indenting and punctuation fixes. [ci skip]Yves Senn2015-02-231-10/+11
| | |
* | | fix method name in mime type example. `Mime::Type.[]` doesn't exist. [ci skip]yuuji.yaginuma2015-02-231-1/+1
|/ /
* | Fix changelog indent [ci skip]Carlos Antonio da Silva2015-02-201-2/+2
| |
* | Prefer request_id over uuid and test the aliasRafael Mendonça França2015-02-202-8/+12
| |
* | Aliased the ActionDispatch::Request#uuid method with ↵David Ilizarov2015-02-203-1/+9
| | | | | | | | ActionDispatch::Request#request_id
* | Merge pull request #18218 from brainopia/fix_match_shorthand_in_routesRafael Mendonça França2015-02-202-1/+10
|\ \ | | | | | | Don't use shorthand match on routes with inappropriate symbols
| * | Improve shorthand matching for routesbrainopia2015-01-252-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-202-8/+36
|\ \ \ | | | | | | | | Allow `method: "all"` as a valid routing test option
| * | | Allow `method: "all"` as a valid routing test optionSean Griffin2015-01-232-8/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows the test to mirror the production code, since `via: :all` is a valid option. The behavior in 4.1 did not actually test that it matched all verbs, but instead defaulted to testing for "GET". This implementation aims to better handle the intention of passing "all". What will actually be asserted doesn't quite match up with the generated route, since it appears to just not create a constraint on the method. However, I don't think that we can easily test the lack of that constraint. Testing each of the main 4 HTTP verbs seems to be a reasonably close approximation, which should be sufficient for our needs. Fixes #18511.
* | | | Make the helpers a required argumentEvan Phoenix2015-02-191-2/+2
| | | |
* | | | Cache url_helpers instead of creating each timeEvan Phoenix2015-02-192-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This has 2 effects: 1. RoutesProxy is CRAZY faster because it's no longer creating a new Module each time method_missing is hit. 2. It bypasses an existing bug in ruby that makes `class << obj` unsafe to be used in threading contexts.
* | | | Freeze strings to reduce allocations in integration testseileencodes2015-02-181-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Moves `X-Request-ID`, `action_dispatch.request_id` and `HTTP_X_REQUEST_ID` strings to constants and freezes them. We are freezing these strings to reduce the number of allocations in Rails integration tests. The tests are spending a lot of time in GC and this reduces the amount of time spent from 12% to 9% (in combination with Rack PR that also freezes some strings). Number of allocations before this change: 1030722 Number of allocations after this change: 967722
* | | | Reduce the number of times `#clean_path_info` is calledeileencodes2015-02-181-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's unnecessary to call `#clean_path_info`. It doesn't need to be called on the path with each extension. This reduces allocations to `Rack::Utils` in integration tests. Before `#clean_path_info` from `Rack::Utils` (line 622) was number 2 in top 5 allocations: ``` [["rack/lib/rack/utils.rb", 499, :T_STRING], [51034, 4539, 71559, 0, 12, 1791120]] [["rack/lib/rack/utils.rb", 662, :T_STRING], [33012, 0, 27930, 0, 1, 1226009]] [["rails/activesupport/lib/active_support/notifications/fanout.rb", 55, :T_DATA], [29998, 0, 25380, 0, 1, 3230600]] [["rails/activesupport/lib/active_support/subscriber.rb", 99, :T_STRING], [29996, 0, 25378, 0, 2, 1113840]] [["rails/activesupport/lib/active_support/notifications/instrumenter.rb", 52, :T_HASH], [29994, 147, 27014, 0, 11, 4897784]] ``` After `#clean_path_info` from `Rack::Utils` (line 622) does not appear in the top 5 highest allocations: ``` [["rack/lib/rack/utils.rb", 499, :T_STRING], [47617, 2414, 68969, 0, 12, 1667360]] [["rack/lib/rack/body_proxy.rb", 34, :T_ARRAY], [28230, 0, 26060, 0, 1, 1046800]] [["rails/activesupport/lib/active_support/notifications/fanout.rb", 55, :T_DATA], [28208, 0, 26042, 0, 1, 3034096]] [["rails/activesupport/lib/active_support/subscriber.rb", 99, :T_STRING], [28204, 0, 26040, 0, 1, 1046080]] [["rails/activesupport/lib/active_support/callbacks.rb", 165, :T_DATA], [28200, 0, 26046, 0, 2, 3451800]] ```
* | | | Try only to decode stringsRafael Mendonça França2015-02-181-2/+4
| | | | | | | | | | | | | | | | | | | | This approach will avoid us to check for NoMethodError when trying to decode
* | | | Merge pull request #18917 from lautis/non-string-csrf-tokenRafael Mendonça França2015-02-183-1/+13
|\ \ \ \ | | | | | | | | | | | | | | | Handle non-string authenticity tokens
| * | | | Handle non-string authenticity tokensVille Lautanala2015-02-123-1/+13
| | | | | | | | | | | | | | | | | | | | Non-string authenticity tokens raised NoMethodError when decoding the masked token.