如果我使用Rails 2.3.2开发Ruby on Rails应用程序,那通常会与我的托管公司的Passenger兼容吗?

时间:2009-05-24 01:52:30

标签: ruby-on-rails ruby passenger mod-rails

如果我使用Rails 2.3.2开发Ruby on Rails应用程序,那么它通常会与我的托管公司的Passenger兼容吗?

如果我ssh到我的托管公司并键入rails -v,我得到2.2.2 ......所以看起来他们可能正在使用Rails 2.2.2。

因此,如果我在我的Macbook上开发一个Rails应用程序并在那里ftp所有文件,那么那里的Passenger通常能够与当前版本的Rails生成的代码一起使用吗?

3 个答案:

答案 0 :(得分:2)

使用内置的rake任务将rails冻结到vendor / rails中。这样,无论您在何处部署,您的应用程序都会使用您想要它的版本。

rake rails:freeze:gems

这是我知道的特定版本的最简单方法。

rake rails:freeze:edge RELEASE=2.3.2.1

现在您的rails版本将随您一起发送应用程序。

您可以将其他gem依赖项解压缩到您正在使用的任何gem的供应商/ gem中,并希望确保它在部署应用程序时可用。

rake gems:unpack

并确保他们的依赖关系转到:

rake gems:unpack:dependencies

我还建议您确认他们正在运行最新版本的乘客。

答案 1 :(得分:1)

我会验证他们安装的Passenger的版本(或确认他们已经安装了它)。我还建议你冻结你的Rails版本。

答案 2 :(得分:0)

对于railsninja的回答,只是第二件事。

首先说,它不会马上工作。

该主机是您的vps还是以某种方式获得sudo访问权限?

如果是的话,我建议你做rake gems:安装而不是gems:unpack,因为有些宝石是os依赖的,例如(Rcov,RedCloth ......等)

我会问托管公司他们的乘客的配置,重要的问题是他们是否使用RailsS​​pawnMethod:smart或smart-lv2(默认)。如果他们使用智能方法,那么冻结你的宝石是个更好的主意否则将导致兼容的问题,因为您可以从乘客用户手册中找到有关RailsS​​pawnMethod的参考。

如果你冻结你的宝石,它将几乎100%兼容(所有的宝石都需要在环境中使用config.gem正确声明,例如(config.gem'will_paginate',:source =>“{ {3}}“))和RAILS !!!!!