Ruby Weekly #391: 日本語サマリー
職場の Slack の #ruby 窓で Ruby Weekly メルマガが毎週配信されます。その中から面白そうなものをピックアップして、日本語で簡単なサマリーを書くようにしています。そのサマリーをここでまとまさせていただきます。くだけた日本語で失礼いたします。
http://rubyweekly.com/issues/391rubyweekly.com
Highlights
Rails 5.2.0 RC2 新機能まとめ
- Active Storage
- Redis Cache Store
- HTTP/2 Early Hints
- Bootsnap
- CSP 用 DSL
- Credentials
Discourse がゼロダウンタイムで DB スキーム変更を実現できた秘密。
schema_migrations
テーブルにgit_version
などのカラム追加- カラム・テーブル削除は migration ではなく seed で
- migration でカラム・テーブル削除ができないように pg gem をパッチ
デプロイ手順は
ブラウザー検知 gem。
新規 Rails アプリ作成用テンプレート。
News
RailsConf 2018 スケジュール公開。
Tutorial
DB 内 i18n データ永続化用定番 gem Globalize では、各モデルに紐付いた モデル名_translations
テーブルで i18n データを保存。しかし取得時には、JOIN
する負荷がかかってしまう。
Mobility gem の JSON・JSONB ストラテジーだと、モデルと同一テーブルの JSON 型カラムに保存することで、JOIN
なしで取得できる。
なお Globalize 流ストラテジーなども完備している Mobility は多様性・拡張性抜群。
Pwned Passwords API を叩くことで、パスワードが流出しているかどうかの validation を実装する手順。
gem の中身を確認する方法 2 つ。
- リポジトリを
git clone
。 bundle show
のパスにcd
。
StringIO
を注入することで、ログ出力をテストする手順。
Story
6 年間の職歴を経て、Rails 2.3 → Clojure → Java 8 → Rails 4.2 で開発した経験談。
- Rails 2.3 のモノリスを 40% ぐらいリファクター・改善してから Clojure 屋さんに転職。
- Clojure は高速 + エンジニアの生産性が良かったが、エンジニアの採用が難しくて事業がなかなか成長できなかった。
- 意外とリーンな Java 屋さんに転職して、エンジニアの生産性も意外と良かった。何でもかんでも POJO 作るのがちょっとめんどくさかったのにもかかわらず。静的言語のおかげで大規模リファクターができた。
- Rails 4.2 は使い勝手が 2.3 とはそんなに変わらない割には、アップグレードが辛い。後方互換性の優れている Clojure・Java に比べて。
- いろんな言語の経験はエンジニアリング・マネージャには必須だが、シニア・エンジニア募集案件に応募するには特定言語の専門知識が足りない。
Code
Rails-DB-Interactive: Interactive Database Diagrams for Rails
Rails アプリのモデル図を生成する JavaScript アプリ。