I’ve used a gem: mini_exiftool-2.11.0
in my rails app with bundler. And it manually require 'rational'
in a file. Maybe it is for early ruby version when rational
needed to be required for use. Now we know it is a part of the core. But it causes a loadError:
/Users/57block/.rbenv/versions/3.2.2/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:39:in `require': cannot load such file -- rational (LoadError)
from <internal:/Users/57block/.rbenv/versions/3.2.2/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:39:in `require'
from /Users/57block/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/zeitwerk-2.6.17/lib/zeitwerk/kernel.rb:34:in `require'
from /Users/57block/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/mini_exiftool-2.11.0/lib/mini_exiftool.rb:21:in `<top (required)>'
from <internal:/Users/57block/.rbenv/versions/3.2.2/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:39:in `require'
from <internal:/Users/57block/.rbenv/versions/3.2.2/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:39:in `require'
from /Users/57block/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/zeitwerk-2.6.17/lib/zeitwerk/kernel.rb:34:in `require'
from /Users/57block/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/mini_exiftool_vendored-9.2.7.v1/lib/mini_exiftool_vendored.rb:3:in `<top (required)>'
from /Users/57block/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/zeitwerk-2.6.17/lib/zeitwerk/kernel.rb:34:in `require'
from /Users/57block/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/zeitwerk-2.6.17/lib/zeitwerk/kernel.rb:34:in `require'
from /Users/57block/.rbenv/versions/3.2.2/lib/ruby/3.2.0/bundler/runtime.rb:60:in `block (2 levels) in require'
from /Users/57block/.rbenv/versions/3.2.2/lib/ruby/3.2.0/bundler/runtime.rb:55:in `each'
from /Users/57block/.rbenv/versions/3.2.2/lib/ruby/3.2.0/bundler/runtime.rb:55:in `block in require'
from /Users/57block/.rbenv/versions/3.2.2/lib/ruby/3.2.0/bundler/runtime.rb:44:in `each'
from /Users/57block/.rbenv/versions/3.2.2/lib/ruby/3.2.0/bundler/runtime.rb:44:in `require'
from /Users/57block/.rbenv/versions/3.2.2/lib/ruby/3.2.0/bundler.rb:196:in `require'
from /Users/57block/work/hobnob-web/config/application.rb:10:in `<top (required)>'
And This error should not be occurring because requiring it in irb just returns false, not eror:
~/work/hobnob-web [tom/ruby-3] $ irb
irb(main):001> require 'rational'
=> false
irb(main):002>
I don’t know why the same require behaves differently and how to fix it.
ruby version: 3.2.2
rails version: 7.2
3