首页 > 解决方案 > 如何停止有关 ffi 的 rubocop 错误

问题描述

使用 wsl 在 Rubymine 窗体窗口中工作并使用 wsl 终端运行所有内容我一直从 rubocop 收到以下错误:

Error:/home/dor/.rvm/rubies/ruby-2.6.5/lib/ruby/site_ruby/2.6.0/bundler/spec_set.rb:91:in `block in materialize': Could not find ffi-1.15.1 in any of the sources (Bundler::GemNotFound)
    from /home/dor/.rvm/rubies/ruby-2.6.5/lib/ruby/site_ruby/2.6.0/bundler/spec_set.rb:85:in `map!'
    from /home/dor/.rvm/rubies/ruby-2.6.5/lib/ruby/site_ruby/2.6.0/bundler/spec_set.rb:85:in `materialize'
    from /home/dor/.rvm/rubies/ruby-2.6.5/lib/ruby/site_ruby/2.6.0/bundler/definition.rb:170:in `specs'
    from /home/dor/.rvm/rubies/ruby-2.6.5/lib/ruby/site_ruby/2.6.0/bundler/definition.rb:237:in `specs_for'
    from /home/dor/.rvm/rubies/ruby-2.6.5/lib/ruby/site_ruby/2.6.0/bundler/definition.rb:226:in `requested_specs'
    from /home/dor/.rvm/rubies/ruby-2.6.5/lib/ruby/site_ruby/2.6.0/bundler/runtime.rb:108:in `block in definition_method'
    from /home/dor/.rvm/rubies/ruby-2.6.5/lib/ruby/site_ruby/2.6.0/bundler/runtime.rb:20:in `setup'
    from /home/dor/.rvm/rubies/ruby-2.6.5/lib/ruby/site_ruby/2.6.0/bundler.rb:107:in `setup'
    from /home/dor/ ...

这很烦人。捆绑包一直要求捆绑安装以及我运行但没有帮助的此错误

标签: ruby-on-railsrubybundlerrubocop

解决方案


对于您正在运行的任何命令,请确保您使用的是bundle exec,例如:

$ bundle exec rubocop

接下来,您可以尝试以下操作:

  • 手动安装ffi以查看您的 Gem 路径是否设置正确:gem install ffi
  • 重新安装捆绑器:gem uninstall bundler && gem install bundler
  • 删除Gemfile.lock文件(进行备份)并重新运行bundle install.
  • 运行bundle updatebundle update ffi
  • 试试bundle --full-index参考

我看到您没有使用 JRuby,但我也遇到了必须使用bundler(使用R)而不是bundleJRuby 的问题,因此您可以尝试一下。

特别是对于 WSL,我还发现其他人对 Jekyll 和 WSL 有这个问题。解决方案是修复 GEM 路径。按照此处的说明进行操作。

如果这些对您仍然没有帮助,请描述您如何在 WSL 上安装 Ruby,以及您使用的哪个命令会产生此错误。


推荐阅读