| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
As @matthewd's suggestion, if `klass` has no default scope, it will more
faster.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Some third party modules expects that association returns same proxy
object each time (e.g. for stubbing collection methods:
https://github.com/rspec/rspec-rails/issues/1817).
So I decided that cache the proxy object and reset scope in the proxy
object each time.
Related context: https://github.com/rails/rails/commit/c86a32d7451c5d901620ac58630460915292f88b#commitcomment-2784312
|
|
|
|
|
|
|
|
| |
This fixes the following issues.
* `association_scope` doesn't include `default_scope`. Should use `scope` instead.
* We can't use `method_missing` for customizing existing method.
* We can't use `relation_delegate_class` for sharing extensions. Should extend per association.
|
|\
| |
| | |
Doc updates for ActiveRecord::Batches
|
| |
| |
| | |
[ci skip]
|
|\ \
| |/
|/| |
[ci skip] Changed sentence formation for ActiveRecordRelation#update
|
| | |
|
| | |
|
|\ \
| | |
| | | |
ActiveRecord initialization optimizations
|
| | |
| | |
| | |
| | |
| | |
| | | |
This change preserves the speedup made in a24912cb1d3 (by avoiding
the wasted shallow dup of @attributes) while ensuring that the
performance of #deep_dup won't be tied to the performance of #initialize
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Memoize the #column_defaults class property, as ActiveRecord does
for other properties in this module.
This change addresses slowness in ActiveRecord initialization
introduced starting in Rails 5.0. This method's performance has not
changed with Rails 5, but it is now called much more frequently than
before: every time an STI model is instantiated.
|
| | |
| | |
| | |
| | |
| | | |
This change addresses slowness in ActiveRecord initialization
introduced starting in Rails 5.0.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Skip the call to #dup, since it does a shallow copy of attributes,
which is wasted effort, since #deep_dup then replaces that
shallow copy with a #deep_dup of the given attributes.
This change addresses slowness in ActiveRecord initialization
introduced starting in Rails 5.0.
|
|\ \ \
| | | |
| | | | |
Add a Monitor to ModelSchema#load_schema
|
| |/ /
| | |
| | |
| | | |
[Vikrant Chaudhary, David Abdemoulaie, Matthew Draper]
|
|\ \ \
| |/ /
|/| | |
Fix crashing on circular left join references with scoping
|
| | |
| | |
| | |
| | | |
Follow up of #25702.
|
|/ / |
|
|\ \
| | |
| | | |
Both reference id and type should be `NOT NULL` if `null: false` is specified
|
| | |
| | |
| | |
| | |
| | |
| | | |
This is a regression due to #28282.
Fixes #29136.
|
|\ \ \
| | | |
| | | | |
Adding Foreing Key - Don't worry about building the identifier if name is already present.
|
| | |/
| |/|
| | |
| | | |
present.
|
|\ \ \
| | | |
| | | | |
Remove unused `JoinPart#name`
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Remove unused `left_joins_values` generation
|
| |/ / /
| | | |
| | | |
| | | | |
This was added at #22125 but `left_joins_values` is never used.
|
|\ \ \ \
| | | | |
| | | | | |
Refactor making join constraints
|
| |/ / /
| | | |
| | | |
| | | |
| | | | |
The only difference between `make_inner_joins` and
`make_left_outer_joins` is the `join_type`.
|
|/ / / |
|
|\ \ \
| | | |
| | | | |
Make `VALID_DIRECTIONS` to `Set`
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
```ruby
require "benchmark/ips"
require "set"
array = [:asc, :desc, :ASC, :DESC, "asc", "desc", "ASC", "DESC"]
set = array.to_set
item = "DESC"
Benchmark.ips do |x|
x.report "array" do
array.include?(item)
end
x.report "set" do
set.include?(item)
end
end
```
```
% ruby array_vs_set.rb
Warming up --------------------------------------
array 188.441k i/100ms
set 229.531k i/100ms
Calculating -------------------------------------
array 3.508M (± 9.0%) i/s - 17.525M in 5.043058s
set 5.134M (± 7.6%) i/s - 25.707M in 5.038921s
```
|
|/ / / |
|
| |/
|/|
| |
| |
| |
| | |
This retains the existing behavior of
ActiveSupport::Cache.expand_cache_key (as used by etaging) where the
cache key includes the version.
|
| | |
|
| |
| |
| |
| |
| | |
Since 86390c3 all associations have `reset_scope` so `respond_to?` is
unneeded.
|
| |
| |
| |
| |
| |
| |
| | |
The object inside the scope is of the class that define the association
not the associated class.
[ci skip]
|
| |
| |
| |
| |
| |
| | |
* Use NOT IN in SQL query
* Quote table names propertly
* Use array form of command invocation
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
When using `sql` as the schema format, or even just doing `rake
db:structure:dump`, it would be good to respect the list of ignored
tables that has been configured.
|
|\ \
| | |
| | |
| | |
| | | |
meinac/fix_ambigious_exception_message_of_select_query_method
Fix ambigious error message of select query method [ci skip]
|
| | | |
|
|\ \ \
| | | |
| | | | |
Don't eager loading if unneeded for `FinderMethods#exists?`
|
| | |/
| |/|
| | |
| | | |
Fixes #29025.
|
|/ /
| |
| |
| |
| |
| | |
Because we don't need to load tasks for DBs that we don't use for the current app.
Also, these Tasks classes load AR::Base in their class level, and so immediately kick :active_record on_load hooks.
This used to happen when we were loading tasks, not when we run a task.
|
|\ \
| | |
| | | |
Clarify deprecation message for #quoted_id
|
| | |
| | |
| | |
| | |
| | | |
In this case, it's the method definition that's more at fault, rather
than the current caller.
|
| | |
| | |
| | |
| | |
| | |
| | | |
The argument of `Arel::SelectManager.new` is `table`, not `engine`.
https://github.com/rails/arel/blob/v8.0.0/lib/arel/select_manager.rb#L10
|