二段階認証をしていたら bundle exec rake release が動かなかった

at 2019-07-26 08:32 (UTC)

拙作の gem である rails-flog に対して Add ignore_query configuration by mothule · Pull Request #23 · pinzolo/rails-flog というプルリクが来た。

まあ、そういう用途もあるよねと思って取り込んで、ついでに対称性のために ignore_params オプションも追加した。

んでさあリリースするぞとおもむろに bundle exec rake release したら以下のようなエラーで動かない。

rails-flog 1.6.0 built to pkg/rails-flog-1.6.0.gem.
Tagged v1.6.0.
Pushed git commits and tags.
rake aborted!
Pushing gem to https://rubygems.org...
You have enabled multifactor authentication but no OTP code provided. Please fill it and retry.
/Users/pinzolo/dev/github.com/pinzolo/rails-flog/vendor/bundle/ruby/2.5.0/gems/rake-12.3.2/exe/rake:27:in `<top (required)>'
/Users/pinzolo/.anyenv/envs/rbenv/versions/2.5.1/bin/bundle:23:in `load'
/Users/pinzolo/.anyenv/envs/rbenv/versions/2.5.1/bin/bundle:23:in `<main>'
Tasks: TOP => release => release:rubygem_push
(See full trace by running task with --trace)

たしかに二段階認証設定したなと思って調べてみたら gem signin しろみたいな情報が出てきた→Using multifactor authentication in command line - RubyGems Guides

しかし、gem signin してもうんともすんとも言わないし、gem signin --otp なんてしたらそんなオプション無いという。

ということはコマンドのバージョンかとおもってとりあえず 2.5.1 のままだったローカルの ruby バージョンを上げることにした。

とはいえ rbenv global 2.6.0 で終わりなんだけど。

この状態で bundle exec rake release したら今度は下記の状態で止まった。

rails-flog 1.6.0 built to pkg/rails-flog-1.6.0.gem.
Tagged v1.6.0.

調べてみたらこの状態で OTP を入力して enter すればよいらしい。実際それで push できた。

しかし

rails-flog 1.6.0 built to pkg/rails-flog-1.6.0.gem.
Tagged v1.6.0.
OTP: <カーソルチカチカ>

ってやってくれた方が嬉しいな。ちょっと、いやかなりわかりづらいと思う。

ちなみに 2.6.0 の時の gem -v の結果は 3.0.1 で 2.5.1 の時は 2.7.6 だった。gem 3.0 以上じゃないといけないのかな?

というわけで rails-flog 1.6.0 なんとかリリースしました。