2011-04-26 50 views
2

使用file_field_tag时出现以下错误:EOFError(错误内容正文)。这是一个已知的错误,解决方案是更新机架安装。如何在使用导轨3时更新机架? Bundler不会让我!

不幸的是,如果我跑“捆绑更新机架式”我收到以下错误:

Bundler could not find compatible versions for gem "rack-mount": 
    In Gemfile: 
    rails (= 3.0.7) depends on 
     rack-mount (~> 0.6.14) 

    rack-mount (0.7.2) 

这是真气,因为每个人都告诉我,捆绑器如此真棒,但它的所有做的是让它根本不可能为我运行我需要的宝石版本。格儿。

任何人都知道如何解决这个问题?我很惊讶我没有在Google上找到任何关于此的信息,因为它无法使用导轨3上传文件。

回答

1

您不能用bundler覆盖Rails的依赖关系。如果你必须覆盖Rails的要求,你应该维护你自己的分支。

  1. 叉的Rails在github上(比如版本3.0.9)
  2. 检查出来(通过git clone
  3. 你想改变( git checkout --track origin/3_0_9
  4. 创建一个新的分支
  5. 结帐分支(git checkout -b 3_0_9_with_new_rack_mount
  6. 进行更改。在这种情况下,编辑ActionPack的/ actionpack.gemspec和更改0.6.140.7.2
  7. 提交更改(git commit -am "Updated to a newer rack-mount version"
  8. 推到你的github帐户(git push origin 3_0_9_with_new_rack_mount
  9. 与仓库(gem 'rails', :git => "git://github.com/jevy/rails.git", :branch => "3_0_9_with_new_rack_mount" # Fixes carrierwave error)
  10. 更新您的Gemfile删除您Gemfile.lock的
  11. bundle install
  12. 利润$$$
+0

我想这就是做这件事的方法,但是你不觉得Bundler让它变得不必要的困难吗? – 2011-06-20 17:25:46

+0

正如一个附加说明,菲利普确实说过升级到0.7.2版为他修正了错误。 – jevy 2011-06-20 18:06:10

1

您是否尝试删除Gemfile.lock并再次运行bundle install

+0

这对我有用。 – 2012-08-06 21:01:08

5

看来rails 3.0.7的版本取决于机架安装版本0.6.14,请尝试在Gemfile中编辑gem 'rails', '3.0.x'。其中x是另一个版本号,可以是6,5,4或者您更喜欢使用的任何其他版本号,然后删除Gemfile.lock并尝试bundle install

+1

删除Gemfile.lock对我来说工作得很好。谢谢! – RubyFanatic 2011-05-19 04:10:04