添加到 Gemfile.lock 的平台

Platforms added to Gemfile.lock

我试图追踪几个平台是如何在没有明确这样做的情况下添加到我的 Gemfile.lock 中的。我在添加新 gem 时一定忽略了这些更改,但在添加相同的 Gemfile 更改时我无法重现相同的 Gemfile.lock 平台添加。

这是添加新平台的提交。

#....
+gem 'sqreen'
+gem 'sanitize'
+

 # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
 gem 'jbuilder', '~> 2.5'
@@ -55,6 +57,8 @@ gem 'postmark-rails'
 group :development, :test do
   # Call 'byebug' anywhere in the code to stop execution and get a debugger console
   gem 'byebug', platform: :mri
+  gem 'capybara'
+  gem 'selenium-webdriver'
 end

以及在同一提交中对 Gemfile.lock 的更改:

 PLATFORMS
+  java
   ruby
+  x64-mingw32
+  x86-mingw32
+  x86-mswin32

我试图在测试应用程序中重现相同的修改,但这些平台没有添加到 Gemfile.lock

最近推送到 heroku 时我注意到了这一点:

Removing `Gemfile.lock` because it was generated on Windows.
remote:        Bundler will do a full resolve so native gems are handled properly.
remote:        This may result in unexpected gem versions being used in your app.
remote:        In rare occasions Bundler may not be able to resolve your dependencies at all.
remote:        https://devcenter.heroku.com/articles/bundler-windows-gemfile

我不是在 windows 机器上开发,现在平台特定的 gem 被添加到 Gemfile.lock 例如:

ffi (1.9.18)
ffi (1.9.18-java)
ffi (1.9.18-x64-mingw32)
ffi (1.9.18-x86-mingw32)

我不完全确定这些平台是如何添加的。直接修改锁定文件是不可取的,但为了安抚 heroku 警告,我是否应该探索删除所有特定于平台的引用并删除我的锁定文件中的非 ruby 平台?欢迎在这里提出任何建议。

rails 5.1.3

在早上以全新的眼光深入研究之后,这就是发生的事情。

我检查了我的 bash 历史记录,发现我 运行 bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java 在我发布在问题中的提交之前。这显然会在您的 Gemfile.lock 中添加更多平台,随后会添加特定于平台的依赖项。

我相信我 运行 在终端中这样做是为了摆脱我认为是围绕 tzinfo-data 的错误。有关 "error" 的更多信息,请点击此处 https://github.com/tzinfo/tzinfo-data/issues/12

我没有直接编辑 Gemfile.lock,而是 运行 bundle lock --remove-platform x86-mingw32 x86-mswin32 x64-mingw32 java,这对我的锁定文件进行了适当的编辑。更多信息在这里 http://bundler.io/v1.16/bundle_lock.html.

Heroku 在按预期部署时不再抛出错误。希望这对将来的人有帮助。