理解 Gemfile.lock:删除 Gemfile.lock 然后再次运行 bundle install 可以吗?

Posted

技术标签:

【中文标题】理解 Gemfile.lock:删除 Gemfile.lock 然后再次运行 bundle install 可以吗?【英文标题】:Understanding Gemfile.lock: Is it okay to delete Gemfile.lock then run bundle install again? 【发布时间】:2012-12-26 13:10:55 【问题描述】:

我们会对此进行测试,但如果不应该发生这种情况,我们不想冒险破坏我们的开发环境。

可以删除 Gemfile.lock 吗?

我们使用的是 Rails 3.0.6。

【问题讨论】:

考虑使用bundle update rails 来仅更新您需要更改的宝石。 【参考方案1】:

删除Gemfile.lock就可以了,运行就行了

bundle install

生成一个新的Gemfile.lock。请注意,如果您没有在 Gemfile 上指定 gem 的任何版本,您将始终获得最新的

【讨论】:

【参考方案2】:

我知道这个问题已经得到解答,但是对于碰巧在 Google 上看到这篇文章的其他人来说,您应该知道命令 bundle init 将重新生成 Gemfile。

【讨论】:

嗯,对我来说,我收到一条错误消息“Gemfile 已存在于 /home/bla bla bla.... It did not regenerate the file. Perhaps that means the .lock file can be removed and regenerated with bundle init”,但如果是这种情况,两者之间的区别是什么?并简单地捆绑安装?【参考方案3】:

您可能不会破坏您的开发环境。但是,您最终可能会得到比以前更新的 gems 版本。这取决于您在Gemfile 中如何定义它们。

如果您使用以下条目:

gem "rails"

然后你会得到最新的rails gem,不管它是什么。

如果您使用以下条目:

gem "rails", "3.2.11"

然后您将再次获得 3.2.11。

说了这么多,这就是分支的用途。在githg 或任何你正在使用的东西中创建一个分支,吹走Gemfile.lock,运行bundle install,然后检查你的测试套件。如果它很糟糕,那么您可以在找出问题所在的同时放弃分支。

另一个提示:每当我想这样做时,我发现清除所有已安装的 gem 也很有用。如果您将 rvm 与 gemsets 一起使用,这就像运行一样简单

rvm gemset empty [gemset_name]

【讨论】:

以上是关于理解 Gemfile.lock:删除 Gemfile.lock 然后再次运行 bundle install 可以吗?的主要内容,如果未能解决你的问题,请参考以下文章

Gemfile.lock 包含合并冲突

git 和 Gemfile.lock 的问题

Gemfile.lock 在 Rails 中使用?

了解 Gemfile.lock 文件

变基时 Gemfile.lock 中的冲突

如何在协作上下文中处理捆绑器更新(Gemfile.lock)?