Rails の issue を解決するまでの手順とOSS初心者でもできること (original) (raw)
この広告は、90日以上更新していないブログに表示しています。
突然ですが、あなたはRailsのissueとプルリクがいくつあるかご存知でしょうか?
2019年10月17日現在、それぞれ issue 384 / PR 803 になります。
多いですよね...。
個人的に、最近このissueを減らすのを少しでも手伝えないものかとissueにコメントしてみたり、パッチを書いたりしてるけど、 なかなか大変なので、コントリビューターの敷居を下げるためにブログ記事を書いてみました。
コントリビュータが増えれば、きっとissueも減るはず!!
Railsガイドに丁寧な説明が記載されているので、読んだ事がない方は一読するのをオススメします。
この記事で紹介すること
Rails への貢献方法は色々なものがあります。
- 新機能の追加
- バグの報告
- バグを修正するプルリク作成
- ドキュメントの追加や修正
- ...etc
このなかのうち バグの修正 に絞って紹介します。
バグ修正を行うときの手順
- 報告されたissueを読んで、問題を手元で再現させる
- 原因を突き止める
- コードを直す
- 動作確認をする
- プルリクを投げる
こんな感じでしょうか。 まぁ、仕事でバグを直すときと同じですね。
1. 問題を再現する
Rails の issue には問題を再現させるためのバグテンプレートが存在します。
- issue に再現手順、再現スクリプトがない場合
- バグテンプレートを使って書けないか issue の作者に依頼する
- 例: rails/rails#36413
- issue に再現スクリプトがある場合
- 自分の環境でも再現するか確認してみる
2. 原因を調べる
問題が再現できたら、原因であるコードを調べます。
- issue に再現スクリプトがあり、リグレッション*1の場合
git bisect
で原因コミットを探す- 例: rails/rails#37446
git bisect
の使い方は Railsのissueに書いてある再現コードを使ってgit bisectする方法 を参考に
- issue に再現スクリプトはないけど、再現手順がある場合
- サンプルアプリのリポジトリを用意してあるケースがある
- 例: rails/rails#37410
3. コードを直す
問題を再現させるテストコードを書いて、テストが失敗することを確認してから、コードを直します。 (例: rails/rails#37457) 他のテストコードを参考にすれば、意外とテストは書けます。
あと、Rails では minitest が使われているので、普段 RSpec を使っている人はテストの実行方法が分からないかも。
などを参考にしてみてください。
4. 動作確認
ローカルで適当にRailsアプリを作り、修正した Rails のコードを使うように Gemfile を直します。
- gem "rails", "~> 6.0.0"
- gem "rails", path: "~/.ghq/github.com/rails/rails"
path
でディレクトリを指定すると、そのディレクトリの gem を使えます。
あとは rails console
や rails server
などで動作確認をします。
5. プルリクを投げる
コミットログとプルリクに変更理由をちゃんと書く必要があります。
英語で変更理由を書くのはとても大変なので、いくつか英文を書くテクニックを紹介します。
- 変更理由を日本語で書いて Google翻訳 でざっくり翻訳する
- 簡単な英文(=自分が読める英文)になるように調整する
- 他のバグ修正のプルリクを読んで、似たような英語で書き直せないか考える
git log --no-merges --author=kamipo
でkamipoさんのコミットログを読んで参考にする
Rails のコミットログやプルリクには参考になる英文がたくさんあるので、うまく探してパクってください。
変更内容に自信がなかったり、不安な場合
都内に住んでいる方であれば、Asakusa.rb や永和さんのOSSパッチ会などに参加して、プルリクの内容について相談するという方法があります。
OSS初心者向け
ここまでで issue を解決する方法を紹介しましたが、「ハードルが高い」と思った人向けにいくつか初心者向けにできることを紹介します。
- https://github.com/rails/rails/issues の中から、興味のあるタイトルを読んでみる
- issue を全部読むのは大変なので、例えば ActiveRecord や ActiveStorage など絞って読むと良い
- 自分の環境で問題を再現させてみる
- Close した issue とプルリクを読んで、コードの直し方を学ぶ
- 問題と解答例みたいなものなので、読むだけでも勉強になります
最後に Rails Contributors の紹介
Railsで1回でもプルリクがマージされると Rails Contributors に名前が載ります。
まだランキングに名前が載っていない方は、これに載ることを目標に Rails の issue を眺めてみてはどうでしょう?
意外と簡単に直せるバグが見つかるかもしれませんよ。
*1:過去のバージョンでは動いていて、最新のバージョンでバグっているケース