1. 01 6月, 2015 1 次提交
  2. 31 5月, 2015 3 次提交
    • Y
      Fix circular import warning on build · 179b9f6a
      Yoong Kang Lim 提交于
      179b9f6a
    • S
      Ensure symbols passed to `select` are always quoted · 0ef7e73f
      Sean Griffin 提交于
      Our general contract in Active Record is that strings are assumed to be
      SQL literals, and symbols are assumed to reference a column. If a from
      clause is given, we shouldn't include the table name, but we should
      still quote the value as if it were a column.
      
      Upon fixing this, the tests were still failing on SQLite. This was
      because the column name being returned by the query was `"\"join\""`
      instead of `"join"`. This is actually a bug in SQLite that was fixed a
      long time ago, but I was using the version of SQLite included by OS X
      which has this bug. Since I'm guessing this will be a common case for
      contributors, I also added an explicit check with a more helpful error
      message.
      
      Fixes #20360
      0ef7e73f
    • S
      Add docs and changelog entry for 73aab036 [ci skip] · 6bd25738
      Sean Griffin 提交于
      6bd25738
  3. 29 5月, 2015 5 次提交
    • K
      Allow Enumerable#pluck to take a splat. · 777fa257
      Kevin Deisz 提交于
      This allows easier integration with ActiveRecord, such that
      AR#pluck will now use Enumerable#pluck if the relation is loaded,
      without needing to hit the database.
      777fa257
    • E
      Update docs for ActiveRecord `serialize` · bbdcbbc9
      Ernie Miller 提交于
      For certain column types, using `serialize` is unnecessary, or the user
      may get unexpected contents back from the DB adapter (which is handling
      some basic deserialization for them). Call this out in the
      documentation.
      
      For background, see:
      
          https://gist.github.com/ernie/33f75f2294885b9806f9
          https://twitter.com/erniemiller/status/604262907442905090
      bbdcbbc9
    • R
      Fix the shadowing warning for `reflection` · 9b986ead
      Roque Pinel 提交于
      9b986ead
    • S
      Persist user provided default values, even if unchanged · 2f9d8895
      Sean Griffin 提交于
      This is a usability change to fix a quirk from our definition of partial
      writes. By default, we only persist changed attributes. When creating a
      new record, this is assumed that the default values came from the
      database. However, if the user provided a default, it will not be
      persisted, since we didn't see it as "changed". Since this is a very
      specific case, I wanted to isolate it with the other quirks that come
      from user provided default values. The number of edge cases which are
      presenting themselves are starting to make me wonder if we should just
      remove the ability to assign a default, in favor of overriding
      `initialize`. For the time being, this is required for the attributes
      API to not have confusing behavior.
      
      We had to delete one test, since this actually changes the meaning of
      `.changed?` on Active Record models. It now specifically means
      `changed_from_database?`. While I think this will make the attributes
      API more ergonomic to use, it is a subtle change in definition (though
      not a backwards incompatible one). We should probably figure out the
      right place to document this. (Feel free to open a PR doing that if
      you're reading this).
      
      /cc @rafaelfranca @kirs @senny
      
      This is an alternate implementation of #19921.
      
      Close #19921.
      
      [Sean Griffin & Kir Shatrov]
      2f9d8895
    • 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
  4. 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
  5. 27 5月, 2015 1 次提交
  6. 26 5月, 2015 2 次提交
  7. 24 5月, 2015 1 次提交
  8. 23 5月, 2015 1 次提交
  9. 22 5月, 2015 1 次提交
  10. 20 5月, 2015 8 次提交
  11. 19 5月, 2015 2 次提交
  12. 18 5月, 2015 3 次提交
  13. 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
  14. 15 5月, 2015 1 次提交
  15. 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
  16. 13 5月, 2015 3 次提交