【问题标题】:Rails 3.1 assets:precompile throws error with RVMRails 3.1 assets:precompile 使用 RVM 抛出错误
【发布时间】:2012-02-24 07:04:57
【问题描述】:

这个问题已经困扰我好几个小时了。

我已将 RVM 安装到系统目录,如果我要在 Capfile 中注释掉:

load 'deploy/assets'

这运行良好,我的应用程序已部署。

但是,一旦我取消注释该行,capistrano 将执行我需要的资产:预编译。这会引发以下错误:

Could not find multi_json-1.0.4 in any of the sources

问题似乎是捆绑器在通过 capistrano 时将 gems 安装到 rvm 下的不同目录中。它应该安装到 rvm_path/gems/gemset_path/ 的位置,它安装到 rvm_path/gems/gemset_path/ruby/1.9.1/,如本文所述:RVM, Capistrano and bundler path issues

有没有其他人遇到过这个问题,并想出了解决这个问题的方法?

谢谢!

编辑:

终于找到了解决办法。这个链接解释它:https://github.com/capistrano/capistrano/issues/81

基本上所有需要做的就是在进行asset:precompile之前进行捆绑安装,这与我在问题中提出的问题无关。

只需在 deploy.rb 中添加这个就可以了:

before "deploy:assets:precompile", "bundle:install"

【问题讨论】:

    标签: ruby-on-rails capistrano bundler


    【解决方案1】:

    实际上,最简单的方法就是升级到 Bundler 1.0.8。解决了资产编译前不运行 bundle install 的问题。

    【讨论】:

    • 捆绑器 1.8 ?! Bundler 现在是 1.1 rc。
    • 我的错,感谢 Vijay 的更正,我的意思是 Bundler 1.0.8 哈哈。帖子已更正。
    • 我遇到了同样的问题。 Bundler 在客户端和服务器上的版本为 v1.0.21。而bundle:install 不是自动完成的?!?我们还必须添加before "deploy:assets:precompile", "bundle:install"吗?
    • 嘿Meltemi,不,你不必添加它。如果您只是在进行部署的本地计算机上将捆绑器升级到至少 1.0.8。如果低于 1.0.8,则必须添加该行。
    猜你喜欢
    • 2012-01-13
    • 2012-05-10
    • 1970-01-01
    • 2010-10-29
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多