Upgrading from Rails 3 to Rails 3.1

Ruby on-RailsRubyRuby on-Rails-3Ruby on-Rails-3.1

Ruby on-Rails Problem Overview


How do you upgrade from Rails 3 to Rails 3.1 beta?

Ruby on-Rails Solutions


Solution 1 - Ruby on-Rails

This is what worked for me when updating an existing rails 3.0.8 project. Your mileage may vary...

Update the rails version specified in my Gemfile to use the latest release candidate:

gem 'rails', '3.1.0.rc4’

Update the bundle:

bundle update

Then update the project with the rake command:

rake rails:update

After cherry picking though the change conflicts I ran all my tests and they passed (yay!). I restarted the server and everything seems good so far.

However, this is not using the new asset pipeline yet. By that I mean the javascript and css (or sass) files are still being handled in the pre-pipeline manner. As I understand it, this is a perfectly viable option. But of course, I want the new goodness, so I believe the next steps are to include and additional gems (e.g. coffeescript, sass, uglifier, etc) and then to migrate the old files to the app/assets directory.

I found some details about that are here:

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

Hope that was helpful.

Solution 2 - Ruby on-Rails

I just upgraded from 3.0 to 3.1 by changing my Gemfile to:

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

I also commented out the following line below in config/environments/development.rb

# config.action_view.debug_rjs = true

Finally, make sure you enable the asset pipeline in config/application.rb

config.assets.enabled = true

I'm not sure if you've already read the release notes http://weblog.rubyonrails.org/2011/4/21/jquery-new-default

Solution 3 - Ruby on-Rails

Solution 4 - Ruby on-Rails

Upgrading Rails

Update: be cautious of using your system rake, as rake has been upgraded.

bundle exec rake

ensures you'll be using the correct rake for a given rails project (source)


I suggest beginning with a fresh app, then copying in your specific app information while shifting your resources into the new asset/sprockets format.

> An example > > While converting an older rails 2.3.4 > app to 3.0 I crashed and burned while > changing one file at a time over > within the project. Needless to say > that was a flawed strategy, but I did > learn a little along the way. I ended > up skipping 3.0 and moving to 3.1beta1 > with a fresh app, and copied my app > and public folders in after getting > the migrations right. That move had a > couple of outstanding issues, the most > important being that I didn’t use > rails edge for creating the new app > (thanks for the tip RubyInside). > > First snag the latest rails into an > easy to reference location: > > cd ~/goodtimes > > git clone > https://github.com/rails/rails.git > > My path includes a ~/Desktop/Dropbox/ > so my code is available everywhere. > > Then refer to that rails exec for > building a new app: > > ~/goodtimes/rails/bin/rails new bacon --edge

Depending on the complexity of your database, you'll either want to create new migrations using the change syntax or leave them be:

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

I had an issue deploying to Heroku, but theRubyRacer gem helped square that away. Here's an example of a simple Gem file:

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

I suspect there will be community utilities to help you automate migration from older versions of Rails to the --edge.

References:

  1. How to Play with Rails 3.1, CoffeeScript and All That Jazz Right Now
  2. The Four Horsemen of Rails 3.1beta, Coffee-Script, jQuery, SCSS and Assets
  3. Rails 3.1beta deployed to Heroku from your iPhone
  4. Reversible Migrations

Solution 5 - Ruby on-Rails

I recommend updating your Gemfile to use edge rails. For example:

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'

You can read more here http://pogodan.com/blog/2011/04/24/easy-edge-rails.

Solution 6 - Ruby on-Rails

Solution 7 - Ruby on-Rails

If i understood your question correctly this is how:

gem install rails --pre

Solution 8 - Ruby on-Rails

This is a pretty good guide which goes into some detail about installing Rails 3.1:

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

Solution 9 - Ruby on-Rails

Upgrading a rails 3.0.7 and 3.0.9 app using this guide worked for me

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

You can skip steps 3 and higher if you want--it will still work, although you won't be taking advantage of everything new in rails 3.1.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser730569View Question on Stackoverflow
Solution 1 - Ruby on-RailsJeff JohnstonView Answer on Stackoverflow
Solution 2 - Ruby on-RailsJon M.View Answer on Stackoverflow
Solution 3 - Ruby on-Railsbor1sView Answer on Stackoverflow
Solution 4 - Ruby on-RailsMark EsselView Answer on Stackoverflow
Solution 5 - Ruby on-RailstwmillsView Answer on Stackoverflow
Solution 6 - Ruby on-RailsRushabh Ajay HathiView Answer on Stackoverflow
Solution 7 - Ruby on-RailsabaloghView Answer on Stackoverflow
Solution 8 - Ruby on-RailsJosh DelsmanView Answer on Stackoverflow
Solution 9 - Ruby on-RailsspnkrView Answer on Stackoverflow