2011-04-03 39 views
9

我尝试使用bundle update为我创造了一个Rails 3.0.0项目,希望所有的内容Gemfile(也Gemfile.lock),以反映轨3.0.5 ...为什么“包更新”不会更新Gemfile以使用Rails 3.0.5?

但它继续是3.0.0 .. 。即使我运行bundle update rails,它仍然保持在3.0.0

出于好奇,我创建了一个全新的Rails 3.0.0项目,然后在其上运行软件包更新...它仍然说“使用导轨3.0.0“,为什么?以及如何使bundle update更新至3.0.5? (较明显的方式手工更改Gemfile文件除外)

(我甚至试过在Gemfile改变sqlite3-rubysqlite3,因为3.0.5似乎用sqlite3来代替。而railssqlite3中列出的只有2颗宝石Gemfile

回答

12

您已经有了答案:手动更改宝石版本并运行bundle update rails

我怀疑你的Gemfile中有gem 'rails', '3.0.0'。如果您有指定的确切版本,运行bundle update rails将不会更改版本。

下面是关于在Gemfile中指定gem版本的不同方法的一些信息。

http://gembundler.com/rationale.html

+0

所以我猜你的回答是,Gemfile中的''3.0.0'意味着使用确切的版本。如果我希望它在每次使用“bundle update”时更新到最新,那么使用'> 3.0.0',尽管我不知道这是否推荐,但确定使用最新的rails保持项目。 – 2011-04-03 20:01:28

13

是的,你可能有

gem 'rails', '3.0.0' 

改变它

gem 'rails', '~>3.0.0' 

这只会提升轨道的次要版本(3.0.5 & 3.0.6 ...) 。或者,你可以把它改成

gem 'rails', '~>3.0' 
如果你想升级到3.1导轨但

没有4.0

1

这是顶级的结果之一在谷歌“打捆不会更新”进行搜索时,所以我加入作为另一个答案。我在其中一个项目中遇到了这个问题。

在我的项目之一,我有一个.bundle/config文件,其中有如下一行:

BUNDLE_FROZEN: "1" 

这是造成bundle update <gemname>没有任何效果。我删除了上面的行,它开始再次更新。

+0

你是对的,那可能是其中一种可能性。 – Aamir 2016-10-07 10:37:57

相关问题