Ruby Weekly #503: 日本語サマリー
Highlights
Rubocop ユーザ調査結果。多くは
- シングルコーテーション使う
- 1 行 120 文字まで
- 配列・ハッシュ末尾に
,
付けない and
or
を一切使わない!!
を boolean 変換だけで使う- ハッシュ内にスペースを空ける
Kernel
系メソッドは()
を使わないCyclomaticComplexity
cop が役に立つ- Rubocop のデフォ設定がまあまあ満足
大量の ActiveRecord を高速削除してくれる gem。
Rust で gem を作る手順。
Articles & Tutorials
同一レコードの多重 SELECT を減らす方法解説。ActiveRecord::Associations::Association#target
を設定することで lazy load を阻止する。
From 25 Minutes to 7 Minutes: Improving the Performance of a Rails CI Pipeline
Gusto 社の CI 高速化戦略。
- flaky テストを skip して担当者に解消してもらった
- RSpec デフォに戻した(テスト順番ランダム化、Rails の autoloader 採用、テスト間依存断絶)
- 2 分以上かかるテストを skip して担当者に軽量化してもらった
- 各テストの実行時間を DB に保存して knapsack gem で均等に並列実行
JWT トークンなどとして使える、Rails 6.1 の signed_id
。
Rails バージョンアップの 2 戦略のメリデメ比較。
- 新規バージョン用ブランチ
- デュアルブート
筆者はデュアルブート推奨。
メモ化の解説。
マルチテナント実装方法 3 通りの比較。
- テナント識別用 FK
- テナントごとに専用テーブル作成
- テナントごとに専用 DB 作成
Code and Tools
pry-rescue: Start a Pry Session Whenever Something Goes Wrong
例外発生時に pry で入るための gem。
DynamoDB 用 ORM gem。
webmention-client-ruby: A Ruby Gem for Sending Webmention Notifications
ウェブメンション送信用 gem。
PostgreSQL 監視用ダッシュボード。