【问题标题】:Running bundle or rspec adds line to Gemfile.lock运行 bundle 或 rspec 将行添加到 Gemfile.lock
【发布时间】:2018-06-08 17:02:51
【问题描述】:

在 Ruby 项目中运行各种命令(例如 bundle 和 rspec)后,Gemfile.lock 被更新,x86_64-darwin-17 被添加到 PLATFORMS 标题中。为什么会这样?如何预防?

运行gem env 给出了这个有趣的上下文:

○ → gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.7.6
  - RUBY VERSION: 2.5.1 (2018-03-29 patchlevel 57) [x86_64-darwin17]
  #...etc  
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-17

【问题讨论】:

  • 为什么要阻止它? Gemfile.lock 旨在使您的 gem 环境可重现。如果它正在更新,则仅意味着您正在使用与以前不同的环境运行,例如如果您的其中一个 gem 更新为具有新的依赖项。
  • 这是我最近与其他多个贡献者一起加入的一个项目。他们的系统信息未在此处列出。我有正确的 ruby​​ 和 bundler 版本,所以我不想将此更改检查到 git 中。
  • 这种情况一直发生在我身上,我只是尽量不去提交它们。不是一个很好的解决方案,但我习惯于在提交或推送之前检查我的更改,所以这不是问题。
  • 您的问题到底是什么?如果您运行bundle,那么您的Gemfile 中指定的gem 将被安装,所有这些gem 的版本将指定您的Gemfile.lock。运行 rspec 不应该影响你的包的状态。
  • 我添加了一个答案。有一个负责该行为的全局捆绑程序配置。无论运行 rspec 是否应该触及锁定文件,它都在意外更新它。

标签: ruby gemfile.lock


【解决方案1】:

@RangerRanger 的答案对我不起作用,但我像他一样检查了bundler doc 并找到了为我工作的人:

force_ruby_platform (BUNDLE_FORCE_RUBY_PLATFORM):忽略当前机器的平台,只安装 ruby​​ 平台 gem。因此,具有本机扩展的 gem 将从源代码编译。

这里是命令:bundle config force_ruby_platform true

【讨论】:

    【解决方案2】:

    这是由全局捆绑程序配置引起的。设置为 false 会停止该行为。

    specific_platform (BUNDLE_SPECIFIC_PLATFORM):允许捆绑器解析特定的运行平台并将其存储在锁定文件中,而不是仅使用通用平台。特定平台是 Gem::Platform.local 报告的确切平台三元组,例如 x86_64-darwin-16 或 Universal-java-1.8。另一方面,通用平台是诸如 ruby​​、mswin 或 java 之类的平台。在这个例子中,x86_64-darwin-16 会映射到 ruby​​,universal-java-1.8 会映射到 java。

    【讨论】:

      【解决方案3】:

      如果您想安装依赖项而不更新Gemfile.lock,只需使用--frozen option。例如bundle --frozen。这将正常安装依赖项,除了不更新Gemfile.lock

      编辑

      如果这不是一个好的解决方案,最好的办法可能是将Gemfile.lock 添加到特定于本地存储库的.gitignore。 你可以按照this answeryour_repo/.git/info/exclude创建一个

      【讨论】:

      • 我很欣赏这个想法,但这发生在比运行捆绑包更多的情况下。例如,该行是在运行 rspec 测试后添加的。
      • .gitignore 可能就是您正在寻找的东西。你可以有一个特定于你的本地仓库。
      • 据我所知bundle exec rspec 不应该更新 gemfile.lock。我从来没有见过这种情况发生在我身上。另一个可能的解决方案是别名bundle -> bundle --frozen
      猜你喜欢
      • 2012-12-26
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      相关资源
      最近更新 更多