rastam on rails

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

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

rubyweekly.com

Highlights

The Art of Writing a Good Ruby Gem Specification

gemspec の書き方。

項目 備考
name gem 名
version ソース内定数で設定することが主流。他 gem が参照できるように。
summary 簡易説明文。10 ワード以下がオススメ。
description 長めな説明文。
author または authors 作成者名
license 何でも OK なら "MIT"。迷ってたら https://choosealicense.com/ を参考に。
email 問い合わせ用メアド
homepage GitHub リポジトリの URL が主流。
metadata.bug_tracker_uri GitHub リポジトリの Issues URL など
metadata.changelog_uri CHANGELOG.md への URL(あれば)
metadata.documentation_uri rubydoc.info などの URL(あれば)
metadata.homepage_uri spec.homepage
metadata.mailing_list_uri メーリスへの URL(あれば)
metadata.source_code_uri GitHub リポジトリの URL など
metadata.wiki_uri GitHub リポジトリWiki URL など
metadata.funding_uri クラウドファンディングサイトの URL など
files テストファイルを外す gem が多い。gem のダウンロードを軽くするために。
test_files オワコン。スキップすることがオススメ。
require_paths %w[lib] が主流。
executables 公開する CLI コマンド名
bindir 公開する CLI コマンド保存先パス。exe がオススメ。bin だと開発環境用コマンドが紛れ込みがち。
extra_rdoc_files ソースないコメント以外の RDoc 生成用ファイル。普段は Dir["README.md", "CHANGELOG.md", "LICENSE.txt"]
rdoc_options RDoc 生成用オプション
required_ruby_version 互換性できてる最古 Ruby バージョン
platform OS など制限する必要がなければ、スキップすることがオススメ。
add_dependency 依存してる外部 gem。バージョンも指定しよう。
add_development_dependency 依存してる開発環境用外部 gem。バージョンも指定しよう。
cert_chain 公開鍵へのパス。certs フォルダー配下が主流。
signing_key 秘密鍵へのパス

Official Docs for Ruby 2.7's Pattern Matching

Ruby 2.7 のパターンマッチの新しく公開されたドキュメンテーション

RubyKaigi 2020 Postponed Due to Coronavirus

コロナのせいで 9 月まで延期となった RubyKaigi。

Spree 4.1: The Rails 6 Based Ecommerce Platform

EC サイト用 Rails エンジン。モバイル端末に最適化した UI をリリースした。

Articles & Tutorials

Using Hanami::API on Amazon AWS Lambda

AWS Lambda で Hanami::API を稼働する方法。

  • Lambda 関数が Rack 環境を用意するように書く。
  • bundler で依存してる gem を vendor して、ソースと一緒に zip。

Building a Rails App That Uses Multiple Subdomains

Rails アプリでサブドメ対応。

  • routes は constraints ブロックの subdomain 引数で指定。
  • サブドメの階層が深い場合は config.action_dispatch.tld_length 要指定。
  • 全サブドメでセッションを共有する場合は Rails.application.config.session_storedomain: :all 指定。
  • テストは host! ヘルパーでサブドメ切り替え。
  • 手元は /etc/hosts ファイル編集 or pow サーバ採用。

  • 開発環境から外部 API 叩いてる場合は、.localTLD を許容しない API が多々ある。
  • ロードバランサー用 healthcheck エンドポイントはサブドメ付けれない。
  • サブドメのない root パスに依存してる gem がそこそこある。

Converting Unix Epoch Timestamps to Ruby Objects

Unix タイムスタンプを Time オブジェクトに変換してくれる Time.at。時間帯は in 引数で指定。

Rails 6 Added 'Jitter' to ActiveJob::Exceptions.retry_on

大量の ActiveJob が同時に retry されることを防ぐために、retry 間隔をランダム化する Rails 6 の jitter 機能。

Faster Excel Parsing in Ruby

Excel スプレッドシートのパース用 gem をベンチマークした結果。xsv gem が最速。

A Secret Weapon For Your Rails Apps? RPC with RabbitMQ and Hutch

マイクロサービス間 RPC を RabbitMQ と Hutch gem で実装してみた話。

  • マイクロサービスは外部から叩かれる必要がなければ、それぞれの REST API や認証周りをわざわざ作る必要がない。
  • バックグラウンドジョブ感覚で社内 RabbitMQ に投げるだけ。
  • RabbitMQ 操作は Hutch が抽象化してくれる。
  • Hutch 自体は RPC 機能がないが、ちょっと書くだけで実装できちゃった。
  • RabbitMQ の amq.rabbitmq.reply-to 擬似キューでレスポンスまで返せちゃう。

Code and Tools

Spreadsheet Architect v4.0.0 Released

ActiveRecord や PORO の集合体をスプレッドシートCSV に変換してくれる gem。

Chaskiq: An Open Source Conversational Marketing Alternative

CS チャット用ウィジェット。管理画面は Rails アプリ。Intercom と違って OSS で自己ホスティングできる。

FakeRedis: An In-Memory Driver for redis-rb

Redis をテストでスタブしてくれる gem。

Valvat 0.9: Validates European VAT Numbers

ヨーロッパの VAT 番号 validation 用 gem。