| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
Allow separate database env variables per-connection
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This commit adds a feature which allows separate database ENV variables
to be defined for each spec in a 3-tier config. The names for the
environment variables will be `#{name.upcase}_DATABASE_URL`
This commit also introduces a change in behavior around handling of
`DATABASE_URL`. Instead of using `DATABASE_URL` to change _all_ specs
in a multi-database configuration, it will now only affect the `primary`
connection.
|
|\ \
| | |
| | |
| | |
| | | |
giraffate/fix_join_middle_table_alias_when_using_HABTM
Fix join middle table alias when using HABTM
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
In using HABTM, join middle table alias is combined with the associated
models name without sort, while middle table name is combined with those
models name with sort.
Fixes #36742.
|
| |/
|/|
| | |
Don't break configurations.each, .first before the deprecation period
|
| |
| |
| |
| |
| |
| |
| | |
This commit fixes a regression where when the `DATABASE_URL` environment
variable was set and the current Rails environment had a valid configuration
defined in the database config, settings from the environment variable would
affect _all_ environments (not just the current one).
|
|\ \
| | |
| | | |
Use connection.error_number in MySQLDatabaseTasks
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
MySQLDatabaseTasks, like AbstractMysqlAdapter, should be able to operate
on any mysql adapter, not just mysql2. Errors having a .error_number
attribute is a mysql2 specific API, which we (Rails) don't control, so
we should instead use connection.error_number(err), which we do.
This also updates tests to better test how this really works, previously
it stubbed create_database to raise Tasks::DatabaseAlreadyExists, which
can never happen.
|
|\ \ \
| |/ /
|/| |
| | |
| | |
| | | |
edudepetris/ed/36272-better-negative-scope-warning
Add a warning for enum elements with 'not_' prefix.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When a enum element contains the prefix 'not_'. I warns to users
to be aware of this new feature.
Example code:
class Foo < ActiveRecord::Base
enum status: [:sent, :not_sent]
end
|
|\ \ \
| | | |
| | | |
| | | | |
Add compact_blank shortcut for reject(&:blank?)
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In #36560 I accidentally re-introduced a bug where ActiveRecord can't be
used without Rails. This returns an empty hash if we're outside the
context of Rails since we can't create the database tasks without
loading and reading the database yaml which is something only Railties
can do.
|
|\ \ \ \
| |_|_|/
|/| | |
| | | |
| | | | |
stanhu/sh-fix-index-exists-postgresql-partial-index
Fix index_exists? for PostgreSQL expression indexes
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Previously Rails expected indexes to be an array of columns, but for
PostgreSQL a expression index can just be a string of text. Handle this
by forcing `Index#columns` to be an Array inside `index_exists?`.
Closes #36739
|
|\ \ \ \
| | | | |
| | | | | |
Remove unused `DepthFirst` visitor
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
We only use `ToSQL` visitors in the our codebase, do not use
`DepthFirst` and `Dot` visitors.
The `DepthFirst` visitor (which was introduced at c86c37e5f) is used to
traverse an Arel (partial) ast with depth first.
Is there any worth to keep that undocumented feature with much code and
test cases.
This removes that unused `DepthFirst` code and test cases.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Fix multiple database support for DATABASE_URL env variable
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This commit fixes an issue where multi-database configurations were
incompatible with setting a `DATABASE_URL` environment variable.
As part of this work, this commit also includes a light refactor
to make both multi and single database configurations lead into the same
code path so they behave the same.
As mentioned in #36736, this regression was introduced as part of
f2ad69fe7a605b01bb7c37eeac6a9b4e7deb488e
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Also deduplicate schema cache structure when they are read from the database
|
| | |_|_|_|/
| |/| | | | |
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
wjessop/do_not_validate_non_dirty_association_targets
Don't validate non dirty association targets
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Fixes #36581.
This fixes an issue where validations would return differently when a previously saved invalid association was loaded between calls:
assert_equal true, squeak.valid?
assert_equal true, squeak.mouse.present?
assert_equal true, squeak.valid?
Here the second assert would return
Expected: true
Actual: false
Limiting validations to associations that would be normally saved (using autosave: true) due to changes means that loading invalid associated relations will not change the return value of the parent relations's `valid?` method.
|
|\ \ \ \ \ \ \
| |_|_|_|_|/ /
|/| | | | | | |
Fixed db:prepare task to not touch schema when it is disabled
|
| | |_|/ / /
| |/| | | |
| | | | | |
| | | | | | |
is false.
|
|\ \ \ \ \ \
| |/ / / / /
|/| | | | |
| | | | | | |
Make currency symbols optional for money column type in PostgreSQL
|
| |/ / / / |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
[ActiveRecord] Deduplicate optimizer hints
|
| | | | | | |
|
|/ / / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
With their descriptions commented out these commands were not included
in the rails help command's output, which is a shame as they are useful,
particularly during the development of more complex migrations.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Ruby 2.7 introduces beginless ranges (..value and ...value) and as with
endless ranges we can turn these into inequalities, enabling expressions
such as
Order.where(created_at: ..1.year.ago)
User.where(karma: ...0)
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
- One regression introduced by the "AM errors as object" features is
about the `full_messages` method.
It's currently impossible to call that method if the `base` object
passed in the constructor of `AM::Errors` doesn't respond to the
`errors` method.
That's because `full_messages` now makes a weird back and forth trip
`AM::Errors#full_messages` -> `AM::Error#full_message` -> `AM::Errors#full_message`
Since `full_message` (singular) isn't needed by AM::Errors, I moved
it to the `AM::Error` (singular) class. This way we don't need to
grab the `AM::Errors` object from the base.
|
| | | | | |
|
|\ \ \ \ \
| |/ / / /
|/| | | | |
Fix errors getting duplicated when passed validations options:
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
- In 86620cc3aa8e2630bc8d934b1a86453276b9eee9, a change was made
on how we remove error duplication on a record for autosave
association
This fix has one caveat where validation having a `if` / `unless`
options passed as a proc would be considered different.
Example:
```ruby
class Book < ApplicationRecord
has_one :author
validates :title, presence: true, if -> { true }
validates :title, presence: true, if -> { true }
end
Book.new.valid? # false
Book.errors.full_messages # ["title can't be blank", "title can't be blank"]
```
While this example might sound strange, I think it's better to
ignore `AM::Validations` options (if, unless ...) when making the
comparison.
|
| | | | |
| | | | |
| | | | |
| | | | | |
active_support/rails.rb
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
giraffate/fix_exists_with_distinct_and_offset_and_order_in_postgresql
Fix `relation.exists?` with giving `distinct`, `offset` and `order` for joined table
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
joined table
The error happens in PostgreSQL when using `relation.exists?` with
`distinct`, `offset` and `order` for joined table.
However, the error does not happen if either `distinct` or `offset` is
removed. This behavior is confusing.
Fixes #36632
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
MySQL: Check error number instead of a message
|
| |/ / / / /
| | | | | |
| | | | | |
| | | | | | |
To be able to check regardless of locale.
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Share the Arel dispatch cache between connections
|
| |/ / / / / |
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Share the column and table name quote cache between connections
|
| |/ / / / / |
|
|\ \ \ \ \ \
| |/ / / / /
|/| | | | | |
Fix query cache when using shared connections
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Enables the query cache on the correct connection when
shared connections across threads are enabled
|