-1

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

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

因此,如果我在我的 Macbook 上开发 Rails 应用程序并 ftp 那里的所有文件,那么那里的乘客通常会与当前版本的 Rails 生成的代码一起正常工作吗?

4

3 回答 3

2

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

rake rails:freeze:gems

以及我所知道的执行特定版本的最简单方法。

rake rails:freeze:edge RELEASE=2.3.2.1

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

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

rake gems:unpack

并确保他们的依赖项去:

rake gems:unpack:dependencies

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

于 2009-05-24T02:17:25.837 回答
1

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

于 2009-05-24T02:16:30.440 回答
0

只是为了 railsninja 的回答。

首先说,它不会立即起作用。

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

如果是,我建议您使用 rake gems:install 而不是 gems:unpack,因为某些 gems 依赖于操作系统,例如(Rcov、RedCloth...等)

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

如果你冻结你的 gem,它将几乎 100% 兼容(所有的 gem 都需要在 environment.rb 中用 config.gem 正确声明,例如(config.gem 'will_paginate',:source=>" http://gems .github.com ")) 和铁路!!!!!!

于 2009-05-28T07:10:32.697 回答