rastam’s blog

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

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

職場の Slack の #ruby 窓で Ruby Weekly メルマガが毎週配信されます。その中から面白そうなものをピックアップして、日本語で簡単なサマリーを書くようにしています。そのサマリーをここでまとまさせていただきます。くだけた日本語で失礼いたします。

http://rubyweekly.com/issues/394rubyweekly.com

Highlights

Rails 5.2 Released

Rails 5.2 リリース!Basecamp、Shopify で絶賛稼働中。

  • Active Storage
  • Redis Cache Store
  • HTTP/2 Early Hints
  • Bootsnap
  • CSP 用 DSL
  • Credentials
  • Webpack 3.0 対応

Measuring Branch and Method Coverage in Ruby 2.5

行カバーレッジのみ分析していた Coverage クラスは、Ruby 2.5 でメソッド、ブランチのカバレッジまで分析してくれるようになった。

A Dive into Ruby CVE-2017-17405: Identifying a Vulnerability in Ruby's FTP Implementation

Net::FTP が裏で呼んでいた libcurl 脆弱性の解説。

How to Migrate a Rails App from Heroku to Dokku

Heroku から安いクラウドに移行する手順。Heroku の便利な devops ツールは Dokku に。

Profiling Ruby's Memory Allocation with TCmalloc

Google 製の gperftools スイートの tcmalloc で Rubymalloc プロファイリング。SVG の図で可視化までしてくれる。

Hanami 1.2.0 Released

Hanami 1.2.0 リリース!

  • HTTP/2 Early Hints
  • UJS
  • REPL 付きの開発環境エラーページ
  • CLI フック
  • 外部 gem から操作可能なプロエクトレベルの Rack ミドルウェア
  • Hanami::Repository でカスタムの書き込みコマンドが定義可能に

Articles & Opinion

Interactive Debug Sessions in RSpec with Capybara

Launchy gem + binding.pry で Capybara のテストをデバッグする便利ヘルパー。

Add SMS Notifications to Your Rails App Using Twilio

Twilio で Rails アプリ発 SMS 通知機能実装。

面白いと思ったのはそもそもの課題。ニューヨークは道路掃除のため、駐車が許可されている路上スペースが定期的に変わる。変わったタイミングの通知が欲しかったらしい。車を移動させて罰金から逃れるように。

Adding Bash Completion to 'db:migrate:down'

migration のバージョン番号を補完してくれる .bash_profile 用スクリプト

5 Commercial Use Cases Continue to Prove the Value of Rails

意外と Rails だった 5 サイト。

Do You Really Need WebSockets?

複雑な WebSocket しかないと思われがちリアルタイム通信だが、サーバからの一方的なプッシュだけなら、比較的シンプルServer-Sent Events で十分。

  • HTML5 標準
  • RailsSinatra、Roda ではサポートされてる
  • 再接続機能完備
  • デメリットは、クライアント切断検知機能がない

ポーリングとも比較している。

豆知識:Facebook Messenger (ブラウザー版)は意外とポーリングで実装されている。

Code, Tools & Demos

sidekiq_profiling_middleware: A Tool for Profiling Sidekiq

stackprof または memory_profiler で Sidekiq をプロファイリングしてくれるミドルウェア gem。ダンプは S3 にエクスポート可能。

qo: Pattern Matching and Fluent Querying in Ruby

実験的なパターンマッチング gem。

The Ultimate Guide to Ruby Timeouts: Timeouts for Popular Ruby Gems

人気 gem のタイムアウト設定方法まとめ。

mysql2: A Modern, Simple and Fast MySQL Library

mysql2 gem は v0.5 リリースで Ruby 2.0+、MySQL 5.5+ 以外対応しなくなった。