のらブログ

sadanoraが思ったことを書きます

るりまにリンク切れを発見したのでPRを送ってみた

この記事は「フィヨルドブートキャンプ Part 1 Advent Calendar 2023」21日目の記事です。 adventar.org

Part2はこちら adventar.org

昨日はPart1はYuki WatanabeさんのRails7 のフロントエンドライブラリ「Hotwire」を使ってみた感想と開発でお世話になったページをまとめました、Part2はumizaruさんのチェリー本の輪読会を終えてでした。

はじめに

ある日Rubyリファレンスマニュアル(るりま)を読んでいたところ、Kernel.#Integerのページ内にリンク切れを発見しました。

module Kernel (Ruby 3.2 リファレンスマニュアル)

FixnumとBignumのリンクが切れていてリンク先が404だった。
これはコントリビュートチャンスかも?ということで、るりまにPRを送ってみたのでPRを送るまでの流れを書きます。

Issueを立てる

前述の通りKernel.#Integerのページ内のFixnumとBignumのリンクが切れているのに気づいたので、次にこのリンク切れに関するIssueやPRが立っていないかるりまのリポジトリを確認しました。

みたところ該当するようなPRもIssueも無さそうだったので、自分でIssueを立てることにしました。

立てたIssue

Kernel.#IntegerのFixnumとBignumのリンクが切れている · Issue #2854 · rurema/doctree

過去のIssueとPRを参考にする

IssueとPRに目を通している中で、別ページのFixnumとBignumのリンク切れを修正しているPRをいくつか発見しました。

それらに目を通すことで、以下のようなことがわかり、とても参考になりました。

  1. FixnumとBignumはRuby3.2で削除されている
  2. 1が分かったことで、「Ruby3.1まではFixnumとBignumのリンクを表示し、Ruby3.2からは表示しない」という具体的な修正方法がわかる
  3. バージョンによって違う書き方をするやり方がわかる
    1. リファレンスマニュアルの書式はReferenceManualFormatDigestに載っていますが、@untilなどを使ってバージョンごとの説明を記述している実例が確認できてよかったです。

対象ファイルの修正と表示確認、PR作成

まず本家のリポジトリからフォークして、フォークしたリポジトリをクローンしたら、ブランチを切って対象ファイルの修正をします。

こんな感じでFixnumとBignumのリンクはRuby3.2未満の場合に表示するようにしました。

- 引数を整数([[c:Fixnum]],[[c:Bignum]])に変換した結果を返します。
+ 引数を整数
+ #@until 3.2
+ ([[c:Fixnum]],[[c:Bignum]])
+ #@end
+ に変換した結果を返します。

次にこの変更が意図した通りの表示になっているか確認したいですが、確認するためにはbitclustというgemが必要です。

ということでbitclustをインストールします。*1

$ gem install bitclust-core bitclust-dev refe2
$ bitclust setup

次にbitclustを使ってHTMLファイルを生成します。

自分が確認したいKernelモジュールのページは以下のようなコマンドで生成できました。

// Ruby3.1用のhtml
$ bitclust htmlfile ./refm/api/src/_builtin/Kernel --target=Kernel --ruby=3.1  > ファイル名
// Ruby3.2用のhtml
$ bitclust htmlfile ./refm/api/src/_builtin/Kernel --target=Kernel --ruby=3.2  > ファイル名

生成されたHTMLファイルをブラウザで開いて確認します。

Ruby3.1。FixnumとBignumのリンクが表示されている
Ruby3.2。リンクが表示されていない。

問題なさそうなので、pushしてフォークした自分のリポジトリから本家にPRを送りました。

作ったPR

Kernel.#IntegerのFixnumとBignumのリンク切れを修正した

まとめ

以前なら「るりまにPRを送るなんて...」と尻込みしていたと思いますが、9月のOSS Gateとフィヨルドブートキャンプのコラボ企画に参加しOSSにPRを送る経験ができたので、今回もやってみようかなと思えました。

今の所できたOSS活動はtypoやリンク切れの修正ですが、もっと色々チャレンジしていけたらなと思います。

感謝の参考

Rubyリファレンスマニュアルを修正する方法 - Eggshell

自分はほぼこの記事に倣って作業しただけです🙏

フォークからPR作成までの流れを画像付きで説明してくださっています。

明日のアドベントカレンダー

明日はhondaさん(Part1)、Yuukagoさん(Part2)です!

*1:Gemfileにbitclust-core、bitclust-dev、refe2が記載されていたので$ bundle installでも良さそう。