aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
Commit message (Collapse)AuthorAgeFilesLines
...
| * Turn on performance based copsDillon Welch2018-07-238-31/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use attr_reader/attr_writer instead of methods method is 12% slower Use flat_map over map.flatten(1) flatten is 66% slower Use hash[]= instead of hash.merge! with single arguments merge! is 166% slower See https://github.com/rails/rails/pull/32337 for more conversation
* | Normalize time value not to be affected by summer timeRyuta Kamizono2018-07-253-10/+41
| | | | | | | | Follow up of #33358 for SQLite3.
* | Merge pull request #33229 from ↵Matthew Draper2018-07-252-7/+7
|\ \ | | | | | | | | | | | | albertoalmagro/albertoalmagro/prefer-rails-command-over-bin-rails Prefer rails command over bin/rails
| * | Substitute references to task for commandAlberto Almagro2018-07-061-1/+1
| | | | | | | | | | | | This commit substitutes references to rails/rake task for rails command
| * | Recommend use of rails over bin/railsAlberto Almagro2018-07-062-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | As discussed in #33203 rails command already looks for, and runs, bin/rails if it is present. We were mixing recommendations within guides and USAGE guidelines, in some files we recommended using rails, in others bin/rails and in some cases we even had both options mixed together.
* | | Rails guides are now served over httpsPaul McMahon2018-07-241-1/+1
| |/ |/| | | | | | | http links will be redirected to the https version, but still better to just directly link to the https version.
* | Merge pull request #30919 from seanlinsley/17622-before_save_strict_argumentsRyuta Kamizono2018-07-231-0/+27
|\ \ | | | | | | | | | Add strict argument checking to ActiveRecord callbacks
| * | add strict argument checking to ActiveRecord callbacksSean Linsley2018-07-221-0/+23
|/ / | | | | | | This ends up adding it to all save-related callbacks defined in `ActiveRecord::DefineCallbacks`, including e.g. `after_create`. Which should be fine: they didn't support `:on` in the first place.
* | Merge pull request #33415 from orhantoy/feature/docs-consistent-hash-syntaxGeorge Claghorn2018-07-221-8/+8
|\ \ | | | | | | [ci skip] Use consistent hash syntax in AR docs
| * | [ci skip] Use consistent hash syntax in AR docsOrhan Toy2018-07-221-8/+8
| | | | | | | | | | | | | | | The examples with `.where` uses hash w/ symbol keys so it would be more consistent to also do this with `.new`. Also from my experience the hash w/ symbol keys is more widely used with `where/new/create` etc. in ActiveRecord.
* | | [ci skip] Tidy up formatting of examplesOrhan Toy2018-07-221-12/+3
|/ / | | | | | | The consecutive verbatim blocks were being merged making the output look weird.
* | Replace permissive Mocha expectationsutilum2018-07-222-32/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Step 6 in #33162 When using Mocha like this: `ActiveRecord::Base.expects(:establish_connection).with(some_args)`, the expectations created look something like this: ``` @expectations= [#<Expectation:0x561350d968e0 expected exactly once, not yet invoked: ActiveRecord::Base.establish_connection("adapter" => "mysql2", "database" => nil) >, #<Expectation:0x561350dab8f8 allowed any number of times, not yet invoked: ActiveRecord::Base.establish_connection(any_parameters) >, #<Expectation:0x561350dc30c0 allowed any number of times, not yet invoked: ActiveRecord::Base.connection(any_parameters) >] ``` Minitest mocking (and the way we use it in `MethodCallAssertions`) expressly refuses to facilitate such permissiive expectations, insisting that all calls be specified in the actual expected order. This patch replaces such calls to `Mocha#expects` with `ActiveSupport::Testing::MethodCallAssertions` and specifies all expected calls in the epxected order.
* | Replace Mocha#stubs with assert_called_withutilum2018-07-221-6/+11
| | | | | | | | A correct, but not obvious use of `ActiveSupport::Testing::MethodCallAssertions`, which might also have been part of #33337 or #33391.
* | Fix Mocha replacement that slipped out of #33337utilum2018-07-221-11/+15
| |
* | CHANGELOG entryBrian Christian2018-07-191-0/+6
| |
* | don't impose primary key order if limit() is definedBrian Christian2018-07-191-1/+1
| |
* | tests for use of primary_key with limitBrian Christian2018-07-191-0/+15
| |
* | Merge pull request #33394 from kamipo/avoid_extra_scopingEileen M. Uchitelle2018-07-193-2/+8
|\ \ | | | | | | Avoid extra scoping in delegating to klass methods in the `scope` block
| * | Avoid extra scoping in delegating to klass methods in the `scope` blockRyuta Kamizono2018-07-193-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since #29301, delegating to klass methods in the `scope` block would cause extra scoping by the receiver itself. The extra scoping would always override intermediate scoping like `unscoped` and caused the regression #33387. To keep the original scoping behavior, should avoid the extra scoping in the `scope` block. Fixes #33387.
* | | Merge pull request #33391 from utilum/method_call_assertions_instead_of_mochaRyuta Kamizono2018-07-195-98/+154
|\ \ \ | |/ / |/| | Use MethodCallAssertions instead of Mocha#expects
| * | Use MethodCallAssertions instead of Mocha#expectsutilum2018-07-195-98/+154
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Many calls to `Mocha#expects` preceded the introduction of `ActiveSupport::Testing::MethodCallAssertions` in 53f64c0fb, and many are simple to replace with `MethodCallAssertions`. This patch makes all these simple replacements. Step 5 in #33162
* | | Fix `insert_fixtures_set` to be restored original connection flagsRyuta Kamizono2018-07-193-34/+116
|/ / | | | | | | | | | | #33363 has two regressions. First one is that `insert_fixtures_set` is failed if flags is an array. Second one is that connection flags are not restored if `set_server_option` is not supported.
* | Revert "Short circuit the scoping delegation for `relation.all`"Ryuta Kamizono2018-07-191-1/+0
| | | | | | | | | | | | | | This reverts commit eb807384c81a6e086b17a576755e992e6c4c685e. If the current scope is affected by the `unscoped` block, `all` won't be the same with `spawn`.
* | Merge pull request #33363 from ahorek/transaction_bugRafael França2018-07-182-5/+38
|\ \ | | | | | | use set_server_option if possible
| * | use set_server_option if possiblepavel2018-07-152-5/+38
| | |
* | | Merge pull request #33358 from azbshiri/summer-timeRafael França2018-07-182-2/+25
|\ \ \ | | | | | | | | Normalize the date component to 2000-01-01 automatically
| * | | Test DST both in local and utc timezoneAlireza Bashiri2018-07-171-2/+24
| | | | | | | | | | | | | | | | | | | | Also? Updated failing test.
| * | | Implement change() to convert to "2001-01-01" firstSean Prashad2018-07-171-0/+1
| | | | | | | | | | | | | | | | (cherry picked from commit da34d4766c33a042aeb92778a492fa810ec23001)
* | | | Replace some more Mocha#stub calls with Minitestutilum2018-07-173-25/+46
| | | | | | | | | | | | | | | | Missed these in preparing #33337
* | | | Remove unnecessary Mocha stubutilum2018-07-171-1/+0
|/ / / | | | | | | | | | Should have been removed in #33309.
* | | Clarify test casesbogdanvlviv2018-07-153-15/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove extra stub of `ActiveRecord::Base::connection` in `activerecord/test/cases/tasks/mysql_rake_test.rb`. Remove extra stub of `File::exist?` in `activerecord/test/cases/tasks/sqlite_rake_test.rb`. `ActiveRecord::Base::establish_connection` shouldn't return `true` in test cases. Related to https://github.com/rails/rails/pull/33337.
* | | Stub with Minitest instead of Mochautilum2018-07-156-461/+699
|/ / | | | | | | Step 4 in #33162
* | Merge pull request #33350 from kamipo/address_blank_lines_automaticallyRafael França2018-07-129-21/+0
|\ \ | | | | | | Enable `Layout/EmptyLinesAroundBlockBody` to reduce review cost in the future
| * | Enable `Layout/EmptyLinesAroundBlockBody` to reduce review cost in the futureRyuta Kamizono2018-07-129-21/+0
| | | | | | | | | | | | | | | | | | | | | We sometimes ask "✂️ extra blank lines" to a contributor in reviews like https://github.com/rails/rails/pull/33337#discussion_r201509738. It is preferable to deal automatically without depending on manpower.
* | | Merge pull request #28327 from rngtng/add-seed-dependencyRafael França2018-07-112-1/+6
|\ \ \ | |/ / |/| | Add missing env & config dependency to `rake db:seed`
| * | Add missing load config dependency to `rake db:seed`Tobias Bielohlawek2018-07-102-1/+6
| | |
* | | Fix stubbed methods in test casesbogdanvlviv2018-07-102-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove returning of `false` value for stubbed `lock_thread=` methods since there aren't any needs in it. Remove unnecessary returning of `true` for stubbed `drop_database` method. Follow up #33309. Related to #33162, #33326.
* | | Replace shallow mocks with Ruby classesutilum2018-07-105-18/+47
| | | | | | | | | | | | | | | | | | | | | While preparing this I realised that some stubbed returns values serve no purpose, so this patch drops those as well. Step 3 in #33162
* | | Avoid unneeded expanded column aliases array cachingRyuta Kamizono2018-07-102-8/+5
|/ /
* | Reduce mocking by testing value instead of method callutilum2018-07-093-18/+24
| | | | | | | | Step 2 in #33162
* | Merge pull request #33309 from utilum/remove_unnecessary_mocha_stubsRafael França2018-07-095-48/+18
|\ \ | | | | | | Remove unnecessary Mocha stubs
| * | Remove unnecessary Mocha stubsutilum2018-07-075-48/+18
| |/ | | | | | | | | | | Step 1 in #33162 [utilum + bogdanvlviv]
* | SQLite: Don't leak internal schema objectsRyuta Kamizono2018-07-093-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Related #31201. If creating custom primary key (like a string) in SQLite, it would also create an internal index implicitly which named begin with "sqlite_". It need to be hidden since the internal object names are reserved and prohibited for public use. See https://www.sqlite.org/fileformat2.html#intschema Fixes #33320.
* | Subsecond precision is not supported until MySQL 5.6.4Ryuta Kamizono2018-07-092-19/+19
| |
* | Merge pull request #33280 from nkondratyev/fix/mysql-time-default-valuesRyuta Kamizono2018-07-094-4/+20
|\ \ | |/ |/| | | Fix default value for mysql time types with specified precision
| * Fix default value for mysql time types with specified precisionNikolay Kondratyev2018-07-044-4/+20
|/ | | | | | | | | | | | | | | | The TIME, DATETIME, and TIMESTAMP types [have supported](https://mariadb.com/kb/en/library/microseconds-in-mariadb/) a fractional seconds precision from 0 to 6. Default values from time columns with specified precision is read as `current_timestamp(n)` from information schema. rake `db:schema:dump` produces `schema.rb` **without** default values for time columns with the specified precision: t.datetime "last_message_at", precision: 6, null: false rake `db:schema:dump` produces `schema.rb` **with** default values for time columns with the specified precision: t.datetime "last_message_at", precision: 6, default: -> { "current_timestamp(6)" }, null: false
* Use `construct_join_dependency` in all placesRyuta Kamizono2018-07-033-13/+6
|
* Don't extract `readonly_value` each timeRyuta Kamizono2018-07-032-5/+7
|
* Don't share seen object cache between different join nodes in eager loadingRyuta Kamizono2018-07-032-2/+20
| | | | | | | | | | | Currently, the seen object cache is shared if join nodes have the same target class. But it is a wrong assumption, we can't share the seen object cache between different join nodes (e.g. `:readonly_account` and `:accounts` have the same target class `Account`, but the instances have the different state `readonly`). Fixes #26805. Closes #27737.
* Merge pull request #33242 from brasic/sqlite-readonlyRyuta Kamizono2018-07-032-1/+36
|\ | | | | | | Support readonly option in SQLite3Adapter