aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | | | | Make association queries to preparable: Step 1Ryuta Kamizono2016-08-111-11/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently association queries cannot be preparable. ```ruby Post.where(author_id: 1).to_a # => SELECT "posts".* FROM "posts" WHERE "posts"."author_id" = ? [["author_id", 1]] Post.where(author: 1).to_a # => SELECT "posts".* FROM "posts" WHERE "posts"."author_id" = 1 ``` To make association queries to preparable, it should be handled in `create_binds_for_hash`. This change is a first step for it.
* | | | | | | | Merge pull request #26074 from kamipo/where_by_attribute_with_array_or_rangeRafael França2016-08-161-7/+11
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | `where` by `array|range` attribute with array or range value
| * | | | | | | | `where` by `array|range` attribute with array or range valueRyuta Kamizono2016-08-111-7/+11
| |/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently predicate builder cannot build a predicate for `array|range` attribute. This commit fixes the issue. Related #25671.
* | | | | | | | Merge pull request #26097 from Dagnan/fix_recordnotfound_args_rebasedRafael França2016-08-161-4/+6
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | When calling association.find RecordNotFound is now raised with the s…
| * | | | | | | | When calling association.find RecordNotFound is now raised with the same ↵Michel Pigassou2016-08-131-4/+6
| |/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | argument as when we do it in Record.find (primary_key, id and model).
* | | | | | | | Merge pull request #26151 from kamipo/avoid_to_allow_unused_splat_argsRafael França2016-08-162-5/+3
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Avoid to allow unused splat args for `t.timestamps` in `create_table`
| * | | | | | | | Avoid to allow unused splat args for `t.timestamps` in `create_table`Ryuta Kamizono2016-08-142-5/+3
| |/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Unfortunately `t.timestamps` in `create_table` allows unused splat args. But the same one in `change_table` does not allow them. This commit fixes the inconsistent behavior.
* | | | | | | | Merge pull request #26155 from kamipo/refactor_quoted_columns_for_indexRafael Mendonça França2016-08-162-29/+25
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | Refactor `quoted_columns_for_index` by extracted `add_options_for_index_columns`
| * | | | | | | | Refactor `quoted_columns_for_index` by extracted `add_options_for_index_columns`Ryuta Kamizono2016-08-142-29/+25
| |/ / / / / / /
* | | | | | | | Merge pull request #26162 from kamipo/take_respects_dirty_targetRafael França2016-08-162-15/+11
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | `CollectionProxy#take` should respect dirty target
| * | | | | | | | `CollectionProxy#take` should respect dirty targetRyuta Kamizono2016-08-142-15/+11
| |/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `#first`, `#second`, ..., `#last` methods respects dirty target. But `#take` doesn't respect it. This commit fixes the inconsistent behavior.
* | | | | | | | Merge pull request #26019 from agrobbin/schema-load-unique-column-indicesRafael França2016-08-162-3/+3
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Support multiple indexes on the same column when loading the schema
| * | | | | | | | support multiple indexes on the same column when loading the schemaAlex Robbin2016-08-022-3/+3
| | | | | | | | |
* | | | | | | | | Add three new rubocop rulesRafael Mendonça França2016-08-1619-44/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Style/SpaceBeforeBlockBraces Style/SpaceInsideBlockBraces Style/SpaceInsideHashLiteralBraces Fix all violations in the repository.
* | | | | | | | | Eager autoload ActiveRecord::TableMetadataclaudiob2016-08-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes a bug that can occur when ActiveJob tries to access ActiveRecord. Specifically, I had an Active Job process fail on Sidekiq with this error: ``` ActiveJob::DeserializationError: Error while trying to deserialize arguments: uninitialized constant ActiveRecord::Core::ClassMethods::TableMetadata Did you mean? ActiveRecord::TableMetadata ``` raised by these lines of code: ``` [GEM_ROOT]/gems/activerecord-5.0.0.1/lib/active_record/core.rb:300 :in `table_metadata` 298 299 def table_metadata # :nodoc: 300 TableMetadata.new(self, arel_table) 301 end 302 end [GEM_ROOT]/gems/activerecord-5.0.0.1/lib/active_record/core.rb:273 :in `predicate_builder` [GEM_ROOT]/gems/activerecord-5.0.0.1/lib/active_record/core.rb:290 :in `relation` ``` The problem seems to be that, inside ActiveRecord::Core, the `TableMetadata` class has not been loaded and, therefore, Rails tries to access the constant `ActiveRecord::Core::ClassMethods::TableMetadata` which does not exist. Eager loading `ActiveRecord::TableMetadata` should fix the issue. @rafaelfranca -- see our Campfire discussion
* | | | | | | | | Merge pull request #26167 from kamipo/remove_find_nth_with_limit_and_offsetKasper Timm Hansen2016-08-151-34/+13
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | Remove `find_nth_with_limit_and_offset` private method
| * | | | | | | | | Remove `find_nth_with_limit_and_offset` private methodRyuta Kamizono2016-08-151-34/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `find_nth` is protected method, therefore `offset` has not been passed anywhere. `find_nth_with_limit_and_offset` is unnecessary anymore because `offset` has not been passed.
| * | | | | | | | | Fix `ActiveRecord::FixtureSet` docs [ci skip]Ryuta Kamizono2016-08-151-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `ActiveSupport::TestCase` was replaced `ActiveRecord::TestCase` in #26150. But this docs is for rails apps per se, it should be `ActiveSupport::TestCase`. See https://github.com/rails/rails/pull/26150#discussion_r74710989.
| * | | | | | | | | Merge pull request #26150 from kamipo/consolidate_ar_test_case_and_as_test_caseSean Griffin2016-08-141-4/+4
| |\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | Consolidate `ActiveRecord::TestCase` and `ActiveSupport::TestCase` in AR test cases
| | * | | | | | | | | Consolidate `ActiveRecord::TestCase` and `ActiveSupport::TestCase` in AR ↵Ryuta Kamizono2016-08-141-4/+4
| | | |/ / / / / / / | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | test cases
* | / | | | | | | | Remove odd ivar from ActiveRecord::LogSubscriberEugene Kenny2016-08-151-5/+0
|/ / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was used to switch the output colour between log lines, but now the output colour is based on the type of statement being logged instead.
* | | | | | | | | Pass along original attribute to save later recursionAaron Patterson2016-08-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes #26122
* | | | | | | | | Merge pull request #26012 from grosser/grosser/missingSean Griffin2016-08-141-1/+1
|\ \ \ \ \ \ \ \ \ | |/ / / / / / / / |/| | | | | | | | add more array methods to straight delegation to speed up calling them
| * | | | | | | | add index to array methods so we can call it on relationsMichael Grosser2016-08-121-1/+1
| | |_|/ / / / / | |/| | | | | |
* | | | | | | | Fix a NoMethodError schema_statements.rbGenadi Samokovarov2016-08-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you call `remove_index` with wrong options, say a type, like I did, you get: ``` == 20160810072541 RemoveUniqueIndexOnGoals: migrating ========================= -- remove_index(:goal, {:coulmn=>:kid_id, :unique=>true}) rails aborted! StandardError: An error has occurred, this and all later migrations canceled: undefined method `ArgumentError' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter:0x007fb7dec91b28> ``` What happened is that I mistyped column (coulmn) and got a `NoMethodError`, because of a missing comma during the raise. This made Ruby think we're calling the method `ArgumentError`.
* | | | | | | | Fix broken alignments caused by auto-correct commit 411ccbdRyuta Kamizono2016-08-101-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hash syntax auto-correcting breaks alignments. 411ccbdab2608c62aabdb320d52cb02d446bb39c
* | | | | | | | revises more Lint/EndAlignment offensesXavier Noria2016-08-081-3/+3
| | | | | | | |
* | | | | | | | code gardening: removes redundant selfsXavier Noria2016-08-0813-17/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A few have been left for aesthetic reasons, but have made a pass and removed most of them. Note that if the method `foo` returns an array, `foo << 1` is a regular push, nothing to do with assignments, so no self required.
* | | | | | | | revises most Lint/EndAlignment offensesXavier Noria2016-08-077-35/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some case expressions remain, need to think about those ones.
* | | | | | | | Merge pull request #26076 from yui-knk/privatize_expandKasper Timm Hansen2016-08-071-10/+10
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | `ActiveRecord::PredicateBuilder#expand` to be private
| * | | | | | | | `ActiveRecord::PredicateBuilder#expand` to be privateyui-knk2016-08-071-10/+10
| | |_|_|_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | This method is not touched from outside.
* / | | | | | | Add `Style/EmptyLines` in `.rubocop.yml` and remove extra empty linesRyuta Kamizono2016-08-076-6/+0
|/ / / / / / /
* | | | | | | Merge pull request #26073 from kamipo/revert_passing_splat_binds_for_arel_nodeSean Griffin2016-08-064-13/+11
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Revert passing arel node with splat binds for `where`
| * | | | | | | Revert passing arel node with splat binds for `where`Ryuta Kamizono2016-08-062-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Passing arel node with splat binds for `where` was introduced at #22877 for uniqueness validator supports prepared statement. But I'd not like to introduce the following usage: ```ruby Foo.where(arel, *binds) ``` I'd like to revert this internal usage.
| * | | | | | | Don't passing a nil value to `case_sensitive_comparison`Ryuta Kamizono2016-08-063-13/+9
| | |_|_|_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | A `value` is only used for checking `value.nil?`. It is unnecessary if immediately return when `value.nil?`.
* | | | | | | applies remaining conventions across the projectXavier Noria2016-08-0633-148/+116
| | | | | | |
* | | | | | | normalizes indentation and whitespace across the projectXavier Noria2016-08-06114-4610/+4609
| | | | | | |
* | | | | | | remove redundant curlies from hash argumentsXavier Noria2016-08-061-6/+4
| | | | | | |
* | | | | | | modernizes hash syntax in activerecordXavier Noria2016-08-0628-86/+86
| | | | | | |
* | | | | | | applies new string literal convention in activerecord/libXavier Noria2016-08-06118-840/+840
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current code base is not uniform. After some discussion, we have chosen to go with double quotes by default.
* | | | | | | Merge pull request #25998 from kamipo/enum_with_alias_attributeEileen M. Uchitelle2016-08-061-5/+6
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | Fix `enum` with `alias_attribute`
| * | | | | | Fix `enum` with `alias_attribute`Ryuta Kamizono2016-07-311-5/+6
| |/ / / / / | | | | | | | | | | | | | | | | | | Fixes #25892.
* | | | | | Merge pull request #25665 from kamipo/remove_unused_table_argEileen M. Uchitelle2016-08-051-5/+5
|\ \ \ \ \ \ | | | | | | | | | | | | | | Remove unused `table` arg for `UniquenessValidator#scope_relation`
| * | | | | | Remove unused `table` arg for `UniquenessValidator#scope_relation`Ryuta Kamizono2016-07-181-5/+5
| | | | | | |
* | | | | | | Merge pull request #26051 from kamipo/make_name_and_binds_to_optional_argsEileen M. Uchitelle2016-08-053-6/+6
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Make `name` and `binds` to optional args for `exec_{insert,update,delete}`
| * | | | | | | Make `name` and `binds` to optional args for `exec_{insert,update,delete}`Ryuta Kamizono2016-08-043-6/+6
| | |_|_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `insert`, `update`, `delete`, and `exec_query` have a default value against `name` and `binds`. But `exec_insert`, `exec_update`, and `exec_delete` not have. It is an inconvenience and inconsistent.
* | | | | | | Don't assume all hashes are from multiparameter assignment in `composed_of`Sean Griffin2016-08-051-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So this bug is kinda funky. The code path is basically "if we weren't passed an instance of the class we compose to, and we have a converter, call that". Ignoring the hash case for a moment, everything after that was roughly intended to be the "else" clause, meaning that we are expected to have an instance of the class we compose to. Really, we should be blowing up in that case, as we can give a much better error message than what they user will likely get (e.g. `NameError: No method first for String` or something). Still, Ruby is duck typed, so if the object you're assigning responds to the same methods as the type you compose to, knock yourself out. The hash case was added in 36e9be8 to remove a bunch of special cased code from multiparameter assignment. I wrongly assumed that the only time we'd get a hash there is in that case. Multiparameter assignment will construct a very specific hash though, where the keys are integers, and we will have a set of keys covering `1..part.size` exactly. I'm pretty sure this could actually be passed around as an array, but that's a different story. Really I should convert this to something like `class MultiParameterAssignment < Hash; end`, which I might do soon. However for a change that I'm willing to backport to 4-2-stable, this is what I want to go with for the time being. Fixes #25978
* | | | | | | Leave internal pgsql name intact as const referenceDavid Heinemeier Hansson2016-08-041-2/+2
| | | | | | |
* | | | | | | The problem isn't the detection but the deadlock itselfDavid Heinemeier Hansson2016-08-043-6/+6
|/ / / / / /
* | | | | | Merge pull request #25107 from Erol/introduce-new-ar-transaction-error-classesRafael Mendonça França2016-08-033-4/+17
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduce new ActiveRecord transaction error classes Closes #26018