Ruby Weekly #560: 日本語サマリー
Highlights
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 テストを自動化した実装例アプリ。
includes
vs preload
vs eager_load
。
Code & Tools
ActiveRecord のメンテナーの tenderlove 先生が Ruby で実装したアセンブラー。
Heroku の必要な DB コネクション数を計算してくれるツール。
Ruby Weekly #552: 日本語サマリー
Highlights
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
Some Useful Active Support Features You May Not Have Heard Of
知られざる ActiveSupport 便利機能。
Callbacks
Configurable
CurrentAttributes
MessageVerifier
MessageEncryptor
TDD の際は高レベルテストから書け、というアドバイス。
多数 Sidekiq ジョブの同時実行防止方法。
- フラグで制御
- キューにジョブが積まれてるか確認。
- Sidekiq Enterprise に課金して
sidekiq_options(unique_for:)
設定 - sidekiq-unique-jobs gem(一部 Lua 言語で実装されてる)
ActiveJob の場合は
役に立つ git 裏技。
- 空コミット
- ログを読みやすくする
- 不要なローカルブランチを捨てる
git rebase
などでうっかり消したコミット復元- 部分的
git add
git bisect
自動化
Ruby Weekly #550: 日本語サマリー
Highlights
Rails 7 実装中機能。気になったのは:
- 画像が全部デフォで lazy ロードするように設定できる
has_one :through
アソシエーションもbuild
・create
できる- ActiveRecord カラム暗号化
View Component を Storybook でプレビューする話。view_component_storybook gem で。
Basecamp 社内騒動。あれ以来は社員 1/3 退職しちゃった。
MAKE="make --jobs $(sysctl -n hw.ncpu)"
環境変数を付けると、bundle install
並列実行で高速化できるらしい。
Ruby Weekly #549: 日本語サマリー
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 Out、Flipper Cloud と同時に運営するのがストレスとなったから、Speaker Deck を売ることにした。
Articles & Tutorials
VCR ようわからん人向けチュートリアル。
ActiveRecord の .scoping
メソッド知らなかった。
Code and Tools
フォームオブジェクトに特化した gem。nested attributes もいい感じにやってくれるらしい。
あったほうがいいインデックスを検知してくれる gem。
Ruby Weekly #544: 日本語サマリー
Highlights
Rails に DB データ暗号化 PR が上がってる。Hey から抽出したものなので、近々マージされるのを期待できるかも?
Articles & Tutorials
gem なく、poro だけでパンクズ作る方法。綺麗な実装だと思った。
Flipper Cloud が pundit の上に DSL 設けて認可周りを DRY にした話。
- resourceful じゃなくなったのが気になる。God オブジェクトの Policy の責務がデカくなるのでは?
- Response オブジェクトは特に意義なし。
ちょっとやりすぎ感はあったが、Flipper Cloud 独自のニーズには合ってるかも?今度 pundit 周りで悩んでたら、この記事見返すといいかも。
細かい gotcha の多い nested forms 用の神チートシート。今度 nested forms 実装したら絶対役に立ちそう。
Sharing Common Code Between Rails Controllers with the Scoped Concern Pattern
Basecamp が nested resources で使ってる controller concerns の Scoped パターン。
Ruby Weekly #541: 日本語サマリー
Highlights
$ irb irb(main):001:0> IRB.send :easter_egg
実行すると面白いことが起きる。
rails アプリでよく使うデザパタ。皆さんの大好きなサービスクラスとかフォームオブジェクトとかデコレータとか
Articles & Tutorials
API の rate limit を超えないための仕組みを実装した話。〇〇秒後に expire するロックのレコードを Redis に登録することで。
オブジェクトの責務は綺麗に切り分けてるが、sleep しちゃってるのが気になる。キューとかに積んだほうがシンプルだろう。非同期でも OK であれば。
依存注入でテストのセットアップをシンプルにする話。
Ruby Weekly #540: 日本語サマリー
Highlights
自分が認識してるデコレータとはかけ離れすぎていて使い道が見えない。
Articles & Tutorials
不要な cassette を特定しやすくしてくれる vcr 設定。これ設定してみたいかも。
Don't Wrap Instance Variables in attr_reader Unless Necessary
外から呼ばなくていいインスタンス変数は attr_reader
つけなくていい、というのは賛成する派ですね。
Tip: Use Rails' link_to_unless_current for Your Navigation Links
表示中画面 以外 のリンクを張ってくれる link_to_unless_current
ヘルパー。