【问题标题】:Why "bundle update" doesn't update the Gemfile to use Rails 3.0.5?为什么“捆绑更新”不更新 Gemfile 以使用 Rails 3.0.5?
【发布时间】:2011-04-03 19:32:06
【问题描述】:

我尝试将bundle update 用于我创建的Rails 3.0.0 项目,希望Gemfile(以及Gemfile.lock)中的所有内容都能反映rails 3.0.5...

但它一直是 3.0.0...即使我运行 bundle update rails,它仍然是 3.0.0

出于好奇,我创建了一个全新的 Rails 3.0.0 项目,然后对其运行 bundle update ......它仍然显示“使用 rails 3.0.0”,为什么?以及如何使bundle update 更新到3.0.5? (除了手动更改 Gemfile 的明显方法)

(我什至尝试将Gemfile 中的sqlite3-ruby 更改为sqlite3,因为3.0.5 似乎改用sqlite3。而railssqlite3 是@987654332 中列出的仅有的2 个宝石@)

【问题讨论】:

    标签: ruby-on-rails-3 bundler


    【解决方案1】:

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

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

    这里有一些关于在 Gemfile 中指定 gem 版本的不同方法的信息。

    http://gembundler.com/rationale.html

    【讨论】:

    • 所以我猜你的答案是,Gemfile 中的'3.0.0' 表示使用精确版本。如果我希望它在使用bundle update 时更新到最新版本,请使用> 3.0.0,虽然我不知道这是否推荐,但请确保使用最新的rails 保持项目。
    【解决方案2】:

    是的,你可能有

    gem 'rails', '3.0.0'
    

    改成

    gem 'rails', '~>3.0.0'
    

    这只会升级 Rails 的小版本(3.0.5 和 3.0.6 ...)。或者您可以将其更改为

    gem 'rails', '~>3.0'
    

    如果你想升级到 rails 3.1 而不是 4.0

    【讨论】:

      【解决方案3】:

      这是在 Google 上搜索“捆绑程序不会更新”时的最佳结果之一,因此我添加以下作为另一个答案。我在我的一个项目中遇到了这个问题。

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

      BUNDLE_FROZEN: "1"
      

      这导致bundle update <gemname> 无效。我删除了上面的行,它又开始更新了。

      【讨论】:

      • 你是对的,这可能是一种可能性。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多