平台添加到Gemfile.lock

时间:2018-02-13 07:26:04

标签: ruby-on-rails ruby rubygems gemfile.lock

我正在尝试追踪几个平台如何添加到我的Gemfile.lock而没有明确地这样做。在添加新宝石时,我一定忽略了这些更改,但在添加相同的Gemfile.lock更改时,我无法重现相同的Gemfile平台添加。

以下是添加新平台的提交。

#....
+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机器上开发,现在正在将平台特定的宝石添加到Gemfile.lock,例如:

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

我不完全确定如何添加平台。不建议直接修改锁文件,但是如果我探索删除所有特定于平台的引用并删除我的锁文件中的非ruby平台,则安抚heroku警告?欢迎任何建议。

rails 5.1.3

1 个答案:

答案 0 :(得分:1)

早上用新鲜的眼睛深入挖掘这里发生的事情。

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

我相信我在终端中运行了这个以摆脱我认为tzinfo-data周围的错误。有关“错误”的更多信息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在按预期部署时不再抛出错误。希望这可以帮助将来的某个人。