首页 > 解决方案 > 如何修复 Bundler::LockfileError?

问题描述

我在 vim 中运行 rails test 时遇到问题。当我:Rails test从 vim 发出它返回

/usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.10.6/lib/bundler/lockfile_parser.rb|72| 在 `warn_for_outdated_bundler_version' 中:您必须在此锁定文件中使用 Bundler 2 或更高版本。(Bundler::LockfileError)

一些可能有助于回答的终端命令输出

  1. which -a bundle

    /home/my_user_name/.rbenv/shims/bundle

  2. bundle env

    Bundler       2.0.1
      Platforms   ruby, x86_64-linux
    Ruby          2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
      Full Path   /home/username/.rbenv/versions/2.4.1/bin/ruby
      Config Dir  /home/username/.rbenv/versions/2.4.1/etc
    RubyGems      3.0.2
      Gem Home    /home/username/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0
      Gem Path    /home/username/.gem/ruby/2.4.0:/home/username/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0
      User Path   /home/username/.gem/ruby/2.4.0
      Bin Dir     /home/username/.rbenv/versions/2.4.1/bin
    Tools         
      Git         2.17.1
      RVM         not installed
      rbenv       rbenv 1.0.0-21-g9fdce5d
      chruby      not installed
    

标签: ruby-on-railsvimrbenv

解决方案


我假设 vim 是针对与您当前在终端中使用的不同的 ruby​​ 构建的。因此,当从其中执行代码时,它也会使用不同的 ruby​​。

您可以通过发出以下命令来验证该假设:

:rubydo puts RUBY_VERSION

在 vim 中查看该版本是否与终端中的 ruby​​ 匹配。我假设,当您在终端中使用基于 rbenv 的 ruby​​ 时,vim 是针对系统 ruby​​ 构建的。

如果假设成立,您可以针对您的 rbenv ruby​​ 重建 vim,或者可以通过 rbenv 短暂切换到系统 ruby​​ 并为其运行 a gem install bundler


推荐阅读