Skip to content
Commits on May 31, 2016
  1. @matthewd
  2. @sgrif

    Make Active Record emit significantly smaller YAML

    This reduces the size of a YAML encoded Active Record object by ~80%
    depending on the number of columns. There were a number of wasteful
    things that occurred when we encoded the objects before that have
    resulted in numerous wins
    
    - We were emitting the result of `attributes_before_type_cast` as a hack
      to work around some laziness issues
    - The name of an attribute was emitted multiple times, since the
      attribute objects were in a hash keyed by the name. We now store them
      in an array instead, and reconstruct the hash using the name
    - The types were included for every attribute. This would use backrefs
      if multiple objects were encoded, but really we don't need to include
      it at all unless it differs from the type at the class level. (The
      only time that will occur is if the field is the result of a custom
      select clause)
    - `original_attribute:` was included over and over and over again since
      the ivar is almost always `nil`. We've added a custom implementation
      of `encode_with` on the attribute objects to ensure we don't write the
      key when the field is `nil`.
    
    This isn't without a cost though. Since we're no longer including the
    types, an object can find itself in an invalid state if the type changes
    on the class after serialization. This is the same as 4.1 and earlier,
    but I think it's worth noting.
    
    I was worried that I'd introduce some new state bugs as a result of
    doing this, so I've added an additional test that asserts mutation not
    being lost as the result of YAML round tripping.
    
    Fixes #25145
    sgrif committed May 31, 2016
  3. @maclover7 @jeremy

    Remove unused require and unused model stub

    - The `Project` model should have been removed in 4689392.
    - The superfluous require was added in 605c645.
    
    Closes #25215
    
    Signed-off-by: Jeremy Daer <jeremydaer@gmail.com>
    maclover7 committed with jeremy May 31, 2016
  4. @jeremy

    Merge pull request #25170 from maclover7/add-configuration-cable

    [Action Cable] Add `WebSocket` and `logger` configuration options
    jeremy committed May 31, 2016
  5. @javan @maclover7
  6. @maclover7

    Reorganize `MockWebSocket`

    maclover7 committed May 27, 2016
  7. @maclover7

    Add configuration for `WebSocket` and `logger`

    [Javan Makhmali, Jon Moss]
    maclover7 committed May 27, 2016
  8. @sgrif

    Respect options passed to `foreign_key` when reverting `add_reference`

    The code incorrectly assumes that the option was written as
    `foreign_key: true`, but that is not always the case. This now mirrors
    the behavior of reverting `add_foreign_key`. The code was changed to use
    kwargs while I was touching it, as well.
    
    This could really use a refactoring to go through the same code paths as
    `add_refernce` in the future, so we don't duplicate default values.
    
    Fixes #25169
    sgrif committed May 31, 2016
  9. @jeremy

    Merge pull request #25216 from javan/actioncable/tune-sauce-labs-tests

    Action Cable: Tune Sauce Labs tests
    jeremy committed May 31, 2016
  10. @sgrif

    Merge pull request #25213 from kamipo/do_not_include_default_column_l…

    …imit
    
    Do not include default column limit in schema.rb
    sgrif committed May 31, 2016
  11. @sgrif

    `ActiveRecord::Base#hash` should differ between classes

    Prior to this change, we would get collisions if Active Record objects
    of different classes with the same ID were used as keys of the same
    hash. It bothers me slightly that we have to allocate inside of this
    method, but Ruby doesn't provide any way to hash multiple values without
    allocation
    sgrif committed May 31, 2016
  12. @maclover7 @sgrif

    More Action Pack `abstract_unit` cleanup (#25211)

    - Remove dead classes / dead code
    - Move class definitions to where they are used, don't define in a
      shared space
    maclover7 committed with sgrif May 31, 2016
  13. @javan

    Lock Faye version to avoid bug with its Promise polyfill, use mainlin…

    …e blade-sauce_labs_plugin gem
    javan committed May 31, 2016
  14. @javan

    Test single latest browser version

    Cuts down the number of concurrent Sauce Labs VMs we need to spin up. Can add specific versions back in to target regressions if need be.
    javan committed May 31, 2016
  15. @maclover7

    Merge pull request #25207 from rajatbansal93/fix-typos

    Fix Typo and Grammar [ci skip]
    maclover7 committed May 31, 2016
  16. @kamipo

    Do not include default column limit in schema.rb

    Follow up of #20815.
    
    ```ruby
    class CreatePeople < ActiveRecord::Migration[5.0]
      def change
        create_table :people do |t|
          t.integer :int
          t.bigint :bint
          t.text :txt
          t.binary :bin
        end
      end
    end
    ```
    
    Result.
    
    In postgresql and sqlite3 adapters:
    
    ```ruby
    ActiveRecord::Schema.define(version: 20160531141018) do
    
      create_table "people", force: :cascade do |t|
        t.integer "int"
        t.bigint  "bint"
        t.text    "txt"
        t.binary  "bin"
      end
    
    end
    ```
    
    In mysql2 adapter:
    
    ```ruby
    ActiveRecord::Schema.define(version: 20160531141018) do
    
      create_table "people", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4" do |t|
        t.integer "int"
        t.bigint  "bint"
        t.text    "txt",  limit: 65535
        t.binary  "bin",  limit: 65535
      end
    
    end
    ```
    
    After this patch:
    
    ```ruby
    ActiveRecord::Schema.define(version: 20160531141018) do
    
      create_table "people", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4" do |t|
        t.integer "int"
        t.bigint  "bint"
        t.text    "txt"
        t.binary  "bin"
      end
    
    end
    ```
    kamipo committed May 31, 2016
  17. @sgrif

    Ensure hashes can be passed to attributes using `composed_of`

    This behavior was broken by 36e9be8. When the value is assigned
    directly, either through mass assignment or directly assigning a hash,
    the hash gets passed through to this writer method directly. While this
    is intended to handle certain cases, when an explicit converter has been
    provided, we should continue to use that instead. The positioning of the
    added guard caused the new behavior to override that case.
    
    Fixes #25210
    sgrif committed May 31, 2016
  18. @dhh
  19. @rajatbansal93

    fix grammar

    rajatbansal93 committed May 31, 2016
  20. @rafaelfranca

    Merge pull request #25206 from maclover7/jm-ap-tests

    Move `Workshop` class definition
    rafaelfranca committed May 31, 2016
  21. @maclover7

    Move `Workshop` class definition

    We should define it only where we need it, not in the global abstract
    unit 😬
    maclover7 committed May 30, 2016
Commits on May 30, 2016
  1. @sgrif

    Merge pull request #25179 from kamipo/reuse_result_of_associated_table

    Reuse a result of `table.associated_table(column)` in `AssociationQueryHandler.value_for`
    sgrif committed May 30, 2016
  2. @sgrif

    Exists shouldn't error when used with `includes`

    Currently `exists?` does some hackery where it assumes that we can join
    onto anything that we passed to `eager_load` or `includes`, which
    doesn't work if we are joining onto a polymorphic association.
    
    Actually figuring out if we want to include something would require
    knowledge deep within the join dependency module, which is hard to pull
    up. The simplest solution is just to pass a flag down that says we're
    not actually going to try to eager load any of the data. It's not the
    solution I'd like, but that code really needs to be untangled before we
    can do much with it.
    
    This is another attempt at 6d5b1fd which should address the concerns
    that led to reverting it in 4ecabed.
    sgrif committed May 30, 2016
  3. @kaspth

    Merge pull request #25194 from vipulnsward/use-cipher

    use OpenSSL::Cipher instead of deprecated OpenSSL::Cipher::Cipher
    kaspth committed May 30, 2016
  4. @sgrif

    Ensure that instances of `ActiveModel::Errors` can be marshalled

    We now use default procs inside of the errors object, which gets
    included by default when marshaling anything that includes
    `ActiveModel::Validations`. This means that Active Record objects cannot
    be marshalled. We strip and apply the default proc ourselves. This will
    ensure the objects are YAML serializable as well, since YAML falls back
    to marshal implementations now. This is less important, however, as the
    errors aren't included when dumping Active Record objects.
    
    This commit does not include a changelog entry, as 5.0 is still in RC
    status at the time of writing, and 5.0.0 will not release with the bug
    this fixes.
    
    Fixes #25165
    sgrif committed May 30, 2016
  5. @kaspth

    Merge pull request #25175 from kamipo/fix_migration_class_names_in_tests

    Fix migration class names in tests
    kaspth committed May 30, 2016
  6. @robin850

    Tiny document fixes [ci skip]

    Add a missing capital letter and avoid using absolute links to the
    API because they may refer to out-dated documentation on the Edge
    site.
    robin850 committed May 30, 2016
  7. @vipulnsward
Commits on May 29, 2016
  1. @arthurnn

    Merge pull request #22240 from resource11/resource11-patch-1

    Requesting documentation update
    arthurnn committed May 29, 2016
  2. @arthurnn

    Merge pull request #24965 from arthurnn/arthurnn/conn_api

    Change some establish_connection logic
    arthurnn committed May 29, 2016
  3. @dhh

    Merge pull request #25184 from prathamesh-sonpatki/move-up-framework-…

    …initializers
    
    Move new default initializers into separate directory
    dhh committed May 29, 2016
  4. @prathamesh-sonpatki

    Merge pull request #25190 from willnet/fix-action-cable-guides

    [ci skip]Fix wrong require path raising LoadError
    prathamesh-sonpatki committed May 29, 2016
  5. @willnet
  6. @prathamesh-sonpatki

    Merge pull request #25189 from xtian/patch-1

    ActionController::Parameters: Fix #dig doc code
    prathamesh-sonpatki committed May 29, 2016
  7. @xtian

    ActionController::Parameters: Fix #dig doc code

    This example code wasn't getting wrapped in a `<code>` tag due to incorrect indentation.
    xtian committed May 29, 2016
Something went wrong with that request. Please try again.