1. 13 7月, 2017 1 次提交
  2. 11 7月, 2017 1 次提交
    • K
      * Don't eagerly require Rails' minitest plugin. · 0d72489b
      Kasper Timm Hansen 提交于
      By making the Rails minitest behave like a standard minitest plugin
      we're much more likely to not break when people use other minitest
      plugins. Like minitest-focus and pride.
      
      To do this, we need to behave like minitest: require files up front
      and then perform the plugin behavior via the at_exit hook.
      This also saves us a fair bit of wrangling with test file loading.
      
      Finally, since the environment and warnings options have to be applied
      as early as possible, and since minitest loads plugins at_exit, they
      have to be moved to the test command.
      
      * Don't expect the root method.
      
      It's likely this worked because we eagerly loaded the Rails minitest plugin
      and that somehow defined a root method on `Rails`.
      
      * Assign a backtrace to failed exceptions.
      
      Otherwise Minitest pukes when attempting to filter the backtrace (which
      Rails' backtrace cleaner then removes).
      
      Means the exception message test has to be revised too.
      
      This is likely caused by the rails minitest plugin now being loaded for
      these tests and assigning a default backtrace cleaner.
      0d72489b
  3. 09 7月, 2017 1 次提交
  4. 08 7月, 2017 4 次提交
  5. 07 7月, 2017 6 次提交
  6. 06 7月, 2017 4 次提交
    • E
      Skip query cache for in_batches and friends · 6658e374
      Eugene Kenny 提交于
      The `find_each`, `find_in_batches` and `in_batches` APIs usually operate
      on large numbers of records, where it's preferable not to load them all
      into memory at once.
      
      If the query cache is enabled, it will hold onto the query results until
      the end of the execution context (request/job), which means the memory
      used is still proportional to the total number of records. These queries
      are typically not repeated, so the query cache isn't desirable here.
      6658e374
    • D
      Fix indentation style for private method. · 06e89c92
      Dennis Taylor 提交于
      06e89c92
    • D
      Don't translate non-database exceptions. · ad0bde58
      Dennis Taylor 提交于
      The AbstractAdapter will translate all StandardErrors generated during the course of a query into ActiveRecord::StatementInvalids. Unfortunately, it'll also mangle non-database-related errors generated in ActiveSupport::Notification callbacks after the query has successfully completed. This should prevent it from translating errors from ActiveSupport::Notifications.
      ad0bde58
    • L
      Fix `ActiveModel::Type::DateTime#serialize` · 7b2dfdea
      Lisa Ugray 提交于
      `ActiveModel::Type::DateTime#serialize` should return a `Time` object
      so that finding by a datetime column works correctly.
      7b2dfdea
  7. 05 7月, 2017 1 次提交
  8. 04 7月, 2017 4 次提交
  9. 03 7月, 2017 1 次提交
  10. 02 7月, 2017 7 次提交
    • R
      Remove redundant `assert_respond_to` · 6aa658e3
      Ryuta Kamizono 提交于
      It is covered by following assertion.
      6aa658e3
    • A
    • R
      Fix removed version 5.2 to 6.0 in the deprecation message · 27996bc1
      Ryuta Kamizono 提交于
      Because the deprecation message is not yet released.
      27996bc1
    • E
      Apply record state based on parent transaction state · 0237da28
      eileencodes 提交于
      Let's say you have a nested transaction and both records are saved.
      Before the outer transaction closes, a rollback is performed. Previously
      the record in the outer transaction would get marked as not persisted
      but the inner transaction would get persisted.
      
      ```ruby
      Post.transaction do
        post_one.save # will get rolled back
      
        Post.transaction(requires_new: true) do
          post_two.save # incorrectly remains marked as persisted
        end
      
        raise ActiveRecord::Rollback
      end
      ```
      
      To fix this the PR changes transaction handling to have the child
      transaction ask the parent how the records should be marked. When
      there are child transactions, it will always be a SavpointTransaction
      because the stack isn't empty. From there we pass the parent_transaction
      to the child SavepointTransaction where we add the children to the parent
      so the parent can mark the inner transaction as rolledback and thus mark
      the record as not persisted.
      
      `update_attributes_from_transaction_state` uses the `completed?` check to
      correctly mark all the transactions as rolledback and the inner record as
      not persisted.
      
      ```ruby
      Post.transaction do
        post_one.save # will get rolled back
      
        Post.transaction(requires_new: true) do
          post_two.save # with new behavior, correctly marked as not persisted
          on rollback
        end
      
        raise ActiveRecord::Rollback
      end
      ```
      
      Fixes #29320
      0237da28
    • E
      Deprecate and replace `set_state` method · 608ebccf
      eileencodes 提交于
      `set_state` was directly setting the transaction state instance
      variable. It's better to set the state via specific methods (`rollback!`
      and `commit!` respectively.
      
      While undocumented and untested, it's possible someone is using
      `set_state` in their app or gem so I've added a deprecation notice to
      it.
      
      No where in the app do we use `nullify!` but I wanted to keep existing
      behavior while replacing the method with a better pattern.
      608ebccf
    • R
      Fix `test_copying_migrations_preserving_magic_comments` · 0ba55d2e
      Ryuta Kamizono 提交于
      Since #29540, `# frozen_string_literal: true` included original
      migration files.
      0ba55d2e
    • M
      Revert "Merge pull request #29540 from kirs/rubocop-frozen-string" · 87b3e226
      Matthew Draper 提交于
      This reverts commit 3420a145, reversing
      changes made to afb66a5a.
      87b3e226
  11. 01 7月, 2017 3 次提交
  12. 30 6月, 2017 2 次提交
  13. 29 6月, 2017 5 次提交
    • R
      Fix the next version of Rails from 5.3 to 6.0 · 1d264f0b
      Ryuta Kamizono 提交于
      1d264f0b
    • R
      Deprecate delegating to `arel` in `Relation` · d9fca84d
      Ryuta Kamizono 提交于
      Active Record doesn't rely delegating to `arel` in the internal since
      425f2cac. The delegation is a lower priority than delegating to `klass`,
      so it is pretty unclear which method is delegated to `arel`.
      
      For example, `bind_values` method was removed at b06f64c3 (a series of
      changes https://github.com/rails/rails/compare/79f71d3...b06f64c). But a
      relation still could respond to the method because `arel` also have the
      same named method (#28976).
      
      Removing the delegation will achieve predictable behavior.
      d9fca84d
    • R
      Should use the same connection in using query cache · abbc8351
      Ryuta Kamizono 提交于
      `test_cache_is_available_when_using_a_not_connected_connection` is
      always failed if running only the test since #29609.
      
      ```
      % ARCONN=mysql2 be ruby -w -Itest test/cases/query_cache_test.rb -n test_cache_is_available_when_using_a_not_connected_connection
      Using mysql2
      Run options: -n test_cache_is_available_when_using_a_not_connected_connection --seed 15043
      
      F
      
      Finished in 0.070519s, 14.1806 runs/s, 28.3612 assertions/s.
      
        1) Failure:
      QueryCacheTest#test_cache_is_available_when_using_a_not_connected_connection [test/cases/query_cache_test.rb:336]:
      2 instead of 1 queries were executed.
      Queries:
      SELECT  `tasks`.* FROM `tasks` WHERE `tasks`.`id` = ? LIMIT ?
      SET NAMES utf8 COLLATE utf8_unicode_ci,  @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'),  @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483.
      Expected: 1
        Actual: 2
      
      1 runs, 2 assertions, 1 failures, 0 errors, 0 skips
      ```
      
      This failure is due to `LogSubscriber` will use not connected
      `ActiveRecord::Base.connection` even if `Task.connection` is connected.
      I fixed to always pass `type_casted_binds` to log subscriber to avoid
      the issue.
      abbc8351
    • R
      Fix to scoping is correctly restored · 99912ed9
      Ryuta Kamizono 提交于
      This regression was caused by #23004.
      
      If STI subclass is using scoping in parent class scoping,
      `current_scope` in subclass is never restored.
      I fixed to restore `current_scope` to previous value correctly.
      99912ed9
    • R
      Remove unused `aliased_table_name` in `Association` · 4aa4a449
      Ryuta Kamizono 提交于
      `aliased_table_name` in `Association` was added at a3502c41.
      `aliased_table_name` in `JoinDependency` (added at 55854c41) is used, but
      it looks like that added one in `Association` is never used from the
      beginning.
      4aa4a449