0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

LazyHighChartsにプルリクを送ってマージされた

(この記事は、高専OBOG Advent Calendar 2019の12/5に送った記事です。)

要約

普段使っているgemに、Pull Requestを送って、マージされました。

LazyHighChartsというgemの動きが気に入らなくてモンキーパッチを当てて使っていました。
自分のアプリケーション以外でも役に立つ、gem本体に取り込まれるべき修正だと考えたので、gemのリポジトリにプルリクを送ることにしました。

流れはこんな感じです。

  1. 不具合を見つける
  2. 手元でgemの修正を試す
  3. githubのリポジトリに修正を送る
  4. マージされる

PRがマージされるまで

1. 不具合を見つける

LazyHighChartsは、Highcharts JSというチャートを描画するJavaScriptライブラリを、RailsやSinatraなどのフレームワーク内で簡単に使えるようにするgemです。
詳しい紹介は本家をご覧ください。https://github.com/michelson/lazy_high_charts

RailsでJavaScriptの読み込みにdefer属性を付与した場合、チャートが描画されない、という不具合に遭遇しました。
viewに書き出されたjsを見てみると、どうやらLazyHighChartsがこしらえたjsに問題があるようでした。

2. 手元でgemの修正を試す

手元でgemの修正をためします。

問題になっている箇所を書き出しているModuleを探して、モンキーパッチを当てます。
IntelliJ IDEAだとコードジャンプで該当箇所に飛べるので、すぐにModuleやClassの名前がわかって便利ですね!
モンキーパッチを当てると、問題なくチャートが描画されました。
(しばらくこの状態で本番で使っていました)

次はgemのリポジトリをforkして、gemに修正を加えます。
Gemfileのlazy_high_chartsの取得先をこんな感じにforkしたリポジトリ&ブランチに書き換えて、手元で修正版のgemを試します。

gem 'lazy_high_charts', git: 'git@github.com:kosappi/lazy_high_charts.git', branch: 'use_event_listener'

この修正版も、モンキーパッチのときと同じように、問題なくチャートを描画してくれました。

3. githubのリポジトリに修正を送る

手元で動作確認ができたので、本家にも同じ修正を送ります。
まずはREADME.mdを読んで、どのような流れで修正を提案するのか見てみます。README.md
Contributingを読んでみると、このように書いてあります。

  • Fork the project
  • Do your changes and commit them to your repository
  • Test your changes. We won't accept any untested contributions (except if they're not testable).
  • Create an issue with a link to your commits.

まずは動作確認して、それからissueを作って欲しい、とのことでした。
動作確認は済んでいるので、issueを作ります。
英語は得意ではないので、すでにマージされたPRや、closeされたissueを参考にしつつ、時間をかけて書くことになりました。
作ったissue

1日経つと、メンテナからPRを作って欲しいという旨の返事がありました。
PRを作ります。
作ったPR

PRを作ってしばらくするとCIがコケて赤くなっていました。
specを少し修正するだけで解決したんですが、事前にforkしたリポジトリでもCIを回しておくと、ベターかも知れません。

あとはマージされるのを待ちます。

4. マージされる

PRを出してから1日後、マージされました。
やったね!

感想

RubyやRailsを仕事で触りだして数年になりますが、めちゃくちゃgemを使うわりには、contributeする機会はまったくありませんでした。
タダで使ってばっかりでなんかスマン、という気持ちがありました。
今回、はじめてcontributeすることができて、とてもうれしいです。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?