rastam on rails

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

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

rubyweekly.com

Highlights

The Results of a Survey into RuboCop's Defaults

Rubocop ユーザ調査結果。多くは

  • シングルコーテーション使う
  • 1 行 120 文字まで
  • 配列・ハッシュ末尾に , 付けない
  • and or を一切使わない
  • !! を boolean 変換だけで使う
  • ハッシュ内にスペースを空ける
  • Kernel 系メソッドは () を使わない
  • CyclomaticComplexity cop が役に立つ
  • Rubocop のデフォ設定がまあまあ満足

delete_in_batches: A Fast Way to Delete with Active Record

大量の ActiveRecord を高速削除してくれる gem。

Creating a Ruby Gem with Rust

Rust で gem を作る手順。

Articles & Tutorials

Never Query the Same Thing More Than Once

同一レコードの多重 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 で均等に並列実行

Rails 6.1 Adds Support for Signed IDs to Active Record

JWT トークンなどとして使える、Rails 6.1 の signed_id

Two Commonly Used Rails Upgrade Strategies

Rails バージョンアップの 2 戦略のメリデメ比較。

筆者はデュアルブート推奨。

Speeding Up Rails with Memoization

メモ化の解説。

A Quick Comparison of Approaches to Multitenancy in Webapps

マルチテナント実装方法 3 通りの比較。

  • テナント識別用 FK
  • テナントごとに専用テーブル作成
  • テナントごとに専用 DB 作成

Code and Tools

pry-rescue: Start a Pry Session Whenever Something Goes Wrong

例外発生時に pry で入るための gem。

Dynamoid 3.5: A Ruby ORM for Amazon's DynamoDB

DynamoDB 用 ORM gem。

webmention-client-ruby: A Ruby Gem for Sending Webmention Notifications

ウェブメンション送信用 gem。

PgHero 2.5: A Performance Dashboard for Postgres

PostgreSQL 監視用ダッシュボード。

Rambulance: Dynamically Render Error Pages for Rails Apps

Rails エラー画面 or JSON レスポンスを返してくれる gem。