rastam’s blog

東京在住のマレーシア人 Rubyist

Ruby Weekly #400: 日本語サマリー

職場の Slack 窓で Ruby Weekly メルマガが毎週配信されます。その中から面白そうなものをピックアップして、日本語で簡単なサマリーを書くようにしています。そのサマリーをここでまとまさせていただきます。くだけた日本語で失礼いたします。

http://rubyweekly.com/issues/400rubyweekly.com

Highlights

Actionable Tips to Improve Web Performance with Rails

Rails ウェブパフォーマンス向上まとめ。

  • フラグメントキャッシュ
  • カウンターキャッシュ
  • ページキャッシュ
  • etaglast_modified HTTP ヘッダー
  • ActiveStorage
  • HTTP/2、HTTP/2 PUSH
  • gzip ではなく brotli で圧縮
  • Heroku ではなく独自サーバ
  • dns-prefetchprefetchprerenderpreconnect

Pagy: The 'Ultimate' Pagination Ruby Gem

kaminariwill_paginate より遥かに軽いページネーション gem。

Building an API Client Using the Builder Pattern

ビルダーパターンでチェーン可能・イミュータブルな API クライアントを実装した話。

The Performance Impact of Removing OOBGC at GitHub

Aaron Patterson 先生が Github の OOBGC を外したことで CPU 時間を 10% 短縮できた。

Ryan Davis on Asking for Help for Contributing to Ruby

minitestsexp_processorruby_parserhoeflayflog の作成者 Ryan Davis が Patreon 支援者募集中。

RubyGems 2.7.7 Released

RubyGems 2.7.7 リリース。

Do We Need Dependency Injection in Ruby?

依存性の注入のメリットをうまく言葉にできなかった筆者が Test Double 社員の意見を集めた。

  • 依存関係が明確になる
  • モックだとテストが Arrange・Assert・Act パターンから外れちゃう
  • モックはデバッグしづらい
  • Sandi Metz の本読め

Tutorials

Ruby 2.5 Added Lazy Proc Allocation for Block Parameters

Ruby 2.4 以前では、メソッドのブロック引数を内部メソッドに渡すたびに Proc オブジェクトに変換していた。 Ruby 2.5 では、Proc オブジェクトへの変換が遅延評価になり、高速化に繋がった。

Separating Data and Code in Rails Architecture

Root 社の、極端に状態を持たせていない、準関数型に近い Rails アプリの話。

Securing Dependencies for Rails 5.2 Active Storage

ActiveStorage をサポートするようになった Heroku の FFmpeg セキュリティ対策。

  • FFmpeg脆弱性が頻繁に報告されるが、メンテナーが迅速に対応してくれている。
  • Ubuntu のパッケージマネージャは FFmpeg の最新版に追いついていないため、Heroku 独自バイナリーをコンパイルすることに。
  • ActiveStorage に使われていない機能をコンパイルから外すことで、バイナリー軽量化できた。

Monitoring SSL Certificate Expiry with Ruby

SSL 証明書有効期限監視スクリプト

Code & Tools

Introducing Stealth, a Framework for Conversational Voice and Chatbots

チャットボット用 MVC フレームワーク gem。

RoleCore: A Rails Engine Providing Role-Based Access Control

認可用 Rails Engine。CanCanCan 併用可能。