`

关于rails2的项目升级到rails3的问题

阅读更多
   今天在公司接到个新的需求,要求是将现有的rails2.3.8的项目升级到rails3.0.3,因为在rails这方面还是个菜鸟,觉得这个升级几乎是不可能的,因为rails3与rails2比,几乎是把代码翻了个遍的大改了一通,所以很是头疼,没办法,只能google了,果真,搜到了一个rails的插件Rails Upgrade,在网上看了下,并没有仔细的研究。
   这里有个链接,是关于怎样安装这个插件的。
http://edgeguides.rubyonrails.org/3_0_release_notes.html#upgrade-process
然后是这个插件的使用方法:
https://github.com/rails/rails_upgrade/blob/master/README
    还有javaeye的一篇文章
http://www.iteye.com/topic/626273
里面讲得还算详细,贴出来供大家参考。

   在命令行输入 rake -T rails:upgrade,这会给你列出你在使用该插件的时候可能用到的命令,并给了你简单的解释:
   rake rails:upgrade:check  在命令行运行这个命令的时候你会发现,rails会为你检查当前的rails2项目各个文件,并跟rails3进行对比,并给你列出一个列表来,告诉你,哪些文件由于哪些原因,现在已经不推荐用了。这个命令一般是在你要进行rails项目升级前,进行文件检测用的,提醒那些文件将要修改,那些文件使用了旧的api之类的。
   rake rails:upgrade:backup 在命令行输入这个命令的时候你会发现,rails会给你列出一个文件分析表,并为你把这些文件进行备份,一般是备份到当前文件相同的目录下,并以rails2为后缀,然后再由rails3的生成器(generator)来生成这些文件,来把以前的文件覆盖。This is a list of the files analyzed and backed up (if they existed);you will probably not want the generator to replace them sinceyou probably modified them (but now they're safe if you accidentally do!)
   rake rails:upgrade:configuration ,这个rake输出config/application.rb文件的内容,但是不太靠谱,基本上就是把原来environment.rb文件中,但是这个命令并不会为你把这些内容写到这个config/application.rb文件中,甚至连这个文件都不会给你创建,这个命令只会为你生成出要添加到这个文件内容,所以我们要手动的创建这个文件,并把这些内容添加到这个文档中去。注意如果你在这里有config.gem 的配置,在新的config/application.rb文件中要删除掉,会报错的。其次,仔细观察会发现,这个命令为我们你生成的application.rb文件的内容还缺少了点东西:require 'rails/all'  还有:Bundler.require(:default, Rails.env) if defined?(Bundler),所以说,这个命令还是很不靠谱的。
    rake rails:upgrade:gems ,这个命令会输出Gemfile文件的内容,但是要你手动去新建一个Gemfile文件,放在项目的要目录下。
    rake rails:upgrade:routes,输出新的routes.rb的内容,还是要手动地把这些内容复制到routes.rb中
     到此为止,这个升级插件的工作算是完成了,但是如果我们通过对升级后的项目和最初用rails3生成的项目相比,发现,升级后的项目还是缺了很多东西,例如:
  1、缺少了 config.ru文件,这个时候要从我们手动创建的rails3项目中把这个文件拷贝过来,然后在进行相应的配置。
  2、通过对比发现,在手动创建的rails3项目的config/initializers里面没有new_rails_defaults.rb这个文件,但是在升级后的项目里面是有这个文件的,所以,我们要把升级后的项目中的这个文件删除,因为你不删除的话,rails是无法启动的。
  3、.必须修改 boot.rb 文件(新建一个rails 3的项目,把新生成的复制过去,否则rake会一直报错),同样是要修改application名的,请看第1点。
  4、把升级后的项目中的scripts目录删掉,然后从新建的rails3项目中把这个文件夹拷贝过来。
  5、修改environments目录下的三个文件,这三个文件要这样修改
     Myapp::Application.configure do 
     #     # 原来的代码 
     end
     经过以上的一番折腾,升级后的项目估计就能跑起来了。
分享到:
评论

相关推荐

    重构你的Rails程式码

    升级Rails的?这是一个很好的时间来重构你的代码

    ruby on rails最佳敏捷开发

    最新Ruby on Rails中文版介绍,欢迎大家共同学习此最新的技术!随着Ruby和Rails版本的不断升级,这些知识也在不断的更新,谢谢的支持!

    sass-rails, Sass的Ruby on Rails 样式表引擎.zip

    sass-rails, Sass的Ruby on Rails 样式表引擎 与Sass的官方Ruby-on-Rails集成这个 gem 使用Sass样式表语言为 Ruby on Rails 项目提供正式的集成。安装从 Rails 3.1开始,新的Rails 项目将被配置为... 如果升级到 Rai

    wize_upgrader:从 rails 3.2 升级到 rails 4 的快速而肮脏的宝石

    这个 gem 用于将基本的 Rails 3.2 应用程序升级到 Rails 4。 我们必须将一堆应用程序从 Rails 3.2 升级到 Rails 4。我们构建了这个 gem 来提供帮助。 注意:我们的大多数应用程序都很简单,但这应该可以处理 95% 的...

    windows下安装或升级rails

    windows下安装或升级时gem经常会碰到 1 Please update your PATH to include build tools or download the DevKit 2 from 'http://rubyinstaller.org/downloads' and follow the instructions 3 at '...

    imgix-rails:将imgix集成到Rails项目中的瑰宝

    升级指南3.x至4.0 发展 贡献 行为守则 执照 安装 将此行添加到您的应用程序的Gemfile中: gem 'imgix-rails' 然后执行: $ bundle 用法 imgix-rails提供了一些不同的挂钩来与您现有的Rails应用程序一起使用...

    rails_12factor

    如果从Rails 4升级到5, 。什么当涉及到十二因子应用程序时,Rails变得非常正确,但是它可能会更好。 目前最大的两个方面是,在交付资产时,生产和。 这个gem支持在生产中提供资产,并将记录器设置为标准配置,这...

    attache-rails, 将你的Rails 应用程序与attache服务器集成.zip

    attache-rails, 将你的Rails 应用程序与attache服务器集成 attache 使用 attache/api 在 attache服务器上集成 Rails/ActiveRecord ...依赖项响应,jQuery,Bootstrap 3安装注意:如果你正从V2升级,请参阅升级笔记 be

    rails_admin:RailsAdmin是一个Rails引擎,它提供了易于使用的界面来管理数据

    如果您使用的是这些版本,我们强烈建议您尽快将RailsAdmin升级到2.0.2(或更高版本)或1.4.3。 有关详细信息,请参见 。 入门 查看。 尝试。 () 特征 轻松收录任何数据 自定义动作 自动表格验证 搜索和过滤 将...

    Secode_level_cache.zip

    现在我们将这个插件从Rails2.x的版本升级到了3.x版本,并且抽取成了一个通用插件,开始应用于新的Rails3.2的项目之上。有志于AR对象缓存优化的ruby程序员不容错过。 使用方法: class User acts_as_cached(:...

    rails_exception_handler:Ruby on Rails的异常处理

    Rails异常处理程序 从版本1升级? 这是Rails的灵活异常处理程序,适用于希望创建自己的错误跟踪服务的人员。 它面向经验丰富的Rails开发人员,这些开发人员不仅要管理几个Rails应用程序,而且还要管理多个应用程序。...

    rails2.3.2gem本地安装包及使用说明

    如果无法通过网络升级rail,可以通过本地安装包进行安装,内有使用说明

    针:在Rails中创建微服务,只需最少的仪式

    只需编写常规的Rails代码,即可在Rails中创建微服务。 该宝石提供: 透明的API密钥身份验证。 基于标头的路由器级API版本。 通过验收测试记录微服务端点的方法。 结构化错误,可以从无效的Active Record,异常...

    serialize-rails:rails 属性序列化为 yaml、json、xml 和 ruby​​ marshal

    序列化的Rails 轨道4注 Rails 4 中有一些关于 serialize 方法的内部变化。 这些更改似乎会影响序列化与二进制列类型(如 bytea)结合使用的方式。 目前我不建议在 Rails 4 上将二进制列类型与这个 gem 结合使用。...

    ten_years_rails:“Rails 升级十年”演讲的配套宝石

    十年 Rails 升级这是“Rails 升级十年”会议演讲的配套。 您会发现我们在 Clio 中使用的各种实用程序来帮助我们准备和完成 Rails 升级。 这些脚本仍处于早期阶段,可能无法在所有环境或应用程序中使用。 我不建议您...

    升级版本后Rails的文件上传

    NULL 博文链接:https://hlee.iteye.com/blog/360099

    rails-json-api:准系统、无状态、RESTFUL Rails JSON API 服务器

    使用 Rails 的内置进行身份验证,使其最小化、记录良好且易于升级 无状态 JSON API - 没有不安全的会话或 cookie,因此不需要 CSRF 令牌 作为我们的并发 Web 服务器 用于我们的数据存储 UUID 作为用户的主键 ( ) ...

    rails_upgrader:迁移到强参数

    Rails升级程序 该gem可帮助您自动迁移到强参数。 安装 将此行添加到您的应用程序的Gemfile中: group :development do gem 'rails_upgrader' end 然后执行: $ bundle 或自己安装为: $ gem install rails_...

    next-level-rails:下一级别Rails类的参考项目

    下一级别的Rails 这是我教的Next Rails课程的参考应用程序。 旨在为学生提供一个示例,说明如何实现小型的,可量产的Rails应用程序。 开发环境设置 我们需要安装一些软件,以确保我们可以运行此Rails应用程序。 ...

    在Rails和S3之间同步资产-Ruby开发

    Asset Sync在Rails和S3之间同步资产。 Asset Sync构建为与Rails 3.1中引入的新的Rails Asset Pipeline功能一起运行。 运行bundle exec rake asset:后,将对资产进行预编译。Asset Sync在Rails和S3之间同步资产。 ...

Global site tag (gtag.js) - Google Analytics