rastam’s blog

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

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

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

http://rubyweekly.com/issues/402rubyweekly.com

Highlights

Ruby 2.6 Preview 2 Released

Ruby 2.6.0-preview2 リリース。

  • JIT 一部最適化
  • RubyVM::AST 新規追加
  • Kernel#yield_selfthen アライアス
  • 無限 Range (1..)
  • など

Stripe is Building a Ruby Type Checker

Stripe 社が RubyKaigi で発表した、開発中の型チェックツール Sorbet

http.rb is Great and Here's Why

筆者お気に入りの HTTP クライアント http.rb の機能紹介、Net::HTTP との比較。

An Analysis of Memory Bloat in Active Record 5.2

ActiveRecord のメモリ肥大化は、データ型変換の遅延評価でオブジェクト作り過ぎているのが原因。

An Initial Ruby 2.6 Preview 2 Benchmark

Ruby 2.6.0-preview2 ベンチマークRuby 2.5.0 より 17.7% 高速化。

Some Favorite Ruby Community Resources

Ruby ポッドキャスト、ブログ、メルマガまとめ。

Tutorials

Examples of Some 'Hidden Jewels' in Ruby's Standard Library

知られざる Ruby 標準ライブラリ。

  • CLI 引数パース用 GetoptLongOptionParser
  • 簡易 KVS DBM, GDBMSDBM
  • オブジェクト永続化用 PStore
  • Observable
  • DRb
  • TSort
  • Math
  • Abbrev
  • Zlib

Interesting Problems: Mondrian

Ryan Davis 先生が自作 graphics gem でモンドリアン絵画風画像を生成してみた話。

Coding Sidekiq Workers the Right Way

Sidekiq ワーカーを書くルール。

  1. ワーカー内にロジック書くな。
  2. 実行時間の長いワーカー書くな。マスター・スレーブのワーカーに分けよう。
  3. ワーカーをディレクトリ別で整理しよう。
  4. スケジューリングは計画的に。
  5. 定期的に実行時間を監視し、必要に応じてリファクター。

Conditional Execution with a DSL in Ruby

条件分岐をコールバックで書く DSL 案。

Ruby's Redo, Retry, and Next Keywords

redo retry next の紹介と比較。

Using Concurrent Ruby in a Rails App

Concurrent RubyConcurrent::Future で並行処理を実装した経験談。スレッド内例外が気付きにくくてバグの原因になったが、ラッパーで対応した。

Rails 5.2 Adds allow_other_host Option to redirect_back Method

Railsredirect_back メソッドに追加された allow_other_host オプションで、外部サイトへの遷移が制御できるようになった。

Code & Tools

Asynchronize: Easily Make Multiple Methods Asynchronous

メソッドを非同期化(別スレッド実行)するマクロを提供してくれる gem。

DeepPluck: Pluck Attributes From Nested Associations

ネスとされたアソシエーションから一括 pluck してハッシュ返してくれる ActiveRecord 拡張 gem。select での自前より高速!