Ruby コミュニティにコードを contribute する方法
うっかり Ruby の標準添付ライブラリに好ましくないと思われる挙動を見つけてしまって、直してはみたもののその修正をどうやって contribute すればよいのかと思って調べてみたけどよくわからなかったので http://www.ruby-lang.org/en/ の説明をいろいろ漁ってこんな感じかな〜と思った手順をまとめてみます。(日本語 http://www.ruby-lang.org/ja/ の方は英語版と若干異なる内容だったのと、なんとなく情報量少なめだったので英語の方を参考にしました。ただ、英語のほうも svn 主体の説明になっていてなんとなく outdated な感じでした)
私がやってみたのは以下のような手順です。
- Ruby のコードに修正したいバグ(もしくは追加したい機能)を見つける
- Redmine の ruby-trunk プロジェクト (https://bugs.ruby-lang.org/projects/ruby-trunk) に報告する(新しいチケットを作る)
- GitHub で ruby/ruby (https://github.com/ruby/ruby) を fork する
- fork したリポジトリをローカルに clone してきて trunk ブランチを checkout する
- バグを修正する(もしくは機能を追加する)
- もちろんテストも書く
- GitHub でプルリクする ← イマココ
まだ PR が取り込まれたわけではないのでこの手順で合ってるかどうかよくわかりません。
今後も継続的に開発に参加するつもりならメーリングリストを購読したりすべきなんでしょうけど、普段は Ruby のユーザで、自分のプログラムのバグかと思って問題を追いかけていたらたまたま Ruby 本体のバグにあたってしまった、というような状況の私みたいな人には、ML に参加して云々というのはちょっと敷居が高いですね。
Redmine で Issue 発行して GitHub でプルリクするだけなら、私のような一見さんでも気軽に貢献できるというものです。
ただ、自分の修正をテストするときに、ローカルで変更した Ruby を使ってテストを走らせるようにする方法がよくわかりませんでした。
なので私は仕方が無いので ~/.rbenv/ の下の当該 .rb ファイルを直接書き換えたりしてテストしました・・・
単一の .rb ファイルで変更はそれほど多くなかったからそのような方法でなんとかなったものの、.c とかを修正したらどうやってテストすればいいのでしょうかね。
そのあたりの情報、どなたか教えてプリーズ
[追記]
多分、以下のような方法で自前 Ruby を rbenv に取り込んで、そいつを使ってデバッグしたりすると既存の環境を壊したりしなくて済むので良い気がします。