1

我刚刚升级到 Rails 6,运行时得到以下信息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)

我已经更新了所有的 gem,它正在捆绑和更新 gem,gemfile.lock 看起来也不错。

这是回溯:

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>'

这是应用程序.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

我上次跑步rails app:update是在今天早些时候更新到 Rails 5.2 的时候。所以不确定是什么问题。

谢谢。

4

1 回答 1

2

您正在使用axlsxversion 1.3.6,其中包括以下行:require 'zip/zip' . 这就是您的错误消息所指向的内容:

/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)>'

但是,我怀疑您无意中将rubyzipgem 升级到v1.0.0+了 API 已更改的位置,而您现在只需要require 'zip', ( NOT require 'zip/zip' )。

有一些解决方案,例如项目 README类似的 StackOverflow 问题中提到的内容:

  1. 降级rubyzipv0.x.
  2. 升级axlsx
  3. 添加gem 'zip-zip'到您的Gemfile.
于 2021-06-02T14:30:27.547 回答