从Rails 3升级到Rails 3.1

你如何从Rails 3升级到Rails 3.1 beta?

当更新一个现有的rails 3.0.8项目时,这是我的工作。 你的旅费可能会改变…

更新我的Gemfile中指定的rails版本以使用最新的候选版本:

 gem 'rails', '3.1.0.rc4' 

更新软件包:

 bundle update 

然后用rake命令更新项目:

 rake rails:update 

虽然变化冲突樱桃采摘后,我跑了所有的testing,他们通过(耶!)。 我重新启动服务器,一切似乎很好。

但是,这还没有使用新的资产pipe道。 由此我的意思是javascript和css(或sass)文件仍然在前置处理的方式处理。 据我所知,这是一个完全可行的select。 但是,当然,我想要新的优点,所以我相信接下来的步骤是包括额外的gem(例如coffeescript,sass,uglifier等),然后将旧文件迁移到app / assets目录。

我发现了一些关于这方面的细节:

http://blog.nodeta.com/2011/06/14/rails-3-1-asset-pipeline-in-the-real-world/

希望有帮助。

我刚刚从3.0升级到3.1通过更改我的Gemfile为:

 gem 'rails', '3.1.0.rc1' gem 'sqlite3' gem 'sass' gem 'coffee-script' gem 'uglifier' 

我还在config / environments / development.rb中注释了下面的行

 # config.action_view.debug_rjs = true 

最后,确保在config / application.rb中启用资产pipe道

 config.assets.enabled = true 

我不确定您是否已阅读发行说明http://weblog.rubyonrails.org/2011/4/21/jquery-new-default

升级到Rails 3.1

看它 :)

升级Rails

更新 :谨慎使用你的系统耙子,因为耙子已经升级。

 bundle exec rake 

确保您将为给定的rails项目使用正确的rake( 源 )


我build议从一个新的应用程序开始,然后复制您的特定应用程序信息,同时将您的资源转换为新的资产/链轮格式。

一个例子

当转换旧的rails 2.3.4应用程序到3.0时,我在一次更改项目内的一个文件的同时崩溃并烧毁。 毋庸置疑,这是一个有缺陷的策略,但是我一路上学到了一些东西。 我结束了跳过3.0和移动到3.1beta1一个新的应用程序,并复制我的应用程序和公共文件夹后得到正确的迁移。 这一举措有一些悬而未决的问题,最重要的是我没有使用rails edge来创build新的应用程序(感谢RubyInside的提示)。

首先将最新的导轨安装到易于参考的位置:

cd ~/goodtimes

git clone https://github.com/rails/rails.git

我的path包括一个〜/桌面/ Dropbox /所以我的代码无处不在。

然后参考那个rails exec来构build一个新的应用程序:

~/goodtimes/rails/bin/rails new bacon --edge

根据数据库的复杂性,您可能希望使用更改语法来创build新的迁移,或者将其保留为:

  class CreatePosts < ActiveRecord::Migration def change create_table :posts do |t| t.string :title t.text :body t.timestamps end end end 

我有一个问题部署到Heroku,但是RubyRacergem帮助消除了这个问题。 这是一个简单的Gem文件的例子:

 source 'http://rubygems.org' gem 'rails', :git => 'git://github.com/rails/rails.git' gem 'sqlite3' # Asset template engines gem 'sass' gem 'coffee-script' gem 'uglifier' gem 'jquery-rails' gem 'pg' gem 'therubyracer-heroku', '0.8.1.pre3', :platforms => :ruby # Use unicorn as the web server # gem 'unicorn' # Deploy with Capistrano # gem 'capistrano' # To use debugger # gem 'ruby-debug19', :require => 'ruby-debug' group :test do # Pretty printed test output gem 'turn', :require => false end 

我怀疑会有社区实用程序来帮助您自动从旧版本的Rails迁移到–edge。

参考文献:

  1. 如何使用Rails 3.1,CoffeeScript和现在所有的爵士乐
  2. Rails 3.1beta,咖啡脚本,jQuery,SCSS和资产四骑士
  3. Rails 3.1beta从iPhone部署到Heroku
  4. 可逆迁移

我build议更新你的Gemfile来使用边栏。 例如:

 gem 'rails', :git => 'git://github.com/rails/rails.git' gem 'arel', :git => 'git://github.com/rails/arel.git' gem 'rack', :git => 'git://github.com/rack/rack.git' gem 'sprockets', :git => 'git://github.com/sstephenson/sprockets.git' gem 'sqlite3' # Asset template engines gem 'sass', '~> 3.1.0.alpha' gem 'coffee-script' gem 'uglifier' 

你可以在这里阅读更多http://pogodan.com/blog/2011/04/24/easy-edge-rails

http://railscasts.com/episodes/282-upgrading-to-rails-3-1

这个railscast可能会有所帮助!

如果我正确理解你的问题,这是如何:

 gem install rails --pre 

这是一个相当不错的指南,有关安装Rails 3.1的一些细节:

http://railsapps.github.com/installing-rails-3-1.html

使用本指南升级轨道3.0.7和3.0.9应用程序为我工作

http://davidjrice.co.uk/2011/05/25/how-to-upgrade-a-rails-application-to-version-3-1-0.html

如果你愿意,你可以跳过步骤3和更高的步骤 – 虽然你不会利用rails 3.1中的所有新function,但它仍然可以工作。