Project

General

Profile

バグ #1412

plugin/uitranslator/Gemfile が irb >=1.2.0 を要求している

Added by Izumi Tsutsui 11 months ago. Updated 11 months ago.

Status:
終了
Priority:
通常
Assignee:
Target version:
プラグイン名:
uitranslator
ブランチ:
topic/1412-delete-irb-dependency
クラッシュする:
No

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以上にしといてくれると良かったのですけどねぇ。

#1

Updated by toshi_a 初音 11 months ago

わざわざirbを要求しているのは、gettextがirbで定義されているクラスに依存しているからです。
このため、irbがバンドルされなくなったRuby 2.6あたりから、Gemfileに明示的に指定しなければクラッシュするようになりました(チケットが見当たらねえ)。

>= 1.2.0 を要求しているのは、バージョンを低く固定する必要がないgemについては、指定をこのようにしているだけです。

0.9.6に下げるのは問題ないですが、バージョンを上げても良くなる条件がないので躊躇しますね。一方、gettextも改修される見込みがないので、古いirbで固定しておいてもよいのかも、という気持ちもあります。

#2

Updated by Izumi Tsutsui 11 months ago

バージョン履歴を見るのをサボってますが、Twitterでこんな話出てますね……

https://twitter.com/watson1978/status/1210156831001047041

昨日 Ruby 2.7 がリリースされたけど、もうすでに irb 関連のバグが 5 件くらい報告されているので、いろいろさわってほしいとのこと。不具合を「Ruby irb」あたりのワードをつけて雑にツイートするだけでエゴサーチしてくれるらしいw #asakusarb

#3

Updated by Izumi Tsutsui 11 months ago

toshi_a 初音 さんは書きました:

gettextがirbで定義されているクラスに依存しているからです。

これ、具体的にどれかってわかりますか?
pkgsrc の ruby 担当の人も なんで? という反応だったので。

#4

Updated by Izumi Tsutsui 11 months 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の場合はどうするんだ、という話はありますが……。

#5

Updated by toshi_a 初音 11 months ago

なるほど。俺の記憶では、Ruby 2.5か2.6あたりで起動するとmikutterが直ちにクラッシュし、原因を調べたところirbがバンドルされなくなり、明示的にGemfileに書かなくてはいけなくなったのでそうした、ということです。コミットログを見たところ、チケットを作らずに対応してしまっていたようです。

現在Ruby2.6.5でGemfile.lockからirbが消えるような状態にしても何故か起動しているので、記憶違いかもしれませんね。実家なのでRuby 2.5で検証するのやりたくないのですが、もし2.5系でもirbをGemfileに書かなくても問題なく起動と海外のロケールでの表示ができるのであれば、消してしまって構いませんよ。

#6

Updated by toshi_a 初音 11 months ago

俺の記憶の方が間違ってるのはほぼ確実なのであまり意味はないですが、Archではなく、Ruby自体の変更によって全ての環境で発生する問題だと記憶してます。
なので、Archで試す必要はないです。

#7

Updated by Izumi Tsutsui 11 months ago

https://twitter.com/nalsh/status/1211971184021008385
https://github.com/ruby-gettext/gettext/issues/64

gettext 自身の問題に加えて、 Arch固有の問題もあるっぽいです。
  • 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 付け)

#8

Updated by toshi_a 初音 11 months ago

gettext が irb 内部のパーサー実装に依存していた

#1412-note1 のとおりですね。

ruby 2.7 に bundle される irb 1.2 では irb パーサーの実装が変わっている

これは知らなかった問題です。issueも見ましたが、本件では一旦考えなくてよいのでは?

Arch は irb の最新版を利用するようになっていた?

Archは常に最新版を使うようになっているはずです。
しかし、それはArchの問題なので、mikutterでは感知しません。

#9

Updated by toshi_a 初音 11 months ago

  • Status changed from 分類待ち to 実装待ち
#10

Updated by toshi_a 初音 11 months ago

  • Status changed from 実装待ち to レビュー待ち
  • Assignee set to Izumi Tsutsui
  • ブランチ set to topic/1412-delete-irb-dependency

議論の余地がもうないので、修正しました。これで起動できることをつついさんに確認してもらえたらmergeします。

#11

Updated by Izumi Tsutsui 11 months ago

  • Status changed from レビュー待ち to マージ待ち

source:topic/1412-delete-irb-dependency と DISABLE_BUNDLE_SETUP=1 の組み合わせで
pkgsrc の ruby 2.6 で起動できました。
ありがとうございます。

#12

Updated by toshi_a 初音 11 months ago

  • Status changed from マージ待ち to 終了

merged.

Also available in: Atom PDF