Ruby Weekly #491: 日本語サマリー
Highlights
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 |
秘密鍵へのパス |
Ruby 2.7 のパターンマッチの新しく公開されたドキュメンテーション。
コロナのせいで 9 月まで延期となった RubyKaigi。
EC サイト用 Rails エンジン。モバイル端末に最適化した UI をリリースした。
Articles & Tutorials
AWS Lambda で Hanami::API を稼働する方法。
- Lambda 関数が Rack 環境を用意するように書く。
- bundler で依存してる gem を vendor して、ソースと一緒に zip。
Rails アプリでサブドメ対応。
- routes は
constraints
ブロックのsubdomain
引数で指定。 - サブドメの階層が深い場合は
config.action_dispatch.tld_length
要指定。 - 全サブドメでセッションを共有する場合は
Rails.application.config.session_store
でdomain: :all
指定。 - テストは
host!
ヘルパーでサブドメ切り替え。 - 手元は /etc/hosts ファイル編集 or pow サーバ採用。
罠
- 開発環境から外部 API 叩いてる場合は、
.local
の TLD を許容しない API が多々ある。 - ロードバランサー用 healthcheck エンドポイントはサブドメ付けれない。
- サブドメのない
root
パスに依存してる gem がそこそこある。
Unix タイムスタンプを Time
オブジェクトに変換してくれる Time.at
。時間帯は in
引数で指定。
大量の ActiveJob が同時に retry されることを防ぐために、retry 間隔をランダム化する Rails 6 の jitter
機能。
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
ActiveRecord や PORO の集合体をスプレッドシートや CSV に変換してくれる gem。
Chaskiq: An Open Source Conversational Marketing Alternative
CS チャット用ウィジェット。管理画面は Rails アプリ。Intercom と違って OSS で自己ホスティングできる。
Redis をテストでスタブしてくれる gem。
ヨーロッパの VAT 番号 validation 用 gem。