aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* 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
| | | |
* | | | Don't rely on subsecond precision being applied in testsSean Griffin2015-09-235-5/+24
| | | | | | | | | | | | | | | | | | | | | | | | When I originally reviewed the #20317, I believe these changes were present, but it appears that it was later updated so that they were removed. Since Travis hadn't re-run the build, this slipped through.
* | | | 0 precision is not the same as no precisionSean Griffin2015-09-231-8/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | And we are passing them as separate types in the query, which means 0 precision is still not supported by older versions of MySQL. I also missed a handful of other cases where they need to be conditionally applied.
* | | | Don't attempt to specify datetime precision unless supportedSean Griffin2015-09-233-13/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Specifically, versions of MySQL prior to 5.6 do not support this, which is what's used on Travis by default. The method `mysql_56?` appeared to only ever be used to conditionally apply subsecond precision, so I've generalized it and used it more liberally. This should fix the test failures caused by #20317
* | | | Merge pull request #20317Sean Griffin2015-09-236-35/+67
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | AR: take precision into count when assigning a value to timestamp attribute