1. 19 1月, 2014 6 次提交
    • R
      Merge pull request #13759 from raysrashmi/rails-spring · 0c96f8ab
      Robin Dupret 提交于
      Spring in now under rails/spring [ci skip]
      0c96f8ab
    • R
      Spring in now under rails/spring [ci skip] · b20d4453
      Rashmi Yadav 提交于
      b20d4453
    • A
      Merge pull request #13756 from huoxito/rails-spring · ab91bc31
      Andrew White 提交于
      spring gem moved to rails/spring
      ab91bc31
    • W
      spring gem moved to rails/spring · e05c7912
      Washington Luiz 提交于
      e05c7912
    • G
      Merge pull request #13751 from chancancode/ar_rollback_fix · 3c354bd8
      Godfrey Chan 提交于
      Restore ActiveRecord states after a rollback for models w/o callbacks
      3c354bd8
    • G
      Restore ActiveRecord states after a rollback for models w/o callbacks · 7386ffc7
      Godfrey Chan 提交于
      This fixes a regression (#13744) that was caused by 67d8bb96.
      
      In 67d8bb96, we introduced lazy rollback for records, such that the
      record's internal states and attributes are not restored immediately
      after a transaction rollback, but deferred until they are first
      accessed.
      
      This optimization is only performed when the model does not have any
      transactional callbacks (e.g. `after_commit` and `after_create`).
      
      Unfortunately, the models used to test the affected codepaths all
      comes with some sort of transactional callbacks. Therefore this
      codepath remains largely untested until now and as a result there are
      a few issues in the implementation that remains hidden until now.
      
      First, the `sync_with_transaction_state` (or more accurately,
      `update_attributes_from_transaction_state`) would perform the
      synchronization prematurely before a transaction is finalized (i.e.
      comitted or rolled back). As a result, when the actuall rollback
      happens, the record will incorrectly assumes that its internal states
      match the transaction state, and neglect to perform the restore.
      
      Second, `update_attributes_from_transaction_state` calls `committed!`
      in some cases. This in turns checks for the `destroyed?` state which
      also requires synchronization with the transaction stae, which causes
      an infnite recurrsion.
      
      This fix works by deferring the synchronization until the transaction
      has been finalized (addressing the first point), and also unrolled
      the `committed!` and `rolledback!` logic in-place (addressing the
      second point).
      
      It should be noted that the primary purpose of the `committed!` and
      `rolledback!` methods are to trigger the relevant transactional
      callbacks. Since this code path is only entered when there are no
      transactional callbacks on the model, this shouldn't be necessary. By
      unrolling the method calls, the intention here (to restore the states
      when necessary) becomes more clear.
      7386ffc7
  2. 18 1月, 2014 6 次提交
  3. 17 1月, 2014 17 次提交
  4. 16 1月, 2014 11 次提交
    • C
      Merge branch 'ca-touch-commit-callbacks' · 73ba2c14
      Carlos Antonio da Silva 提交于
      Make AR::Base#touch fire the after_commit and after_rollback callbacks.
      
      Closes #12031.
      73ba2c14
    • H
    • C
      Fix test for cache_key + touched · 38fcee38
      Carlos Antonio da Silva 提交于
      Ensure the child can actually be touched. The `Bulb` model has no
      timestamp column, thus trying to touch it would return `nil`.
      38fcee38
    • P
      Revert "methods are defined right after the module_eval, so we don't need to do" · fbab7b2a
      Piotr Sarnacki 提交于
      This change breaks tests in activesupport/test/core_ext/module_test.rb:
      
      * test_delegation_exception_backtrace
      * test_delegation_exception_backtrace_with_allow_nil
      
      This reverts commit 0167765e.
      fbab7b2a
    • P
      Revert "Don't remove trailing slash from PATH_INFO for mounted apps" · 2e0f9ed7
      Piotr Sarnacki 提交于
      The revert is needed because of a regression described in #13369, routes
      with trailing slash are no longer recognized properly.
      
      This reverts commit 50311f13.
      2e0f9ed7
    • P
      Add failing test for #13369 · 73d8a90b
      Piotr Sarnacki 提交于
      After introducing 50311f13 a regression was introduced: routes with
      trailing slash are no longer recognized properly. This commit provides a
      failing test for this situation.
      73d8a90b
    • Y
      Merge branch 'fix_order_dependent_tests_in_active_record_suite' · 2a0ba918
      Yves Senn 提交于
      This gets the whole Active Record suite working without calling
      `self.i_suck_and_my_tests_are_order_dependent!` on `ActiveSupport::TestCase`.
      
      Note that the test files themselves still run in order. This means
      that only order dependencies within a single test file were addressed.
      2a0ba918
    • Y
      reset column information after fiddling with `Encoding.default_internal` · 6eab5304
      Yves Senn 提交于
      This solves order depndent problems in `base_test.rb`. The leaked column
      information crashed test cases using the `Weird` class later on:
      
      ```
        2) Error:
      BasicsTest#test_group_weirds_by_from:
      SyntaxError: /Users/senny/Projects/rails/activemodel/lib/active_model/attribute_methods.rb:387: invalid hex escape
      ... attribute_before_type_cast("\x{A4CA}\x{A4DE}\x{A4A8}", *arg...
      ...                               ^
      /Users/senny/Projects/rails/activemodel/lib/active_model/attribute_methods.rb:387: invalid hex escape
      ...te_before_type_cast("\x{A4CA}\x{A4DE}\x{A4A8}", *args)
      ...                               ^
      /Users/senny/Projects/rails/activemodel/lib/active_model/attribute_methods.rb:387: invalid hex escape
      ...e_type_cast("\x{A4CA}\x{A4DE}\x{A4A8}", *args)
      ...                               ^
          /Users/senny/Projects/rails/activemodel/lib/active_model/attribute_methods.rb:385:in `module_eval'
          /Users/senny/Projects/rails/activemodel/lib/active_model/attribute_methods.rb:385:in `define_proxy_call'
          /Users/senny/Projects/rails/activemodel/lib/active_model/attribute_methods.rb:294:in `block in define_attribute_method'
          /Users/senny/Projects/rails/activemodel/lib/active_model/attribute_methods.rb:285:in `each'
          /Users/senny/Projects/rails/activemodel/lib/active_model/attribute_methods.rb:285:in `define_attribute_method'
          /Users/senny/Projects/rails/activemodel/lib/active_model/attribute_methods.rb:252:in `block in define_attribute_methods'
          /Users/senny/Projects/rails/activemodel/lib/active_model/attribute_methods.rb:252:in `each'
          /Users/senny/Projects/rails/activemodel/lib/active_model/attribute_methods.rb:252:in `define_attribute_methods'
          /Users/senny/Projects/rails/activerecord/lib/active_record/attribute_methods.rb:72:in `block in define_attribute_methods'
          /Users/senny/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/mutex_m.rb:73:in `synchronize'
          /Users/senny/.rbenv/versions/2.0.0-p353/lib/ruby/2.0.0/mutex_m.rb:73:in `mu_synchronize'
          /Users/senny/Projects/rails/activerecord/lib/active_record/attribute_methods.rb:69:in `define_attribute_methods'
          /Users/senny/Projects/rails/activerecord/lib/active_record/attribute_methods.rb:174:in `method_missing'
          /Users/senny/Projects/rails/activerecord/lib/active_record/attribute_assignment.rb:45:in `public_send'
          /Users/senny/Projects/rails/activerecord/lib/active_record/attribute_assignment.rb:45:in `_assign_attribute'
          /Users/senny/Projects/rails/activerecord/lib/active_record/attribute_assignment.rb:32:in `block in assign_attributes'
          /Users/senny/Projects/rails/activerecord/lib/active_record/attribute_assignment.rb:26:in `each'
          /Users/senny/Projects/rails/activerecord/lib/active_record/attribute_assignment.rb:26:in `assign_attributes'
          /Users/senny/Projects/rails/activerecord/lib/active_record/core.rb:458:in `init_attributes'
          /Users/senny/Projects/rails/activerecord/lib/active_record/core.rb:191:in `initialize'
          /Users/senny/Projects/rails/activerecord/lib/active_record/inheritance.rb:30:in `new'
          /Users/senny/Projects/rails/activerecord/lib/active_record/inheritance.rb:30:in `new'
          /Users/senny/Projects/rails/activerecord/lib/active_record/persistence.rb:33:in `create'
          test/cases/base_test.rb:646:in `test_group_weirds_by_from'
      ```
      6eab5304
    • Y
      fca8b031
    • Y
      isolate class attribute assignment in `migration_test.rb` · a7139008
      Yves Senn 提交于
      This makes the tests inside `migration_test.rb` order independent.
      The assignments to `Reminder.table_name_prefix` and `Reminder.table_name_suffix`
      previously leaked and had impact on following test cases.
      
      This patch isolates the assignments on a throw-away subclass.
      a7139008
    • Y
      use `teardown` for cleanup, not `setup`. · f0052437
      Yves Senn 提交于
      This solves order dependent issues where the last test
      leaked the query cache state. This resulted in the following error:
      
      ```
      QueryCacheExpiryTest#test_cache_is_expired_by_habtm_delete [test/cases/query_cache_test.rb:275]:
      not all expectations were satisfied
      unsatisfied expectations:
      - expected exactly twice, invoked once: #<ActiveRecord::ConnectionAdapters::SQLite3Adapter:0x7f93e0c65838>.clear_query_cache(any_parameters)
      ```
      f0052437