whiteleaf7 / narou

Narou.rb - 小説家になろうのダウンローダ&縦書き整形&管理アプリ。Kindle(などの電子書籍端末)でなろうを読む場合に超便利です!
Other
483 stars 56 forks source link

Ruby 2.3.0~2.4.10 では動かない #390

Closed topstone closed 2 years ago

topstone commented 2 years ago

いつもありがたく利用させていただいております。

bundle install で Ruby 2.4.10 に narou.rb を導入しようとしたところ、以下の通り表示されました。

Fetching gem metadata from https://rubygems.org/...........
activesupport-6.1.4.1 requires ruby version >= 2.5.0, which is incompatible with
the current version, ruby 2.4.10p364

Gemfile.lock が阻害している可能性を考え、Gemfile.lock を削除して再度 bundle install したところ、以下の通り表示されました。

Fetching gem metadata from https://rubygems.org/...........
Resolving dependencies...
Bundler found conflicting requirements for the Ruby  version:
  In Gemfile:
    Ruby

    narou was resolved to 3.8.0, which depends on
      Ruby  (>= 2.3.0)

    pry (~> 0.12) was resolved to 0.14.1, which depends on
      Ruby  (>= 1.9.3)

    simplecov (~> 0.20) was resolved to 0.21.2, which depends on
      Ruby  (>= 2.5.0)

つまり、Ruby 2.3.0~2.4.10 に narou.rb を入れることは既に不可能に見えますので、narou.gemspec の gem.required_ruby_version = ">=2.3.0" は 2.5.0 にする方がよいかと思います。

なお、こちらの記事に挙げられているように、 narou.rb には Gemfile.lock を含めない方がよいと思います。(bundle install で利用者の環境を用意するのは Gemfile の役割なので、Gemfile.lock が役立つことはないと思います。Gemfile が許容している環境なのに Gemfile.lock が導入を阻害することはあり得ます。)

whiteleaf7 commented 2 years ago

gem.required_ruby_version = ">=2.3.0" は 2.5.0 にする方がよいかと思います。

スタンス的には 2.7 以上必須ですが、 https://github.com/whiteleaf7/narou/wiki#%E5%BF%85%E9%A0%88%E3%83%84%E3%83%BC%E3%83%AB 古い環境でも動く可能性はあったので、required_ruby_version はあげてませんでした 最近明確に古い環境では動かなくなったのであげた方が良いですね(どこまで動かないのかを調べるのが面倒でした)

narou.rb には Gemfile.lock を含めない方がよいと思います。 bundle install で利用者の環境を用意するのは Gemfile の役割なので、Gemfile.lock が役立つことはないと思います

利用者が bundle install をすることをそもそも想定していません。開発者用です gem 経由でインストールする場合には参照されないので問題ないと思っています

topstone commented 2 years ago

スタンス的には 2.7 以上必須ですが、 https://github.com/whiteleaf7/narou/wiki#%E5%BF%85%E9%A0%88%E3%83%84%E3%83%BC%E3%83%AB 古い環境でも動く可能性はあったので、required_ruby_version はあげてませんでした 最近明確に古い環境では動かなくなったのであげた方が良いですね(どこまで動かないのかを調べるのが面倒でした)

Ruby 2.5.8 で rake spec を実行したところ、以下の通り2件失敗しました。2.6.0 以上に限定してよいかと思います。

Failures:

  1) NovelSetting setting.ini 書き出し関係 読み込んだ設定を setting.ini に書き出せるか
     Failure/Error: result = ERB.new(src, trim_mode: "-").result(_binding)

     TypeError:
       no implicit conversion of Hash into Integer
     # ./lib/template.rb:53:in `block in get'
     # ./lib/template.rb:49:in `each'
     # ./lib/template.rb:49:in `get'
     # ./lib/template.rb:31:in `write'
     # ./lib/novelsetting.rb:144:in `save_settings'
     # ./spec/novelsetting_spec.rb:23:in `block (3 levels) in <top (required)>'

  2) NovelSetting setting.ini 書き出し関係 オリジナル設定も setting.ini に書きだされるか
     Failure/Error: result = ERB.new(src, trim_mode: "-").result(_binding)

     TypeError:
       no implicit conversion of Hash into Integer
     # ./lib/template.rb:53:in `block in get'
     # ./lib/template.rb:49:in `each'
     # ./lib/template.rb:49:in `get'
     # ./lib/template.rb:31:in `write'
     # ./lib/novelsetting.rb:144:in `save_settings'
     # ./spec/novelsetting_spec.rb:29:in `block (3 levels) in <top (required)>'

利用者が bundle install をすることをそもそも想定していません。開発者用です gem 経由でインストールする場合には参照されないので問題ないと思っています

まあ確かに、開発者なら Gemfile.lock を削除すればよいということは知っているので、大きな問題はなさそうですね。