Hey everyone, Happy Friday the 13 π
Vipul here with the latest updates for This Week in Rails, from the very awesome EuRuKo this week! Letβs dive in.
New Guides Pull Request for review
Two new Guides Pull Requests are up for community review this week. If you are well versed in Action Mailer, or Error Reporting please review and submit your feedback here:
Add Solid Cable
This change starts to use Solid Cable as the default Action Cable adapter in production, configured as a separate queue database in config/database.yml
.
It keeps messages in a table and continuously polls for updates.
This makes it possible to drop the common dependency on Redis, if it isnβt needed for any other purpose. Despite polling, the performance of Solid Cable is comparable to Redis in most situations. And in all circumstances, it makes it easier to deploy Rails when Redis is no longer a required dependency for Action Cable functionality.
Deprecate Benchmark.ms and add benchmark to the gemspec
Ruby plans to make benchmark
a bundled gem. This change sets up deprecation of Rails core extension in favour of the bundled gem for future.
Deprecate unsigned_float and unsigned_decimal short-hand column methods
This change deprecates unsigned_float
and unsigned_decimal
short-hand column methods.
As of MySQL 8.0.17, the UNSIGNED
attribute is deprecated for columns of type FLOAT
, DOUBLE
,
and DECIMAL
. Consider using a simple CHECK constraint instead for such columns.
More details can be found here.
Allow BroadcastLogger to pass through kwargs
Some Logger implementations may want extend the logging interface to provide optional information via keyword argument.
This change enhances BroadcastLogger
to allow the same.
Fix travel_to to set usec 0 when with_usec is false and the given argument is String or DateTime
Before this change travel_to
did not set usec
to 0
depending on the argument (String
or DateTime
).
This PR fixes this behavior to make it uniform.
Fix .left_outer_joins when multiple associations have the same child
This change fixes an issue where .left_outer_joins
used with multiple associations that have
the same child association but different parents does not join all parents.
Previously, using .left_outer_joins
with the same child association would only join one of the parents. After this fix it now correctly joins both parents.
alias_attribute: handle user defined source methods
Before this change, when using alias_attribute
and trying to alias user defined source methods would error, for example:
class Person
include ActiveModel::AttributeMethods
define_attribute_methods :name
attr_accessor :name
alias_attribute :full_name, :name
end
person = Person.new
person.name = "Joe Doe"
person.full_name #=> Raises error
This change fixes alias_attribute
behavior to handle user defined source methods properly.
Enable DependencyTracker to evaluate renders with trailing interpolation
<%= render "maintenance_tasks/runs/info/#{run.status}" %>
Previously, the DependencyTracker
would ignore this render, but now it will
mark all partials in the maintenance_tasks/runs/info
folder as dependencies after this change.
You can view the whole list of changes here. We had 28 contributors to the Rails codebase this past week!
Until next time!
Subscribe to get these updates mailed to you.