Rails 2.3.14和3 / 3.2之间的实际差异?

时间:2012-04-18 02:56:19

标签: ruby-on-rails ruby

我只是通过使用迈克尔·哈特尔的演练来启动Rails dev并且遇到了障碍。

我正在使用的共享主机使用CPanel,它有一个无法使用Rails 3的错误。应该有一个更新(CPanel 11.34)在未来6个月内推出,应该修复此

我的主机使用的版本是Rails 2.3.14。

显然2.3.14和3 / 3.2之间会有一个差异的世界

我在澳大利亚,没有相当于Heroku或EngineYard的东西,我需要澳大利亚托管作为我的应用程序消耗/输出需要留在澳大利亚的数据。

第一个问题是有人能指出我正确的方向将我的开发环境限制为与我的主机相同的版本吗?我不关心使用rvm的多个版本。它只是冻结命令吗?

第二个问题是旧版本的开发失败是什么?显然,当webhost上有3.0可用时我需要迁移。在开发2.3.14时是否有任何特性/细节是显而易见的?

任何帮助非常感谢

2 个答案:

答案 0 :(得分:2)

您仍然可以将bundler与2.3一起使用 - 这样可以轻松地将自己限制为特定版本的宝石,包括rails本身。

我无法想到你无法用2.3.x做什么,显然人们当时也非常开心地编写网络应用程序。 3.x系列中有很多新东西:资产管道,可安装的引擎,更容易使用不同的ORM或javascript库,新的路由api,新的基于活动的记录等。还有很多内部变化,使第三方更容易编写扩展rails或提供身份验证等功能的宝石。

与其说是一个变化,但2.3和3.x的一个重要事实是2.3正在失去使用:编写有用的宝石(载波,设计,工厂女孩等)或教程的人经常只针对3.x或者不再维护他们的2.x版本。

答案 1 :(得分:0)

  

第二个问题是旧版本的开发失败是什么?

首先,您必须小心不要使用2.3.x中没有的ActiveRecord功能。例如,在3.x中,您可以执行以下操作:

 Client.where("orders_count = ?", params[:orders])

但是在2.3.x中你必须这样做:

 Client.first(:conditions => ["orders_count = ?", params[:orders]])

在2.3.x中,您无法链接查询方法来构建查询。