rastam’s blog

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

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

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

http://rubyweekly.com/issues/390rubyweekly.com

Highlights

Why Won't Bundle Update?

bundle update の謎メッセージ Bundler attempted to update 〇〇〇 but its version stayed the same を調べて解消した話。gem の古いバージョンに依存している gem があることが原因だが、どの gem なのかは bundler だけでは知り得ない。bundler-stats gem で邪魔な gem を特定し、両 gem 一気に bundle update することで解決。この機能はこれから bundle show に入る可能性があるらしい。

We Demand Serverless Ruby

Ruby に対応するように、AWS Lambda や Azure Functions などの FaaS への請願。

Using 'yield_self' for Composable ActiveRecord Relations

yield_self を活かすことで、複雑な ActiveRecord クエリオブジェクトをリファクターした ThoughtBot。

25 Years of Ruby Commits, Visualized

25 年もの Ruby へのコミットを可視化した動画。

An Overview of Ruby GUI Development in 2018

RubyGUI アプリ開発ツールまとめ。

News

Parallel Testing Coming in Rails 6.0

テストの並列実行を Rails 6.0 に追加したプルリクエスト。デフォールトでは、プロセスのフォークで実現しているが、スレッドでの実行も任意で選べる。

Coinbase Funding Ruby Projects with its Open Source Fund

Coinbase OSS 基金は今月 Ruby 関連プロジェクトに献金することになった。補助対象プロジェクトは Ruby Together、RSpec、Rubocop。

Tutorial

Ruby 2.5's New Exception#full_message Method

Ruby 2.5 の Exception#full_message でフォーマットされた例外とバックとレースを取得できるようになった。

The Proxy Pattern Revisited

プロキシデザパタは昔、Ruby では method_missing で実装されていたが、デメリットとしては:

  • プロキシオブジェクトを呼ぶ手間があった
  • パフォーマンスのコストがかかった
  • クラスメソッドまで対応するには別のプロキシオブジェクトが必要になった
  • どんなメソッド呼び出しでも拾ってしまい、責務の範囲が広すぎた

Ruby 2.0 以降は prepend上記問題点解消。

Run Capybara Feature Specs with Selenium and Headless Chrome

CircleCI 2.0 で Chrome Headless + Selenium の Capybara feature spec を実行する手順。おまけに並列実行の CircleCI 設定。

Yes, Ruby 1.9 Can Support TLSv1.2

TLSv1.0、v1.1 が非対応になったせいで、バージョンアップを迫られてきた Ruby 1.9 ユーザだが、それでもバージョンアップがまだできないというユーザ向け一時しのぎの手順。

Tools

Test Kitchen: An Integration Tool for Testing Infrastructure Code

インフラコードのテスト用のテストフレームワーク(ServerSpec など)や実行先(Vagrant、Docker、EC2、GCE、DigitalOcean など)を管理するツール。

Code

FasterPath: Faster Pathname Handling for Ruby with Rust

Rust で Pathname を高速化した FasterPath gem が最近更新されている。

Doorkeeper: An OAuth 2 Provider for Rails and Grape Apps

OAuth 2 用 Rails Engine。

pwned: A Ruby Wrapper for the Pwned Passwords API

パスワード流出確認用 Pwned Passwords APIRuby クライアント。