如何停止关于 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/ ...

这很烦人。 还捆绑不断要求捆绑安装与此错误一起运行,但没有帮助

解决方法

对于您正在运行的任何命令,请确保您使用的是 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 (ref)

我看到您没有使用 JRuby,但我也遇到了问题,我必须使用 bundler(带有 R)而不是 bundle JRuby,所以你可以试试。

特别是对于 WSL,我还发现其他人在使用 Jekyll 和 WSL 时遇到了这个问题。解决方案是修复 GEM 路径。按照说明 here

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