以前、Action Mailerをカスタマイズしてメール送信をテストしようという記事でActionMailer::Base.register_interceptor
について紹介しました。
その辺りのコードを読んで見るとどうも登録するメソッド(register_*
)は存在するのに、解除するメソッドが存在しないことに気が付きました。
やはり登録するメソッドだけあって解除するメソッドが存在しないというのはバランスが悪いだろうということで、初めてRailsにPRを出すことに挑戦してみました。
台湾に来ておよそ1ヶ月半程が経ち、いよいよ目的であったドラゴンボートの試合が近づいて来てちょっとワクワク気味の旅しているエンジニア三宅です。(恐らく投稿される頃には終わっている&帰国している可能性あり
今日はRailsへの初コミットの様子をお届けしたいと思います。
発見
先の記事で紹介した処理を実装した際に、実は既に一度同じ対応をしたPRがmergeされていたのです。ただこれはあとになってテストにはmochaを使用しないようにということでrevertされてしまったようです。
ということで結局は変更が取り込まれぬまま放置されることとなったのです。
修正
ベースは先のPRで実装されていたので、そちらを参考に元々の修正には含まれていなかったunregister_observer
とunregister_observers
を追加し、いくつかの変更点を調整、テストを追加してPRを作成しました。
PRを作成してものの数分もしないうちにテストの問題点を指摘してくるというツワモノに遭遇しました。
Rubyアソシエーション – Ruby Prize 2015 候補者発表ではRailsのパッチモンスターと評されています。merge commitが含まれているとは言え、今年は既に300を超えるcommitをしています。(おそろしや
兎にも角にもレビューでの指摘事項を修正を反映して再pushしました。
待てど暮らせど
それからドキドキしながらmergeされるのを待っていました。が、待てど暮らせど音沙汰なし。とりあえずのんびり反応を待っていたら、2週間ちょっと過ぎてからmemberの方からLGTMをもらいました。
そこでCHANGELOGを追記してくれないかという指摘があったので、こちらも以前のPRで書かれていた内容をいくつか修正して追記しました。
CHANGELOGの修正をpushすると、今度は別のmemberの方から元々のauthorも書き加えておいてくれと言われたので、自分の名前の前に追記して再度pushしました。
勝手に名前を使っていいのかなぁと思い、とりあえず自分の名前を書いておいたのですが、どうやらそんなことは気にしなくてよかったらしいです。
merge、そして晴れてContributorに
CHANGELOGの修正後、程なくして修正がmergeされて晴れてRailsのContributorとなることができました!(ヤッター
まとめ
今まで長くRailsを使ってきたのですが、初めてRailsにcommitすることができました。
元となったPRの作成日時を見ていただければ、それほど必要とされていないメソッドだったかもしれませんが、それでもRailsを少しでも改善できればという思いでPRを出してmergeされるという経験をできたのは良かったなと思います。
今度は一からRailsの問題に取り組んでPRを出して取り込んでもらえるようにしたいなと思います。
皆さんも臆せず積極的にオープンソースに貢献していきましょう!