我正在研究Rails 1.2.3版本。现在我想将Rails版本以及ruy版本从1.8.6升级到1.9.7。
使用这样的旧版本是否是一个主要的痛苦,但它处于运行状态。现在我想要Rails的高级功能但不支持这个旧版本。
请建议我升级版本和ruby版本的方法。
...谢谢
答案 0 :(得分: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
,sqlite3
或pg
)。
在您添加了所需的所有宝石后,运行bundle install
将所有宝石与您的应用程序捆绑在一起。
就视图,模型和控制器而言,只需复制到新应用程序即可。您可能需要调整一些内容,但大多数情况下这些内容都应该有效。
您还需要打开config/application.rb
并配置您的应用程序。您可以使用旧的environment.rb
文件作为参考。
启动应用程序之前的最后一步是将routes.rb
文件更改为新的Rails 3格式。这可能是迁移中最糟糕的部分,因为您首先需要学习如何编写Rails 3路由文件,然后手动写入路由。可以找到更多信息here。
我从未使用过Rails 1,因此您可能需要更改其他一些内容。 These three Railscasts肯定会为您提供有用的资源。
答案 1 :(得分:0)
我已将主要应用程序从2.3.10迁移到3.0.9 这是一个非常痛苦的过程,如果我想转向3.1,那就更糟了。
根据您的应用程序大小,我肯定会建议创建一个新的应用程序并复制这些内容。
从这个旧版本的rails迁移到最新版本绝对不是一蹴而就的,需要考虑很多不同的事情。
但是,关于我的答案最好的事情是我建议你这样做,测试过程,找到兼容的宝石等......在rails 3和ruby 1.9.2中更好用
答案 2 :(得分:0)
您的Rails 1.2.3应用程序有多大?
许多事情都发生了变化,Rails中的功能,如此多的Gems,Routing,Asset Pipeline,Named Scopes,ActiveRecord Query API,甚至Ruby已经改变了 - 只是升级是个坏主意。有许多新的概念和功能,你必须要考虑,从一个干净的平板开始会好得多。
这可能是一种伪装的祝福。我认为这是一个很好的机会,通过在Rails 3.1中重新编写和重新构建它来改进代码库: - )
我建议在具有最关键功能的Rails 3.1应用程序上从头开始,同时保持1.2.3应用程序处于维护模式。
这可能也是一个很好的机会摆脱你的应用程序的一些“功能”,几乎没有使用过......