rastam’s blog

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

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

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

http://rubyweekly.com/issues/377rubyweekly.com

Highlights

Rails 5.2.0 Beta Released

Rails 5.2.0 βリリース。

  • ActiveStorage でファイルアップロード
  • Redis Cache Store
  • HTTP/2 Early Hints 対応
  • Bootsnap でブート時間半減
  • Content Security Policy 定義用 DSL
  • secrets を deprecate、Credentials 新規追加
  • Webpacker 3.0

Talking to ActionCable without Rails

Rails ヘルパー使わずに素 JavaScript でクライアント側 ActionCable を実装してみた Thoughtbot 社。

'String#delete_prefix' and 'delete_suffix' Methods in Ruby 2.5

文末文字削除用 String#chompRuby 2.5 から #delete_suffix アライアス追加。さらに文頭の文字削除用 #delete_prefix が新規追加。

Zero Downtime Rebranding with Heroku

Heroku 上 Rails アプリをゼロダウンタイムでドメイン移行。

  1. 複数ドメイン
    • DNS ホストで ALIAS 設定
    • heroku domain:add
  2. 複数 SSL 証明書
    • Heroku SSL Endpoint を使ってる場合、Heroku SSL にアップグレード
  3. SAN 証明書発行
    • heroku certs:add
  4. rack-rewrite gem のミドルウェア
  5. 外部 API コールバック用エンドポイント
    • callbacks サブドメに移行
    • 旧コールバックを rewrite
  6. Evil Martians 自家製 RackRewriteConfig で環境別設定(原文コード参照)

Removing Business Logic From Controllers

コントローラテストを deprecate した Rails 5 に備えて、ロジックをモデルなどのオブジェクトに抽出するメリット。例に挙げたのは、パラメータ有無で挙動が変わったコントローラのビジネスロジック

A Written Retrospective of RubyConf 2017

RubyConf 2017 1 日目の振り返り。

  • Matz のキーノート
    • 初回参加者が意外と多くて Ruby の未来が有望的
    • なるべく互換性を保ちながらリリースしていく
    • コミュニティを交えて相談していきたい
  • There Are No Rules in Ruby (Max Jacobson)
    • Ruby の柔軟性のデメリット
  • Finding Beauty in the Mundane (Megan Tiu)
    • しんどい仕事でも接し方によって楽しめる方法
  • Augmenting Human Decision Making with Data Science (Kelsey Pedersen)
  • Growing Old (Chad Fowler)
    • レガシーだからって悪いとは限らない

News

RubyGems 2.7.3 Released

RubyGems 2.7.3 リリース。

The 10 All-Time Most Downloaded Ruby Gems

最もダウンロードされてる gem トップ 10。

  1. bundler
  2. multi_json
  3. rake
  4. rack
  5. json
  6. mime-types
  7. activesupport
  8. thor
  9. i18n
  10. diff-lcs

Rails は 22 位。

Tutorial

How to Run Sidekiq on a Heroku Free Dyno with Puma

Heroku の無料 Dyno で Sidekiq を動かすための Puma 設定。

Clean HTTP OPTIONS Handling in Rails

Rails API に OPTIONS の HTTP メソッド対応を追加した Kollegorna 社。結果的に rails_http_options gem も作った。

Instrumenting Ruby Methods

NewRelic などのメソッド計測コードが散らばらないように prepend する方法。

How to Add Comments to Database Columns from ActiveRecord

Choosing UUIDs for Model IDs in Rails with Postgres

PostgreSQL の UUID を Rails アプリで採用する手順。

Rails on Docker: Using Yarn to Manage Frontend Assets

Rails アプリの Docker イメージに Yarn を追加する手順。

How Does Bitcoin Force Consensus Among Byzantine Generals?

Bitcoin を解説した Fabio Akita 先生。

Code

ComfortableMexicanSofa 2.0: A Rails 5.2+ CMS Engine

CMSRails 5.2 エンジン。

ElasticNotifier: Send Error Notifications to an Elasticsearch Server

エラー通知を ElasticSearch サーバに送ってくれる ElasticNotifier gem。