rastam on rails

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

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

rubyweekly.com

Highlights

JIT and Ruby's MJIT

JIT、MJIT の比較的分かりやすい解説。

  • JIT でコードが速くなる一方で、メモリを食うのと、高速化までは時間がかかる
  • MJIT は Ruby の現行 JIT 実装(デフォはオフになってる)
  • MJIT が導入に至った経緯
  • Rails だと重くなる

Ruby, Where Do We Go Now?

Ruby 2.7 への不満をこぼした Rubocop のメンテナー。

  • たった 3 人の苦情で復活した flip flop 演算子
  • numbered parameters など機能追加しすぎ
  • revert 済みの |> 演算子はそもそも Elixir と挙動が違ってて完全に無意味
  • .: がボツになったのは残念だが Matz の決断力が良かった
  • parameter forwarding は大歓迎
  • Ruby への機能追加プロセスがカオスで、Ruby の成長を不安定にし、Rubocop などのメンテナーに負担をかけている

An Epic Collection of Ruby One Liners

巨大な Ruby ワンライナー集。

Articles & Tutorials

Decimating Deprecated Finders

Synvert gem で Rails の非推奨となった finder メソッドを書き換えた話。

Nested API Parameter Validation in Rails with ActiveModel::Validations

API のネストされていた JSON 引数を ActiveModel::Validations でチェックした話。各 JSON オブジェクトの ActiveModel オブジェクト定義してネスト用共通ロジックを親から継承している。

Working Around ActiveRecord Callbacks

テスト環境などで ActiveRecord コールバックを無効にした話。attr_accessor で定義したフラグというハックで。

Rails 6 Adds Ability to Block Writes to A Database

DB への書き込みを一時的に止めてくれる、ActiveRecord 6 の while_preventing_writes ブロック。DB 全体へのロックのようなもの。弾かれた書き込みは ActiveRecord::StatementInvalid エラーを投げ返される。

The Case for Stabby Lambda Notation

冗長な lambdaproc キーワードを書くのをやめて -> 書こうという主張。

  • 完結。
  • 視覚的に目立つ。
  • 複数行の lambda をデフォで lambda にする Rubocop ルールには反対。do ... end のせいで普通のブロックと間違えやすい。

How to Set Up an AWS RDS Database for Rails

EC2 上 Rails アプリ用 AWS RDS データベース構築手順。

Behind The Scenes of GitHub's Vulnerability Alerts

GitHub 脆弱性アラートの仕組み。Gemfile などに新規 gem 追加してコミットするたびに、該当 gem のメタデータRubygems から取得するバックグラウンドジョブが走る。それとは別に、米国立 National Vulnerability Database や gem メンテナーの注意書などの情報源を社内で集めている。この情報源をもとにした機械学習モデルが、CVE と gem のマッピングを結び、GitHub 社内リポジトリーに PR を出す。キュレーションチームが PR をレビューしてマージしたら、バックグラウンドジョブがその gem に依存しているリポジトリー宛にアラートを飛ばす。

Code and Tools

Win32::Screenshot: Capture Screenshots on Windows from Ruby

Windows でスクショを撮ってくれる gem。

Godmin 2.0: An Admin Framework for Rails 4

Rails 管理画面フレームワークDSL ではなく普通のコントローラなど生成し、共通機能をモジュールで include

Torch-rb: Deep Learning for Ruby, Powered by LibTorch

深層学習用 gem。裏は LibTorch で、APIPyTorch に合わせてる。

rack-mini-profiler: Profiler for Your Rack Apps in Dev or Production

パフォーマンス計測用 gem。

Opal 1.0.1: The Ruby to JavaScript Compiler

RubyJavaScript コンパイラーのパッチリリース。

Snabberb: A Simple Component View Framework for Opal

Opan 用フレームワーク