Ruby Weekly #489: 日本語サマリー
Highlights
Chrome ブラウザー操作用 gem。headless も non-headless も対応してる。
rubygems.org
の typo で打ってしまいそう rubgems.org
ドメインを買ったエンジニアが、中間車攻撃してみた話。
gem install
の--source
オプションを typo してても攻撃できなかったのでセーフ。- Gemfile の
source
を typo したら攻撃できちゃった。 - 3 ヶ月で 101 人も
rubgems.org
叩いちゃった。 - rubygems、bundler などのメンテナーには報告済み。
HTTP クライアントまとめ。
HTTP クライアント | 備考 |
---|---|
Ruby コアの net/http | 使いづらい |
Faraday gem | ドキュメンテーション最高 |
http.rb gem | 速い |
rest-client gem | 直感的なインタフェース |
httparty gem | 人気者 |
excon gem | |
Typhoeus gem | 1 年以上更新されてない |
curb gem |
January 02, 2006
などの文字列を渡したら、strftime
フォーマットを返してくれる gem。
Articles & Tutorials
ウェブカメラで撮った写真を直接 ActiveStorage にアップロードした話。HTMLCanvasElement.toDataURL()
の base64 データを hidden_field
に設定することで。
配列の要素をグループ化したカウントは、Ruby 2.7 の Enumerable#tally
で集計できるようになった。
prawn gem で PDF を複数生成してる Honeybadger 社が、各 PDF の要素をまとめた概要 PDF を生成することになった。
- DRY にするために、
Prawn::Document
オブジェクトを依存性注入方式で注入することを検討したが、注入したオブジェクト経由で prawn の DSL を呼ぶというオーバーヘッドが発生した。 - 最終的に
SimpleDelegator
でPrawn::Document
の擬似継承することにした。
How to Build a WhatsApp Chatbot with Ruby, Sinatra and Twilio
Sinatra + Twilio で WhatsApp チャットボットを作るチュートリアル。
Django アプリのパスワードを Ruby 用に移行した話。Django の PBKDF2 アルゴリズム + SHA256 ハッシュの代替案として、pbkdf2 gem があったため、既存パスワードはそのまま使えた。
ActionMailer 用ビューが ActinController 用ビューと一緒に紛れ込んでるのが辛くて、prepend_view_path
で ActionMailer 用ビューを分けた話。
Code and Tools
XML・HTML パース用 gem。libxml に依存していないため、nokogiri よりインストールしやすい。
Fake API: A Faster Way to Prototype an API in Your Rails App
API プロトタイプ用 gem。
DATETIME などのカラムで GROUP BY できるようにしてくれる gem。