More Related Content
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book RubyではじめるIoT(Wakayama.rb活動報告) What's hot (20)
たのしいかたつむり講座 in 自宅ラックカレー部 2.0 初心から一週間で作ってみた Kinesis Client Library for Go Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする Mrubyについて 第16回 岡山ruby, ruby on rails勉強会 Ruby programmer silverの取得に向けて Cocolumberjackの使い方 Ios lt 20140327 Mongo db as_a_building_block レガシー環境で個人ベースでなんとか頑張るDVCS(Git)運用 Viewers also liked (9)
RSpec Performance Turning Test::Kantan - Perl and Testing How to Begin to Develop Ruby Core Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう Esoteric, Obfuscated, Artistic Programming in Ruby Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える Ruby and Distributed Storage Systems Perfect Norikra 2nd Season Similar to やさしいGemパッチの作り方 (6)
Bundler kanazawa.rb meetup #2 2012/09/19 私はいかにしてpull request を行ったか - あるいは social development について Rails Controller Fundamentals More from Maki Toshio (11)
自社サービスのAPIをOAuth2対応にして公開した Searched gems which supports only ruby 2.6 ActiveRecordで複雑なクエリを書くのは間違っているのか ファイルシステムのスナップショット機能でバックアップを取得する Cloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the Proxy メール製品を作って気づいたmailライブラリの光と闇について語る Rubyで簡単にremote access apiを実行する Ruby on rails on hudsonの活用事例 やさしいGemパッチの作り方
- 3. とあるmail gemの話
mailライブラリは便利
最小の労力でメールのテキストが作成できる(複雑なRFCの理解も不要)
が、色々便利に気を回しすぎるため、お節介すぎるところもある
Pull Requestの取り込みが遅い(欲しい機能が半年以上前にPRで出ているとかある)
他に選択肢もないので、mailライブラリに手を入れることにした
独自機能追加&Pull Requestに出ている欲しい機能を先行取り込み
1年後に上がったバージョンに追従(2.6.3 → 2.6.6)
変更点多すぎ😱
先行して取り込んだPull Requestがどう取り込まれたのか、よく分からない
- 6. メリット・デメリット
メリット
gemspecのバージョンを変えてspecを走らせるだけでいいので、VerUpが楽
lib以下にはパッチ単位で変更点が並ぶので、機能の着脱が楽
mail_extension.rbでは拡張されるクラス単位で並ぶので、影響範囲が読みやすい
パッチの数は少ないほどいいので、パッチを減らすモチベーションが働く
(Pull Requestを投げて、取り込まれたらExtensionからパッチを外す)
デメリット
すべてprepend/extend/includeで書ききらないといけないので、ちょっと難しい
場合によってはprependの順序も気にする必要がある
元の実装上完全につぶさないといけないメソッドもありうる
(NOTEコメントで注意書きを残しておく)
prepend/extend/includeのオーバーヘッドがちょっと気になる