| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | | | |
|
|\ \ \ \ \
| |_|_|/ /
|/| | | | |
Document option forwarding in ActiveRecord::Base.attribute
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This has been supported for a while but we didn't have documentation
for it.
|
| | | | | |
|
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
I found `:unique_by` with `:columns` and `:where` inside it tough to
grasp. The documentation only mentioned indexes and partial indexes.
So why duplicate a model's indexes in an insert_all/upsert_all call
when we can just look it up?
This has the added benefit of raising if no index is found, such that
people can't insert thousands of records without relying on an index
of some form.
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Thor automatically adds `-` if aliases do not start with `-`.
https://github.com/erikhuda/thor/blob/0879c1773d188902d54f95174f33961ac33111f8/lib/thor/parser/options.rb#L53
But Thor follows a convention of one-dash-one-letter options.
So, even if `-` is added to `db`, it does not work.
https://github.com/erikhuda/thor/blob/0879c1773d188902d54f95174f33961ac33111f8/lib/thor/parser/options.rb#L4
Follow up #34021.
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
shioyama/generated_attribute_methods_namespaced_constant
Give GeneratedAttributeMethods module a name
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Currently GeneratedAttributeMethods is a module builder class, an
instance of which is included in every AR class. OTOH,
GeneratedAssociatedMethods is assigned to a constant under the model
namespace. This is inconsistent and looks strange in the list of
ancestors.
There is no particular reason *not* to assign a constant for this (very
important) module under the model namespace, so that's what this commit
does.
Previous to this change, ancestors for an AR class looked like this:
```
=> [User (call 'User.connection' to establish a connection),
User::GeneratedAssociationMethods,
#<ActiveRecord::AttributeMethods::GeneratedAttributeMethods:0x000055ace0f05b08>,
ApplicationRecord(abstract),
ApplicationRecord::GeneratedAssociationMethods,
#<ActiveRecord::AttributeMethods::GeneratedAttributeMethods:0x000055ace093c460>,
ActiveRecord::Base,
...
```
With this change, they look like this:
```
=> [User (call 'User.connection' to establish a connection),
User::GeneratedAssociationMethods,
User::GeneratedAttributeMethods,
ApplicationRecord(abstract),
ApplicationRecord::GeneratedAssociationMethods,
ApplicationRecord::GeneratedAttributeMethods,
ActiveRecord::Base,
...
```
The previously named `GeneratedAttributeMethods` module builder class is
renamed `GeneratedAttributeMethodsBuilder` to emphasize that this is not
a module but a class.
|
|\ \ \ \
| | | | |
| | | | | |
Remove roflscaling
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
roflscaling (using frozen string constants instead of literal
strings) was added in 2012, before frozen string literals were
added in Ruby 2.3. Now that Rails no longer supports Ruby <2.3,
and all of these files use frozen string literals, there is
no reason to keep the roflscaling.
This does not delete or deprecate the related constants. Such
a change can be made in a later commit.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Extract `sanitize_as_sql_comment` from SQL visitor into connection
|
| |/ / / /
| | | | |
| | | | |
| | | | | |
Probably that is useful for any other feature as well.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
* update_at/on note for ActiveRecord::Relation.update_all
* Verbatim updated_at/on
|
|\ \ \ \ \
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
eileencodes/fix-database-configuration-when-not-actually-a-three-tier
Fix database configuration when adding another config level
|
| |/ / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This is kind of hard to explain but if you have a database config with
another level like this:
```
development:
primary:
database: "my db"
variables:
statement_timeout: 1000
```
the database configurations code would chooke on the `variables` level
because it didn't know what to do with it.
We'd see the following error:
```
lib/active_record/database_configurations.rb:72:in
`block in find_db_config': undefined method `env_name' for [nil]:Array
(NoMethodError)
```
The problem here is that Rails does correctly identify this as not a
real configuration but returns `[nil]` along with the others. We need to
make sure to flatten the array and remove all the `nil`'s before
returning the `configurations` objects.
Fixes #35646
|
| | | | |
| | | | |
| | | | |
| | | | | |
This also prevents insert_all from leaking its attributes checks.
|
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | | |
`values_list` is quite long and does far too many things. This also
eagerly extract the keys in initialize instead of having to worry about
calling them multiple times.
|
| | | |
| | | |
| | | |
| | | | |
Internal usage for the method as public has removed at #29623.
|
|\ \ \ \
| | | | |
| | | | | |
Get rid of `Arel::Nodes::Values`
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
That is completely covered by `Arel::Nodes::ValuesList`.
Related https://github.com/rails/arel/pull/484.
|
|/ / / / |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* Remove redundant `table_names.empty?`
* Early return in `truncate_tables` since it is already deeply nested
* Move `truncate_tables` out from between `exec_delete` and `exec_update`
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
https://buildkite.com/rails/rails/builds/59632#fe3d2551-569a-46c8-94f3-7abe835d4d7a/122-153
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Before:
```
(16.4ms) TRUNCATE TABLE `author_addresses`
(20.5ms) TRUNCATE TABLE `authors`
(19.4ms) TRUNCATE TABLE `posts`
```
After:
```
Truncate Tables (19.5ms) TRUNCATE TABLE `author_addresses`;
TRUNCATE TABLE `authors`;
TRUNCATE TABLE `posts`
```
|
| | | |
| | | |
| | | |
| | | | |
https://buildkite.com/rails/rails/builds/59622#924dff9d-85c2-4946-b264-a7e6ce01432c/122-130
|
| | | |
| | | |
| | | |
| | | | |
This is to easier make `truncate_tables` to bulk statements.
|
|\ \ \ \
| | | | |
| | | | | |
Support Optimizer Hints
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
We as Arm Treasure Data are using Optimizer Hints with a monkey patch
(https://gist.github.com/kamipo/4c8539f0ce4acf85075cf5a6b0d9712e),
especially in order to use `MAX_EXECUTION_TIME` (refer #31129).
Example:
```ruby
class Job < ApplicationRecord
default_scope { optimizer_hints("MAX_EXECUTION_TIME(50000) NO_INDEX_MERGE(jobs)") }
end
```
Optimizer Hints is supported not only for MySQL but also for most
databases (PostgreSQL on RDS, Oracle, SQL Server, etc), it is really
helpful to turn heavy queries for large scale applications.
|
|/ / / /
| | | |
| | | |
| | | | |
friends.
|
| | | |
| | | |
| | | |
| | | | |
This reverts commit 65f2eeaaf5774f0891fff700f4defb0b90a05789.
|
|\ \ \ \
| | | | |
| | | | |
| | | | | |
v6.0.0.beta3 release
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
* Update RAILS_VERSION
* Bundle
* rake update_versions
* rake changelog:header
|
| | | | |
| | | | |
| | | | |
| | | | | |
Follow up #35573
|
| |/ / /
|/| | |
| | | |
| | | |
| | | | |
This commit addresses the issue in
https://github.com/rails/rails/issues/35543 by making note of the
growing primary key issue with `create_or_find_by`.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Useful to not query for indexes when an application uses schema cache.
Ref https://github.com/rails/rails/pull/35546
|
|\ \ \ \ |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
YAML has been used to serialize the schema cache ever since 2016 with
Rails 5.1: 4c00c6ed
|
|/ / / /
| | | |
| | | |
| | | |
| | | | |
Not looking for other contributions like this, but I took the liberty
since I was already working on this.
|
| | | |
| | | |
| | | |
| | | | |
The `Row` class is no longer used since d956772b3c61d97940ebcccd7c83e2397ca0c36c.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Staled `@default_timezone` would cause an error on `reconnect!` after
`disconnect!`.
https://buildkite.com/rails/rails/builds/59495#23be8079-3a4f-4375-9991-0a6f874554f2
Steps to reproduce:
```
% ARCONN=postgresql bin/test test/cases/adapter_test.rb test/cases/base_test.rb -n "/(?:test_attributes_on_dummy_time|test_reconnect_after_a_disconnect)$/" --seed 15849
Using postgresql
Run options: -n "/(?:test_attributes_on_dummy_time|test_reconnect_after_a_disconnect)$/" --seed 15849
# Running:
.
E
Error:
ActiveRecord::AdapterTestWithoutTransaction#test_reconnect_after_a_disconnect:
NoMethodError: undefined method `add_coder' for #<PG::TypeMapAllStrings:0x00007f85ab9dd5b8>
/Users/kamipo/src/github.com/rails/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:866:in `update_typemap_for_default_timezone'
/Users/kamipo/src/github.com/rails/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:652:in `exec_no_cache'
/Users/kamipo/src/github.com/rails/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:636:in `execute_and_clear'
/Users/kamipo/src/github.com/rails/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:894:in `add_pg_decoders'
/Users/kamipo/src/github.com/rails/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:744:in `connect'
/Users/kamipo/src/github.com/rails/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:285:in `rescue in block in reconnect!'
/Users/kamipo/src/github.com/rails/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:281:in `block in reconnect!'
/Users/kamipo/.rbenv/versions/2.6.1/lib/ruby/2.6.0/monitor.rb:230:in `mon_synchronize'
/Users/kamipo/src/github.com/rails/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:280:in `reconnect!'
/Users/kamipo/src/github.com/rails/rails/activerecord/test/cases/adapter_test.rb:465:in `block in <class:AdapterTestWithoutTransaction>'
```
|
|\ \ \ \
| | | | |
| | | | | |
Fall back to parent locale before falling back to the :errors namespace
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Sample example ->
Before:
prathamesh@Prathameshs-MacBook-Pro-2 blog *$ rails server thin
DEPRECATION WARNING: Passing the Rack server name as a regular argument is deprecated
and will be removed in the next Rails version. Please, use the -u
option instead.
After:
prathamesh@Prathameshs-MacBook-Pro-2 squish_app *$ rails server thin
DEPRECATION WARNING: Passing the Rack server name as a regular argument is deprecated and will be removed in the next Rails version. Please, use the -u option instead.
|
|\ \ \ \ \
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
yahonda/rm_test_create_table_with_custom_sequence_name
Remove `MigrationTest#test_create_table_with_custom_sequence_name`
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This test is only executed for OracleAdapter.
https://github.com/rsim/oracle-enhanced/pull/1846 adds
an equivalent spec for Oracle enhanced adapter.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
An `author` has a lots of `posts` in the fixtures, so the result of
`author.post` and finding a `post` by `author_id` is non-deterministic.
https://travis-ci.org/rails/rails/jobs/504332292#L1202-L1208
|