2

I've just upgraded to rails 6, and I'm getting the following when running rails app:update

rails aborted!
LoadError: cannot load such file -- zip/zip
/home/ben/code/app/config/application.rb:7:in `<top (required)>'
/home/ben/code/app/Rakefile:5:in `<top (required)>'
bin/rails:4:in `<main>'
(See full trace by running task with --trace)

I've updated all the gems and it's bundling and updating the gems, the gemfile.lock looks OK as well.

Here is the backtrace:

Error:[rake --tasks] rake aborted!
LoadError: cannot load such file -- zip/zip
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bootsnap-1.7.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bootsnap-1.7.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bootsnap-1.7.5/lib/bootsnap/load_path_cache/loaded_features_index.rb:89:in `register'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bootsnap-1.7.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bootsnap-1.7.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:44:in `require'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/activesupport-6.1.3.2/lib/active_support/dependencies.rb:332:in `block in require'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/activesupport-6.1.3.2/lib/active_support/dependencies.rb:299:in `load_dependency'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/activesupport-6.1.3.2/lib/active_support/dependencies.rb:332:in `require'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/axlsx-1.3.6/lib/axlsx.rb:26:in `<top (required)>'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bootsnap-1.7.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bootsnap-1.7.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bootsnap-1.7.5/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bootsnap-1.7.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bootsnap-1.7.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bundler-2.2.19/lib/bundler/runtime.rb:66:in `block (2 levels) in require'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bundler-2.2.19/lib/bundler/runtime.rb:61:in `each'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bundler-2.2.19/lib/bundler/runtime.rb:61:in `block in require'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bundler-2.2.19/lib/bundler/runtime.rb:50:in `each'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bundler-2.2.19/lib/bundler/runtime.rb:50:in `require'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bundler-2.2.19/lib/bundler.rb:174:in `require'
/home/ben/code/app/config/application.rb:7:in `<top (required)>'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bootsnap-1.7.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bootsnap-1.7.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bootsnap-1.7.5/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bootsnap-1.7.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bootsnap-1.7.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/home/ben/code/BusinessCloudEssential/Rakefile:5:in `<top (required)>'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bootsnap-1.7.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bootsnap-1.7.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/rake-13.0.3/lib/rake/rake_module.rb:29:in `load_rakefile'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/rake-13.0.3/lib/rake/application.rb:703:in `raw_load_rakefile'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/rake-13.0.3/lib/rake/application.rb:104:in `block in load_rakefile'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/rake-13.0.3/lib/rake/application.rb:186:in `standard_exception_handling'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/rake-13.0.3/lib/rake/application.rb:103:in `load_rakefile'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/rake-13.0.3/lib/rake/application.rb:82:in `block in run'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/rake-13.0.3/lib/rake/application.rb:186:in `standard_exception_handling'
/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/rake-13.0.3/lib/rake/application.rb:80:in `run'
/home/ben/code/app/bin/rake:4:in `<main>'

Here is the application.rb

require_relative 'boot'

require 'rails/all'

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)
require 'net/http'
require 'csv'

module RailsUpgrade
  class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 5.0

    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration can go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded after loading
    # the framework and any gems in your application.

    config.time_zone = 'London'
    #WARNING: This changes the way times are stored in the database (not recommended)
    config.active_record.default_timezone = :local

    config.log_level = :debug
    config.enable_dependency_loading = true
    config.eager_load_paths << Rails.root.join('lib')

    config.assets.enabled = true
    config.assets.version = '1.0'

    config.filter_parameters << :password
    config.filter_parameters << :password_confirmation
    config.filter_parameters << :card_number
    config.filter_parameters += [:password, :password_confirmation, :card_number]

    # config.middleware.use 'CatchJsonParseErrors'
  end
end

Last time I ran rails app:update was when I updated to Rails 5.2 earlier today. So not sure what the issue is.

Thanks.

Ben Bagley
  • 733
  • 1
  • 9
  • 22
  • I just googled your error message, and the top result led me to [this answer](https://stackoverflow.com/a/18630233/1954610). Does that seem relevant to you? Are you using the `rubyzip` gem, and did you also just upgrade it? Are you specifying `require 'zip/zip'` anywhere in your code? If so, does replacing this with `require 'zip'` resolve the error? – Tom Lord Jun 02 '21 at 14:24
  • @TomLord tried that, looked for `require 'zip/zip'` and it's nowhere in my codebase, so I installed a gem called `zip-zip` and that worked – Ben Bagley Jun 02 '21 at 14:29

1 Answers1

3

You are using axlsx version 1.3.6, which includes this line: require 'zip/zip'. That's what your error message is pointing to:

/home/ben/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/axlsx-1.3.6/lib/axlsx.rb:26:in `<top (required)>'

However, I suspect that you've also inadvertently upgraded the rubyzip gem to v1.0.0+ - where the API has changed, and you now only need to require 'zip', (NOT require 'zip/zip').

There are a few solutions, such as what's mentioned on the project README or in this similar StackOverflow question:

  1. Downgrade rubyzip back to v0.x.
  2. Upgrade axlsx.
  3. Add gem 'zip-zip' to your Gemfile.
Tom Lord
  • 27,404
  • 4
  • 50
  • 77