2011-10-13 108 views
5

我正在使用Rails 1.2.3版本。现在我想升级Rails版本以及从1.8.6到1.9.7的ruy版本。将Rails App从1.2.3升级到3.1.0?

与这种较旧的版本一起工作,但它处于运行状态是一个主要的痛苦。现在我想要Rails的高级功能,但不支持这个旧版本。

请建议我升级版本和ruby版本的方式。

谢谢....

+0

我不认为有一个合理的一步法这一点。我建议使用指南升级到Rails 2,确保所有的测试都通过了(为了以防万一......也许在生产中给它几天/周),然后按照从Rails 2到Rails 3的升级指南。 –

+0

@约旦:谢天谢地。但我没有足够的时间来跟踪这一步。如果你有任何想法升级,请让我知道。我会尝试这种方法。 – Rubyist

+0

@Jordan:您是否有任何参考文档可以将Rails 1升级到Rails 2版本。 ?如果你有,那么请分享...谢谢 – Rubyist

回答

4

这是一个很大的飞跃。您最好的选择是创建一个新的rails 3.1应用程序,然后手动迁移您的代码。

gem install rails #=> will install the latest stable release from rubygems 
gem install bundler 
rails new myapp 

你需要做的第一件事就是打开Gemfile,并添加您使用的是当前应用程序的任何宝石,它也将是找到任何插件的宝石版本是个好主意你正在使用(在vendor/plugins)。另外,请确保您为所使用的数据库类型安装了适当的Gem(mysql2,sqlite3pg)。

添加完所有需要的宝石后,运行bundle install将所有宝石与应用程序捆绑在一起。

至于视图,模型和控制器,这些东西应该都可以复制到新应用程序中。你可能需要调整一些东西,但大部分这些东西都应该工作。

您还需要打开config/application.rb并配置您的应用程序。您可以使用旧的environment.rb文件作为参考。

在您启动应用程序之前的最后一步是将您的routes.rb文件更改为新的Rails 3格式。这可能是迁移中最糟糕的部分,因为您首先需要学习如何编写Rails 3路由文件,然后手动写入路由。更多信息可以在here找到。

我从来没有使用Rails 1,所以有可能你可能需要改变一些其他的东西。 These three Railscasts一定会成为您的有用资源。

+0

谢谢老板。你给出的步骤真的很好,或者我。你说的很好,路由会杀了我。 – Rubyist

0

我已经将主要应用程序从2.3.10迁移到3.0.9 这是一个非常痛苦的过程,如果我想要迁移到3.1,情况会更糟。

根据你的应用程序的大小,我肯定会推荐创建一个新的应用程序并复制这些东西。

从这个老版本的导轨迁移到最新版本绝对不是一次飞跃,有很多不同的事情需要考虑。

但是,关于我的回答是最好的事情是,我建议你这样做,测试的过程中,找到兼容的宝石等等......如此在轨道3和Ruby 1.9.2

+0

是的男人,你是对的。将新的应用程序作为现有项目的克隆比较好。我们可以使用逻辑以及少数代码可以重复使用。否则,整个垃圾代码会在执行时造成麻烦。 – Rubyist

0

好得多哇,正如砖匠所说,这是一个飞跃!我在几年前使用Rails 1 ..我没有升级到Rails 2,我重新编写了。

Rails 1.2.3应用程序有多大?

许多事情发生了变化,Rails中的功能,很多Gems,路由,资产管道,命名范围,ActiveRecord查询API ......甚至Ruby也发生了变化 - 只是升级是个坏主意。有许多新的概念和特征,您不得不考虑,并且从干净的石板开始会更好。

这可能是一个变相的祝福。我认为这是一个很好的机会,可以通过在Rails 3.1中重写和重新设计来改进代码库:-)

我建议从头开始在Rails 3.1应用程序中使用最重要的功能,同时保持1.2.3应用程序处于维护模式。

它可能也是一个很好的机会,以摆脱其很少使用的应用的一些“特色”,...

+0

是的你是对的。我也在想同样的事情。感谢您让我的决定变得强大。 – Rubyist

+0

它可能是一个艰难的销售给你的老板 - 只是不要说:) - 最后他/他会很高兴 – Tilo

+0

谢谢男人。我的老板知道一切,甚至我也向客户解释了这些条款。客户也准备好了。 – Rubyist