Sunday, September 16, 2018

Performance improvements, configuration options, and more

Posted by dodecadaniel

Greetings! Daniel here, reporting from Brooklyn, NY.

Use faster globs for template resolving

Resolving templates used to get pretty slow as the number of view paths, handlers, and formats increased. Replacing 1682 system calls with 14 sounds pretty great to me!

Do less work and use less memory

2.4% faster, 1.7% faster, 1.58% faster. Many thanks to Richard for working hard so our applications don’t need to!

Improve performance of Integer#multiple_of?

With a few clever tweaks, it has never been easier to find out if 4611686018427387903 is a multiple of 42.

Default to utf8mb4 for MySQL

The previous default character set did not support supplemental characters like emoji. The 4-Byte utf8mb4 has you covered. 👍 

Introduce model-level configuration for filtering sensitive attributes

Nobody wants sensitive data to show up in logs. The new filter_attributes setting allows you to filter out sensitive attributes when calling a model’s inspect method.

Introduce configurable prefix for Active Storage routes

By default the Active Storage routes begin with
/rails/active_storage. If that doesn’t suit you, you can now use any scope you like by setting config.active_storage.routes_prefix in your application config.

Include an id in Action Cable’s Redis configuration

Action Cable now passes an id to Redis, which can help you distinguish between Action Cable’s connection and any other connections you might have.

44 people contributed to Rails over the past two weeks. Check out the full list of changes. If you are interested in helping out, we have plenty of open issues. I hope to see your name on the list next week!