Gitbookのバグを見つけてPull Requestを送った話
そこまでクリティカルなものではないですが、Gitbookでバグを見つけてissueとpull requestを送ったので流れを書きます。
遭遇したバグ
IEブラウザを使ってgit buildで生成した_book/index.htmlをローカルファイルとして開いた場合にgitbookのサイドメニューが表示されないというエラーでした。
1 2 |
SCRIPT5007: Unable to get property ':sidebar' of undefined or null reference app.js (24802,9) |
原因
IEはjavascriptのlocalStorage機能をローカルファイルで実行することができないようです。そのためlocalStorage[key]という配列を参照しようとした時に、localStorageがそもそもundefinedのためエラーとなっていました。このエラーでjavascriptが中断するとサイドメニューが表示されなくなってしまうようです。
1 2 3 4 5 6 7 8 9 10 11 |
// Read a value from localstorage get: function(key, def) { key = baseKey+':'+key; if (localStorage[key] === undefined) return def; try { var v = JSON.parse(localStorage[key]); return v == null ? def : v;; } catch(err) { return localStorage[key] || def; } }, |
解決方法
localStorage自体の存在もチェックするように修正しました。localStorageが使えなくてもサイドメニューは表示されるようになりました。
1 2 3 4 5 6 7 8 9 10 11 |
// Read a value from localstorage get: function(key, def) { key = baseKey+':'+key; if (localStorage === undefined || localStorage[key] === undefined) return def; try { var v = JSON.parse(localStorage[key]); return v == null ? def : v;; } catch(err) { return localStorage[key] || def; } }, |
issueとpull requestの作成
まずはissueを作成。issueとは「重要事項、問題」という意味です。バグを報告する場合はここに
- どういった環境で(背景)
- どういった動作を行った場合
- 何が起こったのか(何が問題なのか)
- (あれば)解決方法
あたりを書いておくことが重要です。以下は自分が作成したissue
https://github.com/GitbookIO/theme-default/issues/1
以下は自分が作成したpull request。issueにほぼほぼ書ききったので、コメントはissueを参照しているのみです。
https://github.com/GitbookIO/theme-default/pull/2
結果
無事Pull Requestが通りました。今後リリース予定のGitbook 3.x.x系で反映されるようです。最近はGitbookに注目しているので今後もゆるく支援していきたいと思います。