Ruby Weekly #480: 日本語サマリー
Highlights
JIT、MJIT の比較的分かりやすい解説。
- JIT でコードが速くなる一方で、メモリを食うのと、高速化までは時間がかかる
- MJIT は Ruby の現行 JIT 実装(デフォはオフになってる)
- MJIT が導入に至った経緯
- Rails だと重くなる
Ruby 2.7 への不満をこぼした Rubocop のメンテナー。
- たった 3 人の苦情で復活した flip flop 演算子
- numbered parameters など機能追加しすぎ
- revert 済みの
|>
演算子はそもそも Elixir と挙動が違ってて完全に無意味 .:
がボツになったのは残念だが Matz の決断力が良かった- parameter forwarding は大歓迎
- Ruby への機能追加プロセスがカオスで、Ruby の成長を不安定にし、Rubocop などのメンテナーに負担をかけている
Articles & Tutorials
Synvert gem で Rails の非推奨となった finder メソッドを書き換えた話。
Nested API Parameter Validation in Rails with ActiveModel::Validations
API のネストされていた JSON 引数を ActiveModel::Validations
でチェックした話。各 JSON オブジェクトの ActiveModel オブジェクト定義してネスト用共通ロジックを親から継承している。
テスト環境などで ActiveRecord コールバックを無効にした話。attr_accessor で定義したフラグというハックで。
DB への書き込みを一時的に止めてくれる、ActiveRecord 6 の while_preventing_writes
ブロック。DB 全体へのロックのようなもの。弾かれた書き込みは ActiveRecord::StatementInvalid
エラーを投げ返される。
冗長な lambda
や proc
キーワードを書くのをやめて ->
書こうという主張。
- 完結。
- 視覚的に目立つ。
- 複数行の lambda をデフォで
lambda
にする Rubocop ルールには反対。do ... end
のせいで普通のブロックと間違えやすい。
EC2 上 Rails アプリ用 AWS RDS データベース構築手順。
GitHub 脆弱性アラートの仕組み。Gemfile などに新規 gem 追加してコミットするたびに、該当 gem のメタデータを Rubygems から取得するバックグラウンドジョブが走る。それとは別に、米国立 National Vulnerability Database や gem メンテナーの注意書などの情報源を社内で集めている。この情報源をもとにした機械学習モデルが、CVE と gem のマッピングを結び、GitHub 社内リポジトリーに PR を出す。キュレーションチームが PR をレビューしてマージしたら、バックグラウンドジョブがその gem に依存しているリポジトリー宛にアラートを飛ばす。
Code and Tools
Windows でスクショを撮ってくれる gem。
Rails 管理画面フレームワーク。DSL ではなく普通のコントローラなど生成し、共通機能をモジュールで include
。
深層学習用 gem。裏は LibTorch で、API は PyTorch に合わせてる。
rack-mini-profiler: Profiler for Your Rack Apps in Dev or Production
パフォーマンス計測用 gem。
Ruby → JavaScript コンパイラーのパッチリリース。
Opan 用フレームワーク。