【问题标题】:How to freeze a gem that doesn't want to freeze? (rack)如何冻结不想冻结的宝石? (架子)
【发布时间】:2009-12-02 00:02:40
【问题描述】:

当我尝试将我的 rails 应用程序部署到我的共享主机 (dreamhost) 时,我收到此错误:

can't activate rack (~> 1.0.1, runtime) for [], already activated rack-1.0.0 for []

所以我想在我的开发环境中冻结 rack gem,并将它添加到项目中,但即使我的 config/environment.rb 中有这个:

config.gem 'rack'

执行 rake gems:unpack:dependencies 不会冻结 gem。

ajmbp:trunk ajl$ rake gems:unpack:dependencies
(in /Users/ajl/dev/site/trunk)
ajmbp:trunk ajl$ ll vendor/gems/
.svn/           haml-2.2.14/    net-ssh-2.0.16/ 

我尝试在 config.gem 中添加另一个 gem 只是为了测试 (RedCloth),它确实按预期工作,但机架没有运气。

有什么想法吗? 谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby deployment rubygems


    【解决方案1】:

    您是否检查过您的环境变量(我认为是 RUBY_GEMS,或类似的东西)? 此外,你的 environment.rb 和(如果你使用 fastcgi)你的 .fcgi。

    确保路径从最高优先级到最低优先级排序。

    【讨论】:

      【解决方案2】:

      this article

      Rakefile 中加载的任何 gem(例如 metric_fu、vlad 等)都被 Rails 视为“框架 gem”,并且此类 gem 不会被解包。鉴于在加载 Rakefile 时 vendor/gems 目录尚未在加载路径中,这可能是个好主意。

      换句话说,如果您有一个提供 Rake 任务的库,或者是您的 .rake 文件有效所必需的,不要指望“config.gem”和朋友会为您处理它。

      对于 Dreamhost,请参阅他们的 own documentation,了解如何安装您自己的 gem。或者查看this excellent article,了解如何加载自己的包和宝石(请注意,这不适合胆小的人)。

      但是我所有的阅读都告诉我,由于Passenger 可能使用Dreamhost 安装的机架版本的方式,您可能仍然会遇到麻烦。

      祝你好运。

      【讨论】:

        猜你喜欢
        • 2015-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-07
        • 2015-11-27
        • 1970-01-01
        • 2018-07-18
        相关资源
        最近更新 更多