aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | | | mutate headers before committing the responseAaron Patterson2015-09-241-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We should not mutate headers after the response has been committed.
* | | | | | | Add a few debug statements to figure out the build failureSean Griffin2015-09-241-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Nobody can replicate locally and the failure makes no sense
* | | | | | | We still need to reset `@changed_attributes` in `changes_applied`Sean Griffin2015-09-241-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When I removed the call to `super` to avoid the setting of `@previous_changes`, I forgot to duplicate the other part of that behavior, which led to failing tests
* | | | | | | Improve the performance of `save` and friendsSean Griffin2015-09-243-4/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The biggest source of the performance regression in these methods occurred because dirty tracking required eagerly materializing and type casting the assigned values. In the previous commits, I've changed dirty tracking to perform the comparisons lazily. However, all of this is moot when calling `save`, since `changes_applied` will be called, which just ends up eagerly materializing everything, anyway. With the new mutation tracker, it's easy to just compare the previous two hashes in the same lazy fashion. We will not have aliasing issues with this setup, which is proven by the fact that we're able to detect nested mutation. Before: User.create! 2.007k (± 7.1%) i/s - 10.098k After: User.create! 2.557k (± 3.5%) i/s - 12.789k Fixes #19859
* | | | | | | Encapsulate a lot of the logic from `Dirty` in an objectSean Griffin2015-09-243-25/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In order to improve the performance of dirty checking, we're going to need to duplicate all of the `previous_` methods in Active Model. However, these methods are basically the same as their non-previous counterparts, but comparing `@original_attributes` to `@previous_original_attributes` instead of `@attributes` and `@original_attributes`. This will help reduce that duplication.
* | | | | | | Clean up the implementation of AR::DirtySean Griffin2015-09-2413-89/+114
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This moves a bit more of the logic required for dirty checking into the attribute objects. I had hoped to remove the `with_value_from_database` stuff, but unfortunately just calling `dup` on the attribute objects isn't enough, since the values might contain deeply nested data structures. I think this can be cleaned up further. This makes most dirty checking become lazy, and reduces the number of object allocations and amount of CPU time when assigning a value. This opens the door (but doesn't quite finish) to improving the performance of writes to a place comparable to 4.1
* | | | | | | Merge pull request #21754 from lucasmazza/lm-assert-differenceRafael Mendonça França2015-09-243-2/+23
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Make `assert_difference` return the result of the yielded block.
| * | | | | | | Make `assert_difference` return the result of the yielded block.Lucas Mazza2015-09-243-2/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With this we can perform new assertions on the returned value without having to cache it with an outer variable or wrapping all subsequent assertions inside the `assert_difference` block. Before: ``` post = nil assert_difference -> { Post.count }, 1 do Post.create end assert_predicate post, :persisted? ``` Now: ``` post = assert_difference -> { Post.count } do Post.create end assert_predicate post, :persisted? ```
* | | | | | | | Merge pull request #21753 from jonatack/fix-typo-in-ignored_columns_testRafael Mendonça França2015-09-241-1/+1
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Fix typo in ignored_columns test [skip ci]
| * | | | | | | | Fix typo in ignored_columns test [skip ci]Jon Atack2015-09-241-1/+1
|/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | Follow-up to #21720.
* | | | | | | | Merge pull request #21720 from byroot/ignore-columnsSean Griffin2015-09-245-1/+37
|\ \ \ \ \ \ \ \ | |_|/ / / / / / |/| | | | | | | Implement ActiveRecord::Base.ignored_columns
| * | | | | | | Implement ActiveRecord::Base.ignored_columnsJean Boussier2015-09-245-1/+37
|/ / / / / / /
* | | | | | | Merge pull request #21550 from didacte/unscope-associationsSean Griffin2015-09-243-1/+26
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | ActiveRecord: use association's `unscope` when preloading
| * | | | | | | Include association's `unscope` when preloadingJimmy Bourassa2015-09-092-1/+22
| | | | | | | |
* | | | | | | | Merge pull request #21697 from gdeglin/fix_returning_disabled_default_values_bugSean Griffin2015-09-242-1/+15
|\ \ \ \ \ \ \ \ | |_|/ / / / / / |/| | | | | | | | | | | | | | | Fix a bug with returning_disabled when using the postgresql adapter
| * | | | | | | Fix a bug with returning_disabled when using the postgresql adapterGeorge Deglin2015-09-202-1/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The returning_disabled configuration option is required to make postgresql partitioning triggers work. This commit fixes a bug where an invalid query would be made in cases where returning_disabled was true and objects were created with no attributes defined.
* | | | | | | | Merge pull request #21746 from amitsuroliya/doc_fixesKasper Timm Hansen2015-09-242-3/+3
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Improve readability of docs by using code tag [ci skip]
| * | | | | | | | Improve readability of docs by using code tag [ci skip]amitkumarsuroliya2015-09-242-3/+3
|/ / / / / / / /
* | | | | | | | Merge pull request #21740 from cllns/add-jbuilder-notesYves Senn2015-09-241-0/+33
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ci skip] [Action View Overview Guide] Add note about Jbuilder
| * | | | | | | | Add note about JbuilderSean Collins2015-09-231-0/+33
| | |_|/ / / / / | |/| | | | | | | | | | | | | | | | | | | | | | [skip ci]
* | | | | | | | Merge pull request #21744 from amitsuroliya/doc_changesYves Senn2015-09-241-1/+1
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Fix ActiveRecord `instance_method_already_implemented` docs [ci skip]
| * | | | | | | | Fix ActiveRecord `instance_method_already_implemented` docs [ci skip]amitkumarsuroliya2015-09-241-1/+1
| | | | | | | | |
* | | | | | | | | Merge pull request #21745 from brandoncc/patch-1Yves Senn2015-09-241-1/+1
|\ \ \ \ \ \ \ \ \ | |/ / / / / / / / |/| | | | | | | | Fix out of sync comment [ci skip]
| * | | | | | | | Fix out of sync commentBrandon Conway2015-09-231-1/+1
|/ / / / / / / / | | | | | | | | | | | | | | | | It appears that as of version 4 the `db:test:prepare` task no longer depends on the `abort_if_pending_migrations` task, which leaves this comment out of sync.
* | | | | | | | call `get` instead of controller.processAaron Patterson2015-09-231-12/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | we want the request to go through the test harness, not directly call the methods on the controller
* | | | | | | | remove controller constructionAaron Patterson2015-09-231-8/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | also remove req / res references
* | | | | | | | stop directly referencing the request and response objectsAaron Patterson2015-09-231-23/+21
| | | | | | | |
* | | | | | | | test framework allocates the controller for usAaron Patterson2015-09-231-1/+0
| | | | | | | |
* | | | | | | | type of response should not matterAaron Patterson2015-09-231-6/+0
| | | | | | | |
* | | | | | | | don't touch the response object until after we call `get`Aaron Patterson2015-09-231-5/+2
| | | | | | | |
* | | | | | | | stop directly setting headers on the controllerAaron Patterson2015-09-232-14/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | again, since we are going through the test harness, all this is done for us.
* | | | | | | | stop constructing a request object in this setterAaron Patterson2015-09-231-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since we just go through the normal test harness that sets up a request for us, we don't need to do this anymore.
* | | | | | | | test against controller responsesAaron Patterson2015-09-231-52/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rather than calling methods on the controller. We should test the values returned by the controller rather than assuming that the internals are implemented in a certain way.
* | | | | | | | stop applying default headers in ActionDispatch::ResponseAaron Patterson2015-09-237-16/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I'm making this change so that I can construct response objects that *don't* have the default headers applied. For example, I would like to construct a response object from the return value of a controller. If you need to construct a response object with the default headers, then please use the alternate constructor: `ActionDispatch::Response.create`
* | | | | | | | Merge pull request #21737 from cllns/make-engine-paths-consistentEileen M. Uchitelle2015-09-231-2/+2
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Change the paths for both Gemfile lines to be 'engines/blorgh'
| * | | | | | | | Change the paths for both Gemfile lines to be 'engines/blorgh'Sean Collins2015-09-231-2/+2
| |/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | They're now consistent. Also changes the quotes to be single, so we only have one type of quote per line [skip ci]
* | | | | | | | Merge pull request #21742 from vngrs/fix_ar_locking_docSean Griffin2015-09-231-2/+2
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Fix ActiveRecord::Locking doc [ci skip]
| * | | | | | | | Fix ActiveRecord::Locking doc [ci skip]Mehmet Emin İNAÇ2015-09-241-2/+2
|/ / / / / / / /
* | | | | | | | Merge pull request #21218 from repinel/fix-as-callback-terminatorKasper Timm Hansen2015-09-237-36/+45
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | WIP: Fix the AS::Callbacks terminator regression from 4.2.3
| * | | | | | | | Fix the AS::Callbacks terminator regression from 4.2.3Roque Pinel2015-09-227-36/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rails 4.2.3 AS::Callbacks will not halt chain if `false` is returned. That is the behavior of specific callbacks like AR::Callbacks and AM::Callbacks.
* | | | | | | | | Merge pull request #21736 from eliotsykes/document-bearer-prefixKasper Timm Hansen2015-09-231-5/+7
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | Document Bearer prefix for Authorization header [ci skip]
| * | | | | | | | | Document Bearer prefix for Authorization header [ci skip]Eliot Sykes2015-09-231-5/+7
| | | | | | | | | |
* | | | | | | | | | Merge pull request #21721 from ronakjangir47/remove_mocha_railties_app_generatorKasper Timm Hansen2015-09-231-87/+106
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | Removed Mocha from app generators tests
| * | | | | | | | | | Removed Mocha from app generators testsRonak Jangir2015-09-231-87/+106
| |/ / / / / / / / /
* | | | | | | | | | Merge pull request #21739 from ronakjangir47/subsecond_precision_supportedSean Griffin2015-09-231-0/+1
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | skipped assertion on datetime seconds precision as it is only valid for newer mysql verions
| * | | | | | | | | | skipped assertion on datetime seconds precision as it is only valid for ↵Ronak Jangir2015-09-241-0/+1
| |/ / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | newer mysql versions
* | | | | | | | | | don't access the response object before a request was madeAaron Patterson2015-09-231-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It doesn't make sense to access the response object before a request is made (how was a response object created without making a request?) This commit splits testing default headers and default header mutation tests and removes access to the pre-request response object.
* | | | | | | | | | split cookie testsAaron Patterson2015-09-231-1/+6
| |_|/ / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | these should really be multiple tests.
* | | | | | | | | don't mutate a response object after to_aAaron Patterson2015-09-231-0/+2
|/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the response object is `to_a`'d, that means it's been written to the socket. It doesn't make sense to mutate the response object after it's been written (and this may raise an exception in the future).
* | | | | | | | Further remove reliance on subsecond precision in testsSean Griffin2015-09-231-6/+14
| | | | | | | |