rastam on rails

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

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

rubyweekly.com

Highlights

Doing a Rails PR Code Review with a Rails Core Team Member

Rails コアチームのペアレビュー実況。主にベストなメソッドインタフェースを議論してる。

Articles & Tutorials

Making a GitHub Issue-Style File Uploader Using Stimulus and Active Storage

GitHub のコピペ or D&D だけでファイルアップロード・添付する、超便利機能を Stimulus で実装する方法。

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

rubyweekly.com

Highlights

Privacy-Aware Rails Consoles with console1984 and audits1984

rails console でユーザの個人情報など匿名化してくれる console1984 gem と、console1984 利用ログをブラウザーで照会できるようにしてくれる audits1984 gem。

Articles & Tutorials

Responsible Monkeypatching in Ruby

bundle update に強いモンキーパッチの書き方。ざっくりいうと、上書きしている API が変わっていないことをモンキーパッチ内で確認すること。変わった場合は例外を投げること。

Submitting Many ActionMail Jobs at Once with Sidekiq

大量のメールを deliver_later しようとしたら、Redis のキューにジョブを積むだけでも長時間がかかり、リクエストがその間ずっと待っている状態。

Sidekiq::Client.push_bulk 使えば一瞬で終わるが、ActionMailer は対応してないから、オレオレ実装せざるを得ない。

Code & Tools

wipe_out: Library for Resetting Data in Rails ActiveRecord Models

ユーザ退会などで個人情報をマスキング・匿名化してくれる gem。

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

rubyweekly.com

Highlights

Ruby 3.0.2 Released (plus 2.7.4 and 2.6.8)

Security Fix あり。バージョンアップしましょう。

Understanding Factory Bot Syntax by Coding Your Own Factory Bot

オレオレ FactoryBot を実装してみることで FactoryBot の仕組みを理解する。deepL で翻訳できる記事もあれば、おまけに動画もある。

動画は TDD で実装してるスクリーンキャスト。TDD に興味がある人や、英語リスニングに自信がある人はぜひ。

Articles & Tutorials

The Shortest Path to Get Set Up with Automated Accessibility Testing in Rails

RSpec + axe gem で a11y テストを自動化した実装例アプリ。

Under The Hood of the includes Method in Rails

includes vs preload vs eager_load

Code & Tools

Fisk: A Pure Ruby x86-64 Assembler

ActiveRecord のメンテナーの tenderlove 先生が Ruby で実装したアセンブラー。

Heroku Database Connection Calculator

Heroku の必要な DB コネクション数を計算してくれるツール。

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

rubyweekly.com

Highlights

The History of RSpec

RSpec 作成者が gem の経歴を振り返った。

  • 2001 年に TDD を教えてた仕事がそもそものきっかけ。
  • XUnit 表記は分かりづらかった(actual・expected 引数の順番が直感的じゃなかった)から、授業で使える DSL 作った。
  • Bob Martin 先生の名言「Testing is about specification not verification」をもとに RSpec と名付けた。
  • 実務では Test::Unit 使うべきだと信じてたから gem 化しなかった。
  • RubyConf 2005 にやっと gem としてリリースしてみた。意外とバズった。
  • 2006 年に David Chelimsky 先生がコントリビューターとして参戦。

Articles & Tutorials

The Five Rules of Simple RSpec Tests

RSpec のベストプラクティス集。

Some Useful Active Support Features You May Not Have Heard Of

知られざる ActiveSupport 便利機能。

  • Callbacks
  • Configurable
  • CurrentAttributes
  • MessageVerifier
  • MessageEncryptor

Start With High-Level Tests

TDD の際は高レベルテストから書け、というアドバイス

Three Ways To Avoid Duplicate Sidekiq Jobs

多数 Sidekiq ジョブの同時実行防止方法。

  • フラグで制御
  • キューにジョブが積まれてるか確認。
  • Sidekiq Enterprise に課金して sidekiq_options(unique_for:) 設定
  • sidekiq-unique-jobs gem(一部 Lua 言語で実装されてる)

ActiveJob の場合は

Top Ten git Tips and Tricks

役に立つ git 裏技。

  • 空コミット
  • ログを読みやすくする
  • 不要なローカルブランチを捨てる
  • git rebase などでうっかり消したコミット復元
  • 部分的 git add
  • git bisect 自動化

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

rubyweekly.com

Highlights

(Some of) What's Cooking in Rails 7

Rails 7 実装中機能。気になったのは:

  • 画像が全部デフォで lazy ロードするように設定できる
  • has_one :through アソシエーションも buildcreate できる
  • ActiveRecord カラム暗号化

Building a Component Library in Rails with Storybook

View Component を Storybook でプレビューする話。view_component_storybook gem で。

Basecamp's Employee Speech Policy Controversy

Basecamp 社内騒動。あれ以来は社員 1/3 退職しちゃった。

A 'trick' for Speeding up bundle install

MAKE="make --jobs $(sysctl -n hw.ncpu)" 環境変数を付けると、bundle install 並列実行で高速化できるらしい。

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

rubyweekly.com

Highlights

How to Build An App, Get Acquired by GitHub, Buy An App Back From GitHub and Then Sell It Again

Speaker Deck の経歴。

  • Ruby + ImageMagick で実装。
  • RubyConf で GitHub CEO に出会った。
  • GitHub に買収され、作成者が GitHub 社員となった。
  • GitHub では、(作成者に)メンテされてたが、あまり成長してなかった。
  • 作成者が GitHub から買収する決意をした。
  • GitHub は即刻、作成者が提案した値段よりも 90% 安く売ってくれた。なぜかというと、Microsoft 買収の話が決まってた。SlideShare を商品にしてる Microsoft に Speaker Deck を殺されたくなかったから。
  • 作成者は広告収入で運用費を一部賄ったが、コロナで広告収入 0。
  • 有料機能実装で初月から黒字化。
  • Box OutFlipper Cloud と同時に運営するのがストレスとなったから、Speaker Deck を売ることにした。

Articles & Tutorials

A VCR + WebMock "Hello World" Tutorial

VCR ようわからん人向けチュートリアル

Rails 7 Enables Scoping to Apply to All Queries

ActiveRecord.scoping メソッド知らなかった。

Code and Tools

Reform 2.6.0: Form Objects Decoupled From Models

フォームオブジェクトに特化した gem。nested attributes もいい感じにやってくれるらしい。

wt_activerecord_index_spy: Report Missing Database Indexes

あったほうがいいインデックスを検知してくれる gem。