LoginSignup
0
0

Thor 1.3.0 でコマンド名の短縮ができなくなった?

Posted at

本記事は,thor という gem のバージョン 1.3.0(2023-10-19 リリース)の仕様変更でコマンド名の指定の仕方に変化が起こったらしいことについて書く。

詳しく調べていないので,起こった現象だけを書く。

Thor とは

Thor は Rake のように,コマンドラインで行いたいタスクを定義ファイルに記述して実行させることができるもの。

この gem を

gem install thor

で,インストールしておいて,たとえば,

commands.thor
class Text < Thor
  desc "codepoints STRING", "Show codepoints of STRING"
  def codepoints(string)
    puts string.chars.map{ "U+%04X %s" % [_1.ord, _1] }
  end
end

みたいなファイルをどこかに置いておく(拡張子は .thor)。

そして,それを置いたディレクトリー(もしくはその下位ディレクトリーで)

thor text:codepoints 寒い

などと打てば

U+5BD2 寒
U+3044 い

のように,引数として指定した文字列のコードポイントがずらずらっと表示される。

コマンド名の短縮

さきほどの例で,text:codepoints というコマンド名はちょっと長い。

しかし,最後まで書く必要はなく,たとえば

thor text:cod 寒い

みたいに codepoints の部分を途中まで書いただけでも実行できていた。
text の部分は短縮できない)。

短縮したときに他のコマンドと被ってさえいなければよいので,たとえば他に c で始まるコマンドが無いなら

thor text:c 寒い

でも OK。

このへんが Rake より便利なところ。

バージョン 1.3.0 でできなくなった?

2023-10-19 にバージョン 1.3.0 がリリースされたので,さっそく

gem update thor

で最新版を入れた。

すると,この短縮ができなくなった。
試しに

thor text:codepo 寒い

などと打つと,

Could not find command "寒い" in "text" namespace.

とエラーが出る。

ん〜?
codepo ってコマンド見つからん」ならともかく「寒い ってコマンド見つからん」と言っている。
むちゃくちゃ変。

コマンド名を全部書けば今までどおりに動作する。

また,バージョン 1.3.0 をアンインストールして,以前のバージョン(一つ前は 1.2.2)に戻しても今までどおりに動作した。

おわりに

なんでこうなったのかよく分からない。

1.3.0 のリリースノートみたいなもの を見ても,それらしい記述が見つからない。
(英語ができないから見つけられないだけかもしれないが)

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