aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | | Ensure calculation methods execute no queriesRyuta Kamizono2017-07-151-60/+14
| | | | | |
| * | | | | Extract `NullRelationTest` from `RelationTest`Ryuta Kamizono2017-07-152-118/+128
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `test/cases/relations_test.rb` file has too much lines (2000 over). So I extracted `NullRelationTest` to the dedicated file.
* | | | | | Merge pull request #29799 from ↵Sean Griffin2017-07-171-8/+0
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | kamipo/remove_outdated_test_scoped_responds_to_delegated_methods Remove outdated `test_scoped_responds_to_delegated_methods`
| * | | | | | Remove outdated `test_scoped_responds_to_delegated_methods`Ryuta Kamizono2017-07-151-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This test was added at 74ed123 to ensure `respond_to?` delegate methods to `Array` and `arel_table`. But array method delegation was removed at 9d79334 in favor of including `Enumerable`. And now `Relation` has `insert`, `update`, and `delete` methods (63480d2, 8d31c9f, d5f9173). So this delegation test is already outdated.
* | | | | | | Merge pull request #25564 from brewski/serializable_hash_fixSean Griffin2017-07-171-4/+2
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Correctly handle frozen options for ActiveRecord::Serialization#seria…
| * | | | | | | Correctly handle frozen options for ↵Brian Abreu2016-12-092-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ActiveRecord::Serialization#serializable_hash.
* | | | | | | | Merge pull request #29757 from lugray/hash_with_indifferent_access_defaultSean Griffin2017-07-172-10/+56
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Fix HashWithIndifferentAccess#default when include?(nil)
| * | | | | | | | Fix HashWithIndifferentAccess#default when include?(nil)Lisa Ugray2017-07-172-10/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The implementation of HashWithIndifferentAccess#default didn't distinguish `default` from `default(nil)`, which caused an incorrect result for `default` if `nil` was used as a key. Define HashWithIndifferentAccess#dig so that hackery that behaves differently from Hash#default can be removed from HashWithIndifferentAccess#default.
* | | | | | | | | Merge pull request #29796 from kamipo/fix_where_with_custom_tableSean Griffin2017-07-172-5/+5
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | Fix `where` with a custom table
| * | | | | | | | | Fix `where` with a custom tableRyuta Kamizono2017-07-182-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Without this fix, SELECT clause doesn't use a custom table alias name: ``` % ARCONN=sqlite3 be ruby -w -Itest test/cases/relations_test.rb -n test_using_a_custom_table_affects_the_wheres Using sqlite3 Run options: -n test_using_a_custom_table_affects_the_wheres --seed 31818 E Error: RelationTest#test_using_a_custom_table_affects_the_wheres: ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: posts: SELECT "posts".* FROM "posts" "omg_posts" WHERE "omg_posts"."title" = ? LIMIT ? ```
* | | | | | | | | | Merge pull request #29816 from ↵Sean Griffin2017-07-172-1/+12
|\ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | kamipo/persistence_delete_should_not_be_affected_by_scoping `Persistence#delete` should not be affected by scoping
| * | | | | | | | | `Persistence#delete` should not be affected by scopingRyuta Kamizono2017-07-182-1/+12
|/ / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `self.class.delete` is delegated to `all` and `all` is affected by scoping. It should use `unscoped` to not be affected by that.
* | | | | | | | | Merge pull request #29313 from Shopify/bootsnapRafael França2017-07-175-0/+15
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | Add bootsnap to default Gemfile
| * | | | | | | | | Add bootsnap to default Gemfile:Burke Libbey2017-07-175-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bootsnap precomputes load path resolution and caches ruby ISeq and YAML parsing/compilation, reducing application boot time by approximately 50% on supported configurations.
* | | | | | | | | | Merge pull request #29788 from kamipo/remove_unused_mutex_mRafael França2017-07-174-11/+7
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | Remove unused `Mutex_m` in Active Model
| * | | | | | | | | | Make `generated_attribute_methods` to privateRyuta Kamizono2017-07-143-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Because `generated_attribute_methods` is an internal API.
| * | | | | | | | | | Remove unused `Mutex_m` in Active ModelRyuta Kamizono2017-07-142-6/+2
| | |_|_|/ / / / / / | |/| | | | | | | |
* | | | | | | | | | Merge pull request #29793 from arthurnn/arthurnn/param_encoding_error_msgRafael França2017-07-172-2/+3
|\ \ \ \ \ \ \ \ \ \ | |_|/ / / / / / / / |/| | | | | | | | | Scrub the invalid paramter value before using it in the error
| * | | | | | | | | Scrub the invalid paramter value before using it in the errorArthur Neves2017-07-172-2/+3
| |/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | You should be able to safely use the String error message. So when finding the paramter has an invalid encoding we need to remove the invalid bytes before using it in the error. Otherwise the caller might get another Encoding error if they use the message.
* | | | | | | | | Merge pull request #27662 from nhorton/patch-1Sean Griffin2017-07-171-1/+1
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | Fixing "Adding Member Routes" documentation
| * | | | | | | | | Fixing "Adding Member Routes" documentationNoah Horton2017-01-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously said the helpers were preview_photo_url and preview_photo_path, i.e. action_resource, when in fact they are resource_action. i.e. photo_preview_path. Fixed.
* | | | | | | | | | Allow multiparameter assigned attributes to be used with `text_field`Sean Griffin2017-07-175-1/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Between 4.2 and 5.0 the behavior of how multiparameter attributes interact with `_before_type_cast` changed. In 4.2 it returns the post-type-cast value. After 5.0, it returns the hash that gets sent to the type. This behavior is correct, but will cause an issue if you then tried to render that value in an input like `text_field` or `hidden_field`. In this case, we want those fields to use the post-type-cast form, instead of the `_before_type_cast` (the main reason it uses `_before_type_cast` at all is to avoid losing data when casting a non-numeric string to integer). I've opted to modify `came_from_user?` rather than introduce a new method for this as I want to avoid complicating that contract further, and technically the multiparameter hash didn't come from assignment, it was constructed internally by AR. Close #27888.
* | | | | | | | | | Merge pull request #29758 from glaucocustodio/patch-1 [ci skip]Sean Griffin2017-07-172-2/+11
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | Add documentation for class_attribute default option
| * | | | | | | | | | Add documentation for class_attribute optionsGlauco Custódio2017-07-172-2/+11
| | | | | | | | | | |
* | | | | | | | | | | Merge pull request #29825 from kamipo/remove_useless_arel_engineSean Griffin2017-07-174-19/+3
|\ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Remove useless `arel_engine`
| * | | | | | | | | | | Remove useless `arel_engine`Ryuta Kamizono2017-07-174-19/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `arel_engine` is only used in `raise_record_not_found_exception!` to use `engine.connection` (and `connection.visitor`) in `arel.where_sql`. https://github.com/rails/arel/blob/v8.0.0/lib/arel/select_manager.rb#L183 But `klass.connection` will work as expected even if not using `arel_engine` (described by `test_connection`). So `arel_engine` is no longer needed.
* | | | | | | | | | | | Post.joins(:users) should not be affected by `User.current_scope`Sean Griffin2017-07-173-4/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change was introduced by #18109. The intent of that change was to specifically apply `unscoped`, not to allow all changes to `current_scope` to affect the join. The idea of allowing `current_scope` to affect joins is interesting and potentially more consistent, but has sever problems associated with it. The fact that we're specifically stripping out joins indicates one such problem (and potentially leads to invalid queries). Ultimately it's difficult to reason about what `Posts.joins(:users)` actually means if it's affected by `User.current_scope`, and it's difficult to specifically control what does or doesn't get added. If we were starting from scratch, I don't think I'd have `joins` be affected by `default_scope` either, but that's too big of a breaking change to make at this point. With this change, we no longer apply `current_scope` when bringing in joins, with the singular exception of the motivating use case which introduced this bug, which is providing a way to *opt-out* of having the default scope apply to joins. Fixes #29338.
* | | | | | | | | | | | Merge pull request #28077 from Erol/make-reverse-merge-bang-order-consistentSean Griffin2017-07-174-5/+11
|\ \ \ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / / / |/| | | | | | | | | | | Make the order of Hash#reverse_merge! consistent with HashWithIndifferentAccess
| * | | | | | | | | | | Merge branch 'master' into make-reverse-merge-bang-order-consistentSean Griffin2017-07-171531-11616/+18098
| |\ \ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / / / |/| | | | | | | | | | |
* | | | | | | | | | | | Merge pull request #29810 from kamipo/add_first_parameter_indentationMatthew Draper2017-07-176-30/+34
|\ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | Enable `Layout/FirstParameterIndentation` cop
| * | | | | | | | | | | | Enable `Layout/FirstParameterIndentation` copRyuta Kamizono2017-07-176-30/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have some indentation cops. But now there is a little inconsistent params indentations. Enable `Layout/FirstParameterIndentation` cop to prevent newly inconsistent indentation added and auto-correct to existing violations.
* | | | | | | | | | | | | Merge pull request #29821 from y-yagi/set_rails_env_before_load_application_fileKasper Timm Hansen2017-07-172-4/+36
|\ \ \ \ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / / / / |/| | | | | | | | | | | | Set `RAILS_ENV` before load application file
| * | | | | | | | | | | | Set `RAILS_ENV` before load application fileyuuji.yaginuma2017-07-172-4/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since #29725, load application file when `dbconsole` command is executed. However, if do not set `RAILS_ENV` before reading the application file, can not connect to the env specified in option, so added the setting of `RAILS_ENV`.
* | | | | | | | | | | | | Merge pull request #29819 from kirs/frozen-activemodelMatthew Draper2017-07-17117-0/+232
|\ \ \ \ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / / / / |/| | | | | | | | | | | | Use frozen string literal in activemodel/
| * | | | | | | | | | | | Use frozen string literal in activemodel/Kir Shatrov2017-07-16117-0/+232
| | | | | | | | | | | | |
* | | | | | | | | | | | | Merge pull request #29812 from kamipo/remove_unused_requiresKasper Timm Hansen2017-07-162-5/+0
|\ \ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove unused requires
| * | | | | | | | | | | | | Remove unused requiresRyuta Kamizono2017-07-162-5/+0
| | | | | | | | | | | | | |
* | | | | | | | | | | | | | Merge pull request #29782 from y-yagi/follow_up_29699Kasper Timm Hansen2017-07-165-17/+50
|\ \ \ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Set `represent_boolean_as_integer` via `configuration`
| * | | | | | | | | | | | | | add helper method for explicit lazy loadyuuji.yaginuma2017-07-161-13/+18
| | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | Set `represent_boolean_as_integer` via `configuration`yuuji.yaginuma2017-07-165-5/+33
| | | | | | | | | | | | | | |
* | | | | | | | | | | | | | | Merge pull request #29813 from kamipo/fix_create_with_multiparameter_attributesKasper Timm Hansen2017-07-162-16/+34
|\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix `create_with` with multiparameter attributes
| * | | | | | | | | | | | | | | Fix `create_with` with multiparameter attributesRyuta Kamizono2017-07-162-16/+34
| | |/ / / / / / / / / / / / / | |/| | | | | | | | | | | | |
* | | | | | | | | | | | | | | Merge pull request #29814 from kamipo/dont_cache_scope_for_createKasper Timm Hansen2017-07-164-14/+6
|\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Don't cache `scope_for_create`
| * | | | | | | | | | | | | | | Don't cache `scope_for_create`Ryuta Kamizono2017-07-164-14/+6
| |/ / / / / / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I investigated where `scope_for_create` is reused in tests with the following code: ```diff --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -590,6 +590,10 @@ def where_values_hash(relation_table_name = table_name) end def scope_for_create + if defined?(@scope_for_create) && @scope_for_create + puts caller + puts "defined" + end @scope_for_create ||= where_values_hash.merge!(create_with_value.stringify_keys) end ``` It was hit only `test_scope_for_create_is_cached`. This means that `scope_for_create` will not be reused in normal use cases. So we can remove caching `scope_for_create` to respect changing `where_clause` and `create_with_value`.
* | | | | | | | | | | | | | | Merge pull request #29358 from robin850/dbconsole-connectionKasper Timm Hansen2017-07-166-19/+128
|\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow to pass a connection to the `dbconsole` command
| * | | | | | | | | | | | | | | Properly expand the environment's nameRobin Dupret2017-07-166-7/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Running the `console` and `dbconsole` commands with a regular argument as the environment's name automatically expand it to match an existing environment (e.g. dev for development). This feature wasn't available using the `--environment` (a.k.a `-e`) option.
| * | | | | | | | | | | | | | | Deprecate environment as an argument for dbconsole and consoleRobin Dupret2017-07-164-12/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | People should rather rely on the `-e` or `--environment` options to specify in which environment they want to work. This will allow us to specify the connection to pick as a regular argument in the future.
| * | | | | | | | | | | | | | | Allow to pass a connection to the `dbconsole` commandRobin Dupret2017-07-163-2/+64
| |/ / / / / / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since 0a4f6009, it's possible to specify a 3-level database configuration to gather connections by environment. The `dbconsole` command will try to look for a database configuration which points to the current environment but with such flavour, the environment key is flushed out so let's add the ability to specify the connection and pick `primary` by default to be consistent with Active Record.
* | | / / / / / / / / / / / / Fix root not being defined on Travis.Kasper Timm Hansen2017-07-161-1/+6
| |_|/ / / / / / / / / / / / |/| | | | | | | | | | | | |
* | | | | | | | | | | | | | explain why require_relative is not used here [ci skip]Xavier Noria2017-07-161-0/+2
| | | | | | | | | | | | | |