バグ #1412
closedplugin/uitranslator/Gemfile が irb >=1.2.0 を要求している
Description
バグというより change request ですが
source:plugin/uitranslator/Gemfile で
gem 'irb', '>= 1.2.0', '< 1.3'
が指定されていますが、
ruby 2.5 にバンドルされている irb は 0.9.6
ruby 2.6 にバンドルされている irb は 1.0.0
ruby 2.7 にバンドルされている irb は 1.2.0
rubygems にある最新版の irb は 1.2.1
ということらしいので、 ruby 2.6 以下の状態で mikutter 4.0.0 を起動すると
bundle で irb 1.2.1 を取得する動作になってしまいます。
そもそも irb を明示的に指定する必要があるのかどうかもわかっていませんが
0.9.6 でも許容するようにできないか検討をお願いします。
参考
https://twitter.com/_taca_/status/1209818971739803649
@tsutsuii % uname -sr
NetBSD 9.0_RC1
% irb26
irb(main):001:0> IRB.version
=> "irb 1.0.0 (2018-12-18)"
irb(main):002:0> quit
% irb25
irb(main):001:0> IRB.version
=> "irb 0.9.6(09/06/30)"なので、差し支えなければ0.9.6以上にしといてくれると良かったのですけどねぇ。
Updated by toshi_a 初音 almost 5 years ago
わざわざirbを要求しているのは、gettextがirbで定義されているクラスに依存しているからです。
このため、irbがバンドルされなくなったRuby 2.6あたりから、Gemfileに明示的に指定しなければクラッシュするようになりました(チケットが見当たらねえ)。
>= 1.2.0
を要求しているのは、バージョンを低く固定する必要がないgemについては、指定をこのようにしているだけです。
0.9.6に下げるのは問題ないですが、バージョンを上げても良くなる条件がないので躊躇しますね。一方、gettextも改修される見込みがないので、古いirbで固定しておいてもよいのかも、という気持ちもあります。
Updated by Izumi Tsutsui almost 5 years ago
バージョン履歴を見るのをサボってますが、Twitterでこんな話出てますね……
https://twitter.com/watson1978/status/1210156831001047041
昨日 Ruby 2.7 がリリースされたけど、もうすでに irb 関連のバグが 5 件くらい報告されているので、いろいろさわってほしいとのこと。不具合を「Ruby irb」あたりのワードをつけて雑にツイートするだけでエゴサーチしてくれるらしいw #asakusarb
Updated by Izumi Tsutsui almost 5 years ago
toshi_a 初音 さんは書きました:
gettextがirbで定義されているクラスに依存しているからです。
これ、具体的にどれかってわかりますか?
pkgsrc の ruby 担当の人も なんで? という反応だったので。
Updated by Izumi Tsutsui almost 5 years ago
irb のクラスに依存しているというのはそのとおりとのことでした。
ただ、 Ruby 2.7 でも irb は Ruby 本体にバンドルされているとのこと。
https://twitter.com/_taca_/status/1211178786772832258
https://twitter.com/_taca_/status/1211255513331036163
@tsutsuii Ruby 2.7でもirbはバンドルされています。
Arch Linuxのパッケージシステムの都合ではないでしょうか?
実は Arch だけが irb の最新を使いたいがために Ruby 本体にバンドルされているものを入れていない、
ということは無いでしょうか? だとしても Archの場合はどうするんだ、という話はありますが……。
Updated by toshi_a 初音 almost 5 years ago
なるほど。俺の記憶では、Ruby 2.5か2.6あたりで起動するとmikutterが直ちにクラッシュし、原因を調べたところirbがバンドルされなくなり、明示的にGemfileに書かなくてはいけなくなったのでそうした、ということです。コミットログを見たところ、チケットを作らずに対応してしまっていたようです。
現在Ruby2.6.5でGemfile.lockからirbが消えるような状態にしても何故か起動しているので、記憶違いかもしれませんね。実家なのでRuby 2.5で検証するのやりたくないのですが、もし2.5系でもirbをGemfileに書かなくても問題なく起動と海外のロケールでの表示ができるのであれば、消してしまって構いませんよ。
Updated by toshi_a 初音 almost 5 years ago
俺の記憶の方が間違ってるのはほぼ確実なのであまり意味はないですが、Archではなく、Ruby自体の変更によって全ての環境で発生する問題だと記憶してます。
なので、Archで試す必要はないです。
Updated by Izumi Tsutsui almost 5 years ago
https://twitter.com/nalsh/status/1211971184021008385
https://github.com/ruby-gettext/gettext/issues/64
- gettext が irb 内部のパーサー実装に依存していた
- ruby 2.7 に bundle される irb 1.2 では irb パーサーの実装が変わっている
- Arch は irb の最新版を利用するようになっていた?
Yeah, Arch uses the latest version of IRB. And btw IRB been decoupled from ruby core recently and moved to a separate project.
2.5 のときに問題が起きたのか? というのはこれだけからは読み取れませんが。(上記の issue は 3日前の 12/29 付け)
Updated by toshi_a 初音 almost 5 years ago
gettext が irb 内部のパーサー実装に依存していた
#1412-note1 のとおりですね。
ruby 2.7 に bundle される irb 1.2 では irb パーサーの実装が変わっている
これは知らなかった問題です。issueも見ましたが、本件では一旦考えなくてよいのでは?
Arch は irb の最新版を利用するようになっていた?
Archは常に最新版を使うようになっているはずです。
しかし、それはArchの問題なので、mikutterでは感知しません。
Updated by toshi_a 初音 almost 5 years ago
- Status changed from 実装待ち to レビュー待ち
- Assignee set to Izumi Tsutsui
- ブランチ set to topic/1412-delete-irb-dependency
議論の余地がもうないので、修正しました。これで起動できることをつついさんに確認してもらえたらmergeします。
Updated by Izumi Tsutsui almost 5 years ago
- Status changed from レビュー待ち to マージ待ち
source:topic/1412-delete-irb-dependency と DISABLE_BUNDLE_SETUP=1 の組み合わせで
pkgsrc の ruby 2.6 で起動できました。
ありがとうございます。