当我尝试将我的rails应用程序部署到我的共享主机(dreamhost)时,我收到此错误:
can't activate rack (~> 1.0.1, runtime) for [], already activated rack-1.0.0 for []
所以我想在我的开发环境中冻结机架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),并且确实按预期工作,但没有运气。
有什么想法吗? 谢谢!
答案 0 :(得分:1)
您是否尝试升级到Rails 2.3.5?阅读此主题: Bypassing rack version error using Rails 2.3.5
简短的回答:你做不到。但Dreamhost将在周一升级Rails。
答案 1 :(得分:0)
你检查了你的环境变量(RUBY_GEMS我认为是,或类似的东西)? 另外,你的environment.rb和(如果你使用fastcgi)你的.fcgi。
确保路径从最高优先级到最低优先级排序。
答案 2 :(得分:0)
请参阅this article。
Rake文件中加载的任何gem(例如metric_fu,vlad等)都被Rails认为是“框架宝石”,并且这些宝石不会被解压缩。鉴于加载Rakefile时,vendor / gems目录尚未加载到加载路径中,这可能是一个好主意。
换句话说,如果你有一个提供Rake任务的库,或者你的.rake文件必须有效,那么不要指望“config.gem”和朋友为你处理它。
对于Dreamhost,请看他们own documentation安装自己的宝石。或者看this excellent article如何加载自己的包裹和宝石(警告它不适合胆小的人)。
但是我的所有阅读都告诉我,由于Passenger可能使用Dreamhost安装的Rack版本,你可能仍会遇到麻烦。
祝你好运。