【发布时间】:2013-03-19 00:12:18
【问题描述】:
我有一个 Rails 3.0 应用程序(技术上是 3.0.7),我想升级到 Rails 3.1 以利用新的资产管道和其他奇特的新功能。这样做的最佳方法是什么?我应该使用rails new 生成器,然后将旧应用程序中的所有内容复制到新应用程序吗?版本控制呢?我已经有了使用 Git 的旧应用程序。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1
我有一个 Rails 3.0 应用程序(技术上是 3.0.7),我想升级到 Rails 3.1 以利用新的资产管道和其他奇特的新功能。这样做的最佳方法是什么?我应该使用rails new 生成器,然后将旧应用程序中的所有内容复制到新应用程序吗?版本控制呢?我已经有了使用 Git 的旧应用程序。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1
刚刚将我的一个应用程序从 3.0.9 升级到 3.1.0,这是我的方法,您的里程可能会有所不同:
编辑 Gemfile,更改 Rails gem 版本
gem 'rails', '3.1.0'
还添加了 3.1.0 中引入的新宝石
group :assets do
gem 'sass-rails', "~> 3.1.0"
gem 'coffee-rails', "~> 3.1.0"
gem 'uglifier'
end
gem 'jquery-rails'
运行bundle update rails
然后运行rake rails:update 并解决冲突。
将您的 css/javascript/images 等移动到 app/assets 文件夹,确保有一个 application.js 和一个 application.css 文件(您可能想看看这两个来自新创建的 3.1.0 项目)
像这样在布局文件中包含 css/javascript 链接
<%= stylesheet_link_tag "application" %>
<%= javascript_include_tag "application" %>
【讨论】:
rvm get latest,或者如果 RVM 太旧,则再次运行安装脚本,然后更新 RubyGems:gem update --system,然后更新 bundler :gem install bundler
bundle update rails 时遇到了一些冲突,所以我不得不改为运行bundle update
/images/photo.jpg,而是/assets/photo.jpg(不引用图像目录)。那个让我有点。
熟悉 Rails 3.1,以下是资源: http://jasonrudolph.com/blog/2011/06/06/helpful-resources-for-upgrading-to-rails-3-1/
最重要的是您当前的测试,在开始之前确保您对 3.0 应用有良好的测试覆盖率。
【讨论】:
在您的 Git 存储库中创建一个新分支。
如果您使用的是 Devise、RSpec 或 Cucumber,请查看 Rails 3.1 Example Apps,因为它们将为您提供一个很好的参考实现。如果没有,只需使用rails new 创建一个简单的 Rails 3.1 应用程序。
然后使用文件比较工具(例如 Mac OS X 上的 FileMerge 或 Changes)来确定 Rails 3.1 代码与 3.0 应用程序的不同之处。
【讨论】:
我今天刚刚使用 3.0.9 的应用程序完成了这项工作 看看这个博客,很简单。
http://davidjrice.co.uk/2011/05/25/how-to-upgrade-a-rails-application-to-version-3-1-0.html
只需更改 gem 文件、一些配置变量、移动一些资产并创建一些 css 和 js 清单文件,应该不会超过一个小时。
【讨论】:
将此 gem 复制到您的 gem 文件中,替换旧的一次 宝石'rails','3.1.0'
group :assets do
gem 'sass-rails', "~> 3.1.0"
gem 'coffee-rails', "~> 3.1.0"
gem 'uglifier'
end
你所要做的就是运行rake rails:update
您也可以运行 rake -T 来查看您需要的一些很酷的 rake 任务
【讨论】: