This reverts commit 141f50ef9e, reversing
changes made to 317efa5c35.
Reason: `add_foreign_key` and `remove_foreign_key` are implemented at
#35212.
[ci skip]
Changes the Getting Started guide explanation for
`ActionController::MissingExactTemplate` error, to reflect the current message.
Follow up for #29286, #35148
[ci skip]
This commit updates the Missing Template image in the Getting Started
Guide.
The new image displays the current error message. Additionally:
- New image is a PNG file, whereas the current image is in fact a misnamed JPEG.
- New image is smaller.
Before:
```
$ file --mime -b template_is_missing_articles_new.png
image/jpeg; charset=binary
$ du -h template_is_missing_articles_new.png
464K template_is_missing_articles_new.png
```
After:
```
$ file --mime -b template_is_missing_articles_new.png
image/png; charset=binary
$ du -h template_is_missing_articles_new.png
28K template_is_missing_articles_new.png
```
[ci-skip]
During the development of #33145, I have named a few concepts in the
code as `whitelisted`. We decided to stay away from the term and I
adjusted most of the code afterwards, but here are the cases I forgot to
change.
I also found a case in the API guide that we could have cleaned up as
well.
[ci skip]
The AV::Base constructor was too complicated, and this commit tightens
up the parameters it will take. At runtime, AV::Base is most commonly
constructed here:
94d54fa4ab/actionview/lib/action_view/rendering.rb (L72-L74)
This provides an AV::Renderer instance, a hash of assignments, and a
controller instance. Since this is the common case for construction, we
should remove logic from the constructor that handles other cases. This
commit introduces special constructors for those other cases.
Interestingly, most code paths that construct AV::Base "strangely" are
tests.
That would allow us to test broadcasting made with channel, e.g.:
```ruby
class ChatRelayJob < ApplicationJob
def perform_later(room, msg)
ChatChannel.broadcast_to room, message: msg
end
end
```
To test this functionality we need to know the underlying stream name
(to use `assert_broadcasts`), which relies on `channel_name`.
We had to use the following code:
```ruby
assert_broadcasts(ChatChannel.broadcasting_for([ChatChannel.channel_name, room]), 1) do
ChatRelayJob.perform_now
end
```
The problem with this approach is that we use _internal_ API (we shouldn't care about `channel_name` prefix
in our code).
With this commit we could re-write the test as following:
```ruby
assert_broadcasts(ChatChannel.broadcasting_for(room), 1) do
ChatRelayJob.perform_now
end
```
We added "Action Mailbox Basics", "Action Text Overview" guides(#34812, #34878)
I think it makes to mention about it in the changelog file. (Similar to 7200ec92f8)
Note that entries retain original author since
I just moved content from readme files to the guides.
Engines guide in the Overriding Models and Controllers section
references the Decorator pattern, which isn't appropriate, since
Decorator pattern is not about reopening existing classes, is about
adding functionality to existing object instances; something that in
Ruby is commonly implemented using Delegators.
Moreover, the suggested naming convention for overrides,
`app/decorators/**/*_decorator*.rb`, conflicts with a naming convention
commonly used for View Model / Presentation Model decorators, adopted
by popular gems such as `draper`, as well as by custom implementations.
This PR addresses the issue described in #28025. On `dependent: :nullify` strategy only the foreign key of the relation is nullified. However on polymorphic associations the `*_type` column is not nullified leaving the record with a NULL `*_id` but the `*_type` column is present.
Fix path to channel files.
`rails generate channel Chat` generates `app/javascript/channels/chat_channel.js`.
See also,
railties/lib/rails/generators/rails/app/templates/app/javascript/packs/application.js.tt,
actioncable/lib/rails/generators/channel/templates/javascript/index.js.tt
by default `application.js` imports "channels", where
`app/javascript/channels/index.js` loads all the channels within
this directory and all subdirectories.
Follow up #34709
Related to #33079
In #34709 we updated the guide, but `actioncable/README.md` is still
outdated. Instead of fixing content in the file. I suggest
not duplicate the info that is already in the guide and instead remove
the info from the file and just add a message:
"You can read more about Action Cable in the
[Action Cable Overview](https://edgeguides.rubyonrails.org/action_cable_overview.html) guide."
The same approach is being used for Action Mailbox and Action Text,
see #34812 and #34878.
Also, add mention to `new_framework_defaults_6_0.rb` that
`ActionMailer::Parameterized::DeliveryJob` is default for parameterized mail
and will be removed.
Related to #34692