0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ruby 4.0 で Thor タスクが死んだ話

Posted at

コマンドラインでやる「いつも処理」を Thor タスクとして定義しておくと便利だ。

私の場合,そういったたくさんの「いつもやる処理」のひとつに,「Ruby の公式リファレンスマニュアルをブラウザーで開く」というのがある。

たとえば,

thor ruby:doc String

と打てば,リファレンスの class String がパッと開く。
また,

thor ruby:doc String#each_byte

なら,上記ページの each_byte メソッドのところに飛ぶ。

ところが,Ruby 4.0.0 のプレビュー版を入れていろいろやっているとき,いつものように上記コマンドを打つとエラーが出た。

ええっ??? あっ,そうか!
Thor タスクの定義で

class Ruby < Thor

end

みたいに書いてたんだった……。
Ruby 4.0 で Ruby というモジュールが導入されたのでそれと名前がかぶってるんだ。

Ruby 4.0.0 のリリースノートには

このモジュールは Ruby 3.4 で予約されていましたが

とあるが,プレビュー版が出るまでそんなの知らなかったぞ。

予約ってどういう意味だ?
Ruby 3.4.8 で,

Ruby = 3

と書いても,エラーや警告は出ないが?

それはともかく,解決法は簡単で,

class RubyTask < Thor
  namespace :ruby

end

などとすればよろしい。
これだけの修正で,いままでどおりに使える。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?