aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | 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]] ```
* | | | Add missing commaArthur Neves2015-02-131-1/+1
| | | |
* | | | Correct module name in deprecation message.Guo Xiang Tan2015-02-131-1/+1
| | | |
* | | | Improve deprecation message.Guo Xiang Tan2015-02-131-1/+3
| | | |
* | | | Do not recommend `xhr` since it is going to be deprecated.Guo Xiang Tan2015-02-131-3/+0
| | | |
* | | | require rack/utils in exception_wrapperAndrew Lazarus2015-02-121-0/+1
| | | |
* | | | remove meta programmingAaron Patterson2015-02-121-3/+3
| | | | | | | | | | | | | | | | | | | | there's really no benefit here. It's the same number of lines without the meta programming and is faster
* | | | there is always an integration session, so remove the checkAaron Patterson2015-02-121-1/+0
| | | |
* | | | lazily create the integration sessionAaron Patterson2015-02-121-7/+5
| | | | | | | | | | | | | | | | now we don't have to call reset! everywhere
* | | | use before_setup to set up test instance variablesAaron Patterson2015-02-121-7/+6
| | | |
* | | | Skip url_helpers instead of caching, speed up integration testseileencodes2015-02-122-18/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We shouldn't cache if it's not absolutely necessary. Removes route caching and instead skips using the `url_helpers` is the integration test session doesn't require it. Benchmark ips on integration and controller index method tests below. Without any caching or changes to `#url_helpers`: ``` Calculating ------------------------------------- INDEX: Integration Test 71.000 i/100ms INDEX: Functional Test 99.000 i/100ms ------------------------------------------------- INDEX: Integration Test 728.878 (± 8.0%) i/s - 3.692k INDEX: Functional Test 1.015k (± 6.7%) i/s - 5.148k Comparison: INDEX: Functional Test: 1015.4 i/s INDEX: Integration Test: 728.9 i/s - 1.39x slower ``` With caching on `#url_helpers`: ``` Calculating ------------------------------------- INDEX: Integration Test 74.000 i/100ms INDEX: Functional Test 99.000 i/100ms ------------------------------------------------- INDEX: Integration Test 752.377 (± 6.9%) i/s - 3.774k INDEX: Functional Test 1.021k (± 6.7%) i/s - 5.148k Comparison: INDEX: Functional Test: 1021.1 i/s INDEX: Integration Test: 752.4 i/s - 1.36x slower ``` Afer removing the caching and bypassing the `url_helpers` when not necessary in the session: ``` Calculating ------------------------------------- INDEX: Integration Test 87.000 i/100ms INDEX: Functional Test 97.000 i/100ms ------------------------------------------------- INDEX: Integration Test 828.433 (± 6.4%) i/s - 4.176k INDEX: Functional Test 926.763 (± 7.2%) i/s - 4.656k Comparison: INDEX: Functional Test: 926.8 i/s INDEX: Integration Test: 828.4 i/s - 1.12x slower ```
* | | | Explicitly ignored wildcard verbs from head_routesTerence Sun2015-02-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | In match_head_routes, deleted the routes in which request.request_method was empty (matches all HTTP verbs) when responding to a HEAD request. This prevents catch-all routes (such as Racks) from intercepting the HEAD request. Fixes #18698
* | | | Merge pull request #18771 from kirs/deprecate-xhrRafael Mendonça França2015-02-051-8/+16
|\ \ \ \ | | | | | | | | | | Migrating xhr methods to keyword arguments syntax
| * | | | Migrating xhr methods to keyword arguments syntaxKir Shatrov2015-02-011-8/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in `ActionController::TestCase` and `ActionDispatch::Integration` Old syntax: `xhr :get, :create, params: { id: 1 }` New syntax example: `get :create, params: { id: 1 }, xhr: true`
* | | | | `RouteSet` should not be listed in the public API [ci skip]Sean Griffin2015-02-031-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | The use of `# :startdoc:` inside of the class was overriding the outer-most `# :nodoc:`, causing it to be listed in the documented API.
* | | | | Cache `url_helpers` separately for mailersAndrew White2015-02-011-44/+50
| | | | | | | | | | | | | | | | | | | | | | | | | The commit 3b63780 re-introduced url helper caching but we need to cache a separate module for Action Mailer without paths.
* | | | | Cache `url_helpers`eileencodes2015-02-011-42/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `url_helpers` used to be memoized. This was lost in a refactoring and this PR adds it back. We noticed this while investigating why integration tests are slower than controller tests.
* | | | | Merge pull request #18721 from sj26/pre-discard-flashAaron Patterson2015-02-011-17/+23
|\ \ \ \ \ | | | | | | | | | | | | Pre-discard flash messages
| * | | | | Migrate old flash behaviourSamuel Cochran2015-01-301-0/+6
| | | | | |
| * | | | | Discard from flash before persisting in sessionSamuel Cochran2015-01-291-17/+17
| | | | | |
* | | | | | Show proper traces on Windows for the error pagesGenadi Samokovarov2015-02-011-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is an issue brought up by @daniel-rikowski in rails/web-console#91. Citing his PR proposal here: > Prior to this, backtrace lines were simply split by a single colon. > > Unfortunately that is also the drive letter delimiter in Windows paths > which resulted in a lot of empty source fragments of "C:0". ("C" from > the drive letter and 0 from "/path/to/rails/file.rb:16".to_i) > > Now the trace line is split by the first colon followed by some digits, > which works for both Windows and Unix path styles. Now, the PR was sent against web-console, because of the templates copy issue we used to had. Instead of bothering the contributor to reopen the issue against upstream Rails itself, I will make sure he gets the credit by putting his name in [rails-contributors/hard_coded_authors.rb][]. [rails-contributors/hard_coded_authors.rb]: (https://github.com/fxn/rails-contributors/blob/master/app/models/names_manager/hard_coded_authors.rb).
* | | | | | Use public Module#include, in favor of https://bugs.ruby-lang.org/issues/8846robertomiranda2015-01-311-1/+1
| |/ / / / |/| | | | | | | | | | | | | | ref: https://github.com/rails/rails/pull/18763#issuecomment-72349769
* | | | | Consistent usage of spaces in hashes across our codebaseRafael Mendonça França2015-01-291-2/+2
| | | | |
* | | | | Use fixed fonts only in the name of the parameterRafael Mendonça França2015-01-291-3/+3
| | | | |
* | | | | Switch to kwargs in ActionController::TestCase and ActionDispatch::IntegrationKir Shatrov2015-01-291-37/+104
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Non-kwargs requests are deprecated now. Guides are updated as well. `post url, nil, nil, { a: 'b' }` doesn't make sense. `post url, params: { y: x }, session: { a: 'b' }` would be an explicit way to do the same
* | | | | Preserve default url options when generating URLsTekin Suleyman2015-01-281-3/+4
|/ / / / | | | | | | | | | | | | | | | | Fixes an issue that would cause default_url_options to be lost when generating URLs with fewer positional arguments than parameters in the route definition.
* | | | Merge pull request #18693 from aditya-kapoor/deprecate_via_redirectRafael Mendonça França2015-01-281-0/+5
|\ \ \ \ | | | | | | | | | | | | | | | Deprecate *_via_redirect integration test methods
| * | | | Deprecate *_via_redirect integration test methodsAditya Kapoor2015-01-281-0/+5
| |/ / /
* / / / improve performance of integration tests.Aaron Patterson2015-01-271-1/+8
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I found delegate to be a bottleneck during integration tests. Here is the test case: ```ruby require 'test_helper' class DocumentsIntegrationTest < ActionDispatch::IntegrationTest test "index" do get '/documents' assert_equal 200, response.status end end Minitest.run_one_method(DocumentsIntegrationTest, 'test_index') StackProf.run(mode: :wall, out: 'stackprof.dump') do 3000.times do Minitest.run_one_method(DocumentsIntegrationTest, 'test_index') end end ``` Top of the stack: ``` [aaron@TC integration_performance_test (master)]$ stackprof stackprof.dump ================================== Mode: wall(1000) Samples: 23694 (7.26% miss rate) GC: 1584 (6.69%) ================================== TOTAL (pct) SAMPLES (pct) FRAME 7058 (29.8%) 6178 (26.1%) block in Module#delegate 680 (2.9%) 680 (2.9%) ActiveSupport::PerThreadRegistry#instance 405 (1.7%) 405 (1.7%) ThreadSafe::NonConcurrentCacheBackend#[] 383 (1.6%) 383 (1.6%) Set#include? 317 (1.3%) 317 (1.3%) ActiveRecord::Base.logger 281 (1.2%) 281 (1.2%) Rack::Utils::HeaderHash#[]= 269 (1.1%) 269 (1.1%) ActiveSupport::Notifications::Fanout::Subscribers::Evented#subscribed_to? 262 (1.1%) 262 (1.1%) block (4 levels) in Class#class_attribute 384 (1.6%) 246 (1.0%) block (2 levels) in Class#class_attribute ``` According to @eileencodes's tests, this speeds up integration tests so that they are only 1.4x slower than functional tests: Before: INDEX: Integration Test: 153.2 i/s - 2.43x slower After: INDEX: Integration Test: 275.1 i/s - 1.41x slower
* | | Merge pull request #18483 from rono23/fix-name_for_action-in-routingSantiago Pastorino2015-01-191-2/+3
|\ \ \ | | | | | | | | Fix name_for_action in routing
| * | | Fix name_for_action in routingrono232015-01-191-2/+3
| | | |
* | | | Extract `Date` header to string constant in Http Response, similar to other ↵Vipul A M2015-01-141-3/+4
|/ / / | | | | | | | | | headers
* | / Default headers, removed in controller actions, will not be reapplied to the ↵Jonas Baumann2015-01-091-0/+7
| |/ |/| | | | | test response.
* | Changing sets -> set Lindsey Bieda2015-01-061-1/+1
| | | | | | Updating some minor grammar issue.
* | Remove some comments about Ruby 1.9 behaviorsRafael Mendonça França2015-01-041-1/+1
| |
* | Remove unneeded requiresRafael Mendonça França2015-01-043-3/+0
| | | | | | | | These requires were added only to change deprecation message
* | Remove deprecated assertion filesRafael Mendonça França2015-01-043-9/+0
| |
* | Remove deprecated usage of string keys in URL helpersRafael Mendonça França2015-01-041-17/+1
| |
* | Remove deprecated `only_path` option on `*_path` helpersRafael Mendonça França2015-01-041-28/+1
| |
* | Remove deprecate `*_path` helpers in email viewsRafael Mendonça França2015-01-041-25/+4
| |
* | Remove deprecated `NamedRouteCollection#helpers`Rafael Mendonça França2015-01-041-8/+0
| |
* | Remove deprecated support to define routes with `:to` option thatRafael Mendonça França2015-01-041-17/+2
| | | | | | | | doesn't contain `#`
* | Remove deprecated `ActionDispatch::Response#to_ary`Rafael Mendonça França2015-01-041-15/+0
| |
* | Remove deprecated `ActionDispatch::Request#deep_munge`Rafael Mendonça França2015-01-041-9/+0
| |
* | Remove deprecated `ActionDispatch::Http::Parameters#symbolized_path_parameters`Rafael Mendonça França2015-01-041-8/+0
| |
* | Remove deprecated option `use_route` in controller testsRafael Mendonça França2015-01-041-15/+0
| |
* | stop referencing `env` in url_forAaron Patterson2014-12-301-0/+4
| | | | | | | | | | encapsulate env in the request so that we can eventually move away from the env hash
* | use methods on the request rather than direct hash accessAaron Patterson2014-12-301-0/+8
| | | | | | | | this will help decouple us from using the rack env hash
* | Fix form_for to work with objects that implement to_modelTravis Grathwell2014-12-291-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | Previously, if you tried to use form_for with a presenter object that implements to_model, it would crash in action_dispatch/routing/polymorphic_routes.rb when asking the presenter whether it is .persisted? Now, we always ask .persisted? of the to_model object instead. This seems to been an issue since 1606fc9d840da869a60213bc889da6fcf1fdc431 Signed-off-by: Eugenia Dellapenna <eugenia.dellapenna@gmail.com>
* | Move longer form example from integration guide to api reference, below anZachary Scott2014-12-291-0/+78
| | | | | | | | | | | | | | | | existing example. [ci skip] My reasoning is that this is probably too much information for the complete Rails testing guide, as we're trying to cover testing all aspects of the framework.