1. 29 5月, 2015 1 次提交
    • S
      Allow proc defaults with the Attributes API · a6e3cdae
      Sean Griffin 提交于
      This is a variant implementation of the changes proposed in #19914.
      Unlike that PR, the change in behavior is isolated in its own class.
      This is to prevent wonky behavior if a Proc is assigned outside of the
      default, and it is a natural place to place the behavior required by #19921
      as well.
      
      Close #19914.
      
      [Sean Griffin & Kir Shatrov]
      a6e3cdae
  2. 28 5月, 2015 4 次提交
    • W
      Properly append preload / includes args on Merger · a01d164b
      Washington Luiz 提交于
      Couldn't find other way to get the association name from a given class
      other than looping through `reflect_on_all_associations` reflections ..
      
      Noticed this one while looking at this example:
      
      ```ruby
      class Product < ActiveRecord::Base
        has_many :variants
        has_many :translations
      end
      
      class Translation < ActiveRecord::Base
        belongs_to :product
      end
      
      class Variant < ActiveRecord::Base
        belongs_to :product
      end
      
      class BugTest < Minitest::Test
        def test_merge_stuff
          product = Product.create! name: 'huhu'
          variant = Variant.create! product_id: product.id
          Translation.create! locale: 'en', product_id: product.id
      
          product_relation = Product.all
                                    .preload(:translations)
                                    .joins(:translations)
                                    .merge(Translation.where(locale: 'en'))
                                    .where(name: 'huhu')
      
          assert_equal variant, Variant.joins(:product).merge(product_relation).first
        end
      end
      ```
      a01d164b
    • J
      Allow Relation#compact using delegation · 57daaef8
      Jordan Raine 提交于
      57daaef8
    • A
      3932912a
    • G
      Resolve enums in test fixtures · 908cfef6
      George Claghorn 提交于
      Currently, values for columns backing Active Record enums must be
      specified as integers in test fixtures:
      
          awdr:
            title: "Agile Web Development with Rails"
            status: 2
      
          rfr:
            title: "Ruby for Rails"
            status: <%= Book.statuses[:proposed] %>
      
      This is potentially confusing, since enum values are typically
      specified as symbols or strings in application code. To resolve the
      confusion, this change permits the use of symbols or strings to specify
      enum values:
      
          awdr:
            status: :published
      
      It is compatible with fixtures that specify enum values as integers.
      908cfef6
  3. 27 5月, 2015 1 次提交
  4. 26 5月, 2015 2 次提交
  5. 24 5月, 2015 1 次提交
  6. 23 5月, 2015 1 次提交
  7. 22 5月, 2015 1 次提交
  8. 20 5月, 2015 8 次提交
  9. 19 5月, 2015 2 次提交
  10. 18 5月, 2015 3 次提交
  11. 17 5月, 2015 1 次提交
    • E
      Add schema cache to new connection pool after fork · 19bc5708
      Eugene Kenny 提交于
      Active Record detects when the process has forked and automatically
      creates a new connection pool to avoid sharing file descriptors.
      
      If the existing connection pool had a schema cache associated with it,
      the new pool should copy it to avoid unnecessarily querying the database
      for its schema.
      
      The code to detect that the process has forked is in ConnectionHandler,
      but the existing test for it was in the ConnectionManagement test file.
      I moved it to the right place while I was writing the new test for this
      change.
      19bc5708
  12. 15 5月, 2015 1 次提交
  13. 14 5月, 2015 3 次提交
    • T
      AR::ConPool - remove synchronization around connection cache. · 603fe20c
      thedarkone 提交于
      Renamed `@reserved_connections` -> `@thread_cached_conns`. New name
      clearly conveys the purpose of the cache, which is to speed-up
      `#connection` method.
      
      The new `@thread_cached_conns` now also uses `Thread` objects as keys
      (instead of previously `Thread.current.object_id`).
      
      Since there is no longer any synchronization around
      `@thread_cached_conns`, `disconnect!` and `clear_reloadable_connections!`
      methods now pre-emptively obtain ownership (via `checkout`) of all
      existing connections, before modifying internal data structures.
      
      A private method `release` has been renamed `thread_conn_uncache` to
      clear-up its purpose.
      
      Fixed some brittle `thread.status == "sleep"` tests (threads can go
      into sleep even without locks).
      603fe20c
    • T
      e92f5a99
    • T
      AR::ConPool - reduce post checkout critical section. · a3923e66
      thedarkone 提交于
      Move post checkout connection verification out of mutex.synchronize.
      a3923e66
  14. 13 5月, 2015 5 次提交
  15. 12 5月, 2015 3 次提交
  16. 11 5月, 2015 3 次提交
    • C
      [ci skip] Fix comment, since Rails 3.1 is out · 62540476
      claudiob 提交于
      62540476
    • A
      allow setting of a demodulized class name when using STI · cbd66b43
      Alex Robbin 提交于
      If your STI class looks like this:
      
      ```ruby
      class Company < ActiveRecord::Base
        self.store_full_sti_class = false
      
        class GoodCo < Company
        end
      
        class BadCo < Company
        end
      end
      ```
      
      The expectation (which is valid) is that the `type` in the database is saved as
      `GoodCo` or `BadCo`. However, another expectation should be that setting `type`
      to `GoodCo` would correctly instantiate the object as a `Company::GoodCo`. That
      second expectation is what this should fix.
      cbd66b43
    • C
      [ci skip] Stop explaining finders for Rails 3 · fe41c01c
      claudiob 提交于
      Now that master points at Rails 5, we might not need to explain how
      things used to work in Rails 3. Or we might… up to you 😁
      fe41c01c