| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |/ / /
| |/| | | |
|
| |/ / /
|/| | |
| | | |
| | | | |
Follow up of c9e4c848eeeb8999b778fa1ae52185ca5537fffe.
|
|/ / / |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This refactors `execute_grouped_calculation` and slightly changes
generated GROUP BY queries, since I'd not prefer to repeat same
expression in SELECT and GROUP BY clauses.
Before:
```
SELECT COUNT(*) AS count_all, "topics"."author_name" AS topics_author_name, COALESCE(type, title) AS coalesce_type_title FROM "topics" GROUP BY "topics"."author_name", COALESCE(type, title)
```
After:
```
SELECT COUNT(*) AS count_all, "topics"."author_name" AS topics_author_name, COALESCE(type, title) AS coalesce_type_title FROM "topics" GROUP BY topics_author_name, coalesce_type_title
```
Although we generally don't guarantee to support Arel node constructed
by user itself, this also fixes #24207.
|
| | |
| | |
| | |
| | | |
`values[:extending]` includes `NullRelation` if `null_relation?`.
|
| | |
| | |
| | |
| | |
| | |
| | | |
Follow up of #35868.
Closes #19349.
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
kamipo/association_isnt_to_be_affected_by_scoping_consistently
Association loading isn't to be affected by scoping consistently
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Follow-up of 5c71000, #29834, and #30271.
Currently, preloading and eager loading are not to be affected by
scoping, with the exception of `unscoped`.
But non eager loaded association access is still affected by scoping.
Although this is a breaking change, the association loading will work
consistently whether preloaded / eager loaded or not.
Before:
```ruby
Post.where("1=0").scoping do
Comment.find(1).post # => nil
Comment.preload(:post).find(1).post # => #<Post id: 1, ...>
Comment.eager_load(:post).find(1).post # => #<Post id: 1, ...>
end
```
After:
```ruby
Post.where("1=0").scoping do
Comment.find(1).post # => #<Post id: 1, ...>
Comment.preload(:post).find(1).post # => #<Post id: 1, ...>
Comment.eager_load(:post).find(1).post # => #<Post id: 1, ...>
end
```
Fixes #34638.
Fixes #35398.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
See https://github.com/rails/rails/pull/35873#issuecomment-480333333
for reference
[Prathamesh Sonpatki, bogdanvlviv]
|
|\ \ \ \
| | | | |
| | | | | |
Fix the deprecation warning about `config.active_job.return_false_on_aborted_enqueue`
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
`config.active_job.return_false_on_aborted_enqueue`
- It will return false in Rails 6.1 not 6.0. Also fixed the default
value which is true for new applications.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Fix typo for touch later test description. laster -> later
|
|/ / / / / |
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Add missing `touch_all` delegation to relation
|
| | |/ / /
| |/| | |
| | | | |
| | | | | |
Follow up of #31513.
|
|\ \ \ \ \
| |_|_|/ /
|/| | | | |
[ci skip] Mark ActiveRecord::TouchLater as private doc
|
|/ / / / |
|
|\ \ \ \
| |/ / /
|/| | | |
Do not exclude paths in the global level of Code Climate
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We use only RuboCop in Code Climate and exclude paths are specified in
RuboCop's setting.
The global level excludes paths should not be specified to match the
behavior of local and CodeClimate.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
startercc
https://github.com/sporkmonger/addressable/pull/270
|
| | | |
|
| | |
| | |
| | |
| | | |
This is completely same with `test_last`.
|
|\ \ \
| | | |
| | | | |
Stash `left_joins` into `joins` to deduplicate redundant LEFT JOIN
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Originally the `JoinDependency` has the deduplication for eager loading
(LEFT JOIN). This re-uses that deduplication for `left_joins`.
And also, This makes left join order into part of joins, i.e.:
Before:
```
association joins -> stash joins (eager loading, etc) -> string joins -> left joins
```
After:
```
association joins -> stash joins (eager loading, left joins, etc) -> string joins
```
Now string joins are able to refer left joins.
Fixes #34325.
Fixes #34332.
Fixes #34536.
|
|\ \ \ \
| | | | |
| | | | | |
fix typo in the guides (use Rails instead of rails) [ci skip]
|
|/ / / / |
|
|\ \ \ \
| | | | |
| | | | | |
Add documentation for 'after_save_commit' [ci skip]
|
|/ / / / |
|
|\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
sushantmittal/add_deattach_from_in_active_support_subscriber
Adds 'detach_from' to 'ActiveSupport::Subscriber' to detach a subscriber from a namespace.
|
| | | | |
| | | | |
| | | | |
| | | | | |
from a namespace.
|
|\ \ \ \ \
| |_|/ / /
|/| | | |
| | | | |
| | | | | |
localhostdotdev/add-extensions-to-arity-error-message
Fix arity warning for template handlers
|
| | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Mainly to help with knowning which template is reponsible for the
warning.
handler.class # => Class
handler.to_s # => Coffee::Rails::TemplateHandler
Before:
Change:
>> Class#call(template)
To:
>> Class#call(template, source)
After:
Change:
>> Coffee::Rails::TemplateHandler.call(template)
To:
>> Coffee::Rails::TemplateHandler.call(template, source)
|
|/ / /
| | |
| | |
| | |
| | |
| | | |
Follow up of #26764 and #35700.
And add test case for #35700.
|
|\ \ \
| | | |
| | | | |
Reintroduce support for overriding `has_secure_password` attributes
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In Rails 5.2.x calling `has_secure_password` would define attribute
readers and writers on the superclass of the model, which meant that you
could override these attributes in a model and call the superclass for
example:
```
class Dog < ApplicationRecord
has_secure_password
def password=(new_password)
@password_set = new_password.present?
super
end
end
```
However this behaviour was broken in Rails 6 when the ability to
customise the name of the attribute was introduced [1] since they are no
longer being defined on the superclass you will now see the following
error:
```
NoMethodError:
super: no superclass method `password=' for #<Dog:0x00007ffbbc7ce290>
Did you mean? password
```
In order to resolve this issue and retain support for setting a custom
attribute name we can define these attribute readers/writers in a module
and then ensure that the module is included in the inheritance chain.
[1] https://www.github.com/rails/rails/commit/86a48b4da3
https://www.github.com/rails/rails/commit/9b63bf1dfd
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
```
% be rubocop -a
Inspecting 2777 files
..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Offenses:
tools/test_common.rb:1:1: C: [Corrected] Style/FrozenStringLiteralComment: Missing magic comment # frozen_string_literal: true.
if ENV["BUILDKITE"]
^
2777 files inspected, 1 offense detected, 1 offense corrected
```
|
|\ \ \ \
| | | | |
| | | | | |
Fix deprecation warning about variants and formats
|
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | | |
- After https://github.com/rails/rails/pull/35408 and
https://github.com/rails/rails/pull/35406, the `formats` and
`variants` methods are deprecated in favor of `format` and `variant`.
|
|\ \ \ \
| | | | |
| | | | | |
Output junit format test report
|
| | | | | |
|
|\ \ \ \ \
| |/ / / /
|/| | | |
| | | | |
| | | | | |
kamipo/fix_count_all_with_eager_loading_and_select_and_order
Fix `count(:all)` with eager loading and explicit select and order
|
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This follows up ebc09ed9ad9a04338138739226a1a92c7a2707ee.
We've still experienced a regression for `size` (`count(:all)`) with
eager loading and explicit select and order when upgrading Rails to 5.1.
In that case, the eager loading enforces `distinct` to subselect but
still keep the custom select, it would cause the ORDER BY with DISTINCT
issue.
```
% ARCONN=postgresql bundle exec ruby -w -Itest test/cases/relations_test.rb -n test_size_with_eager_loading_and_custom_select_and_order
Using postgresql
Run options: -n test_size_with_eager_loading_and_custom_select_and_order --seed 8356
# Running:
E
Error:
RelationTest#test_size_with_eager_loading_and_custom_select_and_order:
ActiveRecord::StatementInvalid: PG::InvalidColumnReference: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
LINE 1: ..." ON "comments"."post_id" = "posts"."id" ORDER BY comments.i...
^
```
As another problem on `distinct` is enforced, the result of `count`
becomes fewer than expected if `select` is given explicitly.
e.g.
```ruby
Post.select(:type).count
# => 11
Post.select(:type).distinct.count
# => 3
```
As long as `distinct` is enforced, we need to care to keep the result of
`count`.
This fixes both the `count` with eager loading problems.
|
|\ \ \ \
| | | | |
| | | | | |
Refactor `Relation#cache_key` is moved from `CollectionCacheKey#collection_cache_key`
|
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
`CollectionCacheKey#collection_cache_key`
The implementation of `Relation#cache_key` depends on some internal
relation methods (e.g. `apply_join_dependency`, `build_subquery`), but
somehow that implementation exists on the model class
(`collection_cache_key`), it sometimes bothers to me.
This refactors that implementation moves to `Relation#cache_key`, then
we can avoid `send` to call internal methods.
|
|\ \ \ \
| | | | |
| | | | | |
Optimizer hints should be applied on Top level query as much as possible
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
I've experienced this issue in our app, some hints only works on Top
level query (e.g. `MAX_EXECUTION_TIME`).
|
|\ \ \ \ \
| |/ / / /
|/| | | | |
Fix partial caching ignore repeated items issue
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This is because we only use hash to maintain the result. So when the key
are the same, the result would be skipped. The solution is to maintain
an array for tracking every item's position to restructure the result.
|