mail
mail copied to clipboard
Cannot Load Such File mail/indifferent_hash. Maybe zeitwerk?
Just created a new Rails v7.0.4 app and got the latest mail v2.8.0. Seems the new version broke Rails with the following error. If I downgrade to 2.7.1, everything works fine with this new Rails app in production env.
"errorMessage": "cannot load such file -- mail/indifferent_hash",
"errorType": "Init<LoadError>",
"stackTrace": [
"/app/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.6.6/lib/zeitwerk/kernel.rb:38:in `require'",
"/app/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.6.6/lib/zeitwerk/kernel.rb:38:in `require'",
"/app/vendor/bundle/ruby/3.1.0/gems/mail-2.8.0/lib/mail.rb:14:in `<module:Mail>'",
"/app/vendor/bundle/ruby/3.1.0/gems/mail-2.8.0/lib/mail.rb:3:in `<top (required)>'",
"/app/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.6.6/lib/zeitwerk/kernel.rb:38:in `require'",
"/app/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.6.6/lib/zeitwerk/kernel.rb:38:in `require'",
"/app/vendor/bundle/ruby/3.1.0/gems/actionmailer-7.0.4/lib/action_mailer/base.rb:3:in `<top (required)>'",
"/app/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.6.6/lib/zeitwerk/kernel.rb:38:in `require'",
"/app/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.6.6/lib/zeitwerk/kernel.rb:38:in `require'",
"/app/app/mailers/application_mailer.rb:1:in `<top (required)>'",
Same issue :-]
UPDATE
chmod 644 /var/lib/gems/3.0.0/gems/mail-2.8.0/lib/mail/indifferent_hash.rb
chmod 644 /var/lib/gems/3.0.0/gems/mail-2.8.0/lib/mail/fields.rb
chmod 644 /var/lib/gems/3.0.0/gems/mail-2.8.0/lib/mail/elements.rb
Fixed the problem.
Perhaps a gem packing issue? Here is what I see when I fetch and unpack the gem. Seems elements.rb
, fields.rb
, and indifferent_hash.rb
lack some read perms. Could be more in some sub dirs? Maybe a repush to rubygems?
gem fetch mail
gem unpack mail-2.8.0.gem
ls ./mail-2.8.0/
ls ./mail-2.8.0/lib/mail
-rw-r--r-- 1 kencollins staff 3.4K Dec 4 18:09 attachments_list.rb
-rw-r--r-- 1 kencollins staff 9.3K Dec 4 18:09 body.rb
-rw-r--r-- 1 kencollins staff 1.9K Dec 4 18:09 check_delivery_params.rb
-rw-r--r-- 1 kencollins staff 1.7K Dec 4 18:09 configuration.rb
-rw-r--r-- 1 kencollins staff 2.4K Dec 4 18:09 constants.rb
drwxr-xr-x 14 kencollins staff 448B Dec 4 18:09 elements/
-rw-r----- 1 kencollins staff 960B Dec 4 18:09 elements.rb
drwxr-xr-x 10 kencollins staff 320B Dec 4 18:09 encodings/
-rw-r--r-- 1 kencollins staff 9.6K Dec 4 18:09 encodings.rb
-rw-r--r-- 1 kencollins staff 573B Dec 4 18:09 envelope.rb
-rw-r--r-- 1 kencollins staff 8.7K Dec 4 18:09 field.rb
-rw-r--r-- 1 kencollins staff 2.0K Dec 4 18:09 field_list.rb
drwxr-xr-x 41 kencollins staff 1.3K Dec 4 18:09 fields/
-rw-r----- 1 kencollins staff 2.2K Dec 4 18:09 fields.rb
-rw-r--r-- 1 kencollins staff 7.4K Dec 4 18:09 header.rb
-rw-r----- 1 kencollins staff 3.8K Dec 4 18:09 indifferent_hash.rb
-rw-r--r-- 1 kencollins staff 8.2K Dec 4 18:09 mail.rb
drwxr-xr-x 4 kencollins staff 128B Dec 4 18:09 matchers/
-rw-r--r-- 1 kencollins staff 66K Dec 4 18:09 message.rb
drwxr-xr-x 5 kencollins staff 160B Dec 4 18:09 multibyte/
-rw-r--r-- 1 kencollins staff 3.5K Dec 4 18:09 multibyte.rb
drwxr-xr-x 4 kencollins staff 128B Dec 4 18:09 network/
-rw-r--r-- 1 kencollins staff 836B Dec 4 18:09 network.rb
-rw-r--r-- 1 kencollins staff 446B Dec 4 18:09 parser_tools.rb
drwxr-xr-x 34 kencollins staff 1.1K Dec 4 18:09 parsers/
-rw-r--r-- 1 kencollins staff 522B Dec 4 18:09 parsers.rb
-rw-r--r-- 1 kencollins staff 3.1K Dec 4 18:09 part.rb
-rw-r--r-- 1 kencollins staff 3.3K Dec 4 18:09 parts_list.rb
-rw-r--r-- 1 kencollins staff 1.4K Dec 4 18:09 smtp_envelope.rb
-rw-r--r-- 1 kencollins staff 16K Dec 4 18:09 utilities.rb
drwxr-xr-x 3 kencollins staff 96B Dec 4 18:09 values/
-rw-r--r-- 1 kencollins staff 233B Dec 4 18:09 version.rb
-rw-r--r-- 1 kencollins staff 655B Dec 4 18:09 yaml.rb
This seems to be related to #1489
Now that 2.8.0 is released. Maybe time to fix it? How is this gem packaged and pushed to rubygems?
This is a duplicate of #1489 . Maybe this issue should be closed to help keep the list of open issues concise and manageable for the project's maintainers :)