Ruby Weekly #400: 日本語サマリー
職場の Slack 窓で Ruby Weekly メルマガが毎週配信されます。その中から面白そうなものをピックアップして、日本語で簡単なサマリーを書くようにしています。そのサマリーをここでまとまさせていただきます。くだけた日本語で失礼いたします。
http://rubyweekly.com/issues/400rubyweekly.com
Highlights
Rails ウェブパフォーマンス向上まとめ。
- フラグメントキャッシュ
- カウンターキャッシュ
- ページキャッシュ
etag
、last_modified
HTTP ヘッダー- ActiveStorage
- HTTP/2、HTTP/2 PUSH
- gzip ではなく brotli で圧縮
- Heroku ではなく独自サーバ
dns-prefetch
、prefetch
、prerender
、preconnect
kaminari、will_paginate より遥かに軽いページネーション gem。
ビルダーパターンでチェーン可能・イミュータブルな API クライアントを実装した話。
Aaron Patterson 先生が Github の OOBGC を外したことで CPU 時間を 10% 短縮できた。
minitest、sexp_processor、ruby_parser、hoe、flay、flog の作成者 Ryan Davis が Patreon 支援者募集中。
RubyGems 2.7.7 リリース。
依存性の注入のメリットをうまく言葉にできなかった筆者が Test Double 社員の意見を集めた。
- 依存関係が明確になる
- モックだとテストが Arrange・Assert・Act パターンから外れちゃう
- モックはデバッグしづらい
- Sandi Metz の本読め
Tutorials
Ruby 2.4 以前では、メソッドのブロック引数を内部メソッドに渡すたびに Proc
オブジェクトに変換していた。
Ruby 2.5 では、Proc
オブジェクトへの変換が遅延評価になり、高速化に繋がった。
Root 社の、極端に状態を持たせていない、準関数型に近い Rails アプリの話。
ActiveStorage をサポートするようになった Heroku の FFmpeg セキュリティ対策。
- FFmpeg は脆弱性が頻繁に報告されるが、メンテナーが迅速に対応してくれている。
- Ubuntu のパッケージマネージャは FFmpeg の最新版に追いついていないため、Heroku 独自バイナリーをコンパイルすることに。
- ActiveStorage に使われていない機能をコンパイルから外すことで、バイナリー軽量化できた。
Code & Tools
Introducing Stealth, a Framework for Conversational Voice and Chatbots
RoleCore: A Rails Engine Providing Role-Based Access Control