59
OSCON 2010 Upgrading to Rails 3 Thursday, July 22, 2010

Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Upgrading to

Rails 3Thursday, July 22, 2010

Page 2: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Michael Bleigh@mbleigh

Thursday, July 22, 2010

Page 3: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

Thursday, July 22, 2010

Page 4: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Jeremy McAnally’sRails Upgrade Handbook

bit.ly/railsupgrade

Thursday, July 22, 2010

Page 5: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Rails 3 isDifferent

Thursday, July 22, 2010

Page 6: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Rails 3 is aBig #ange

Thursday, July 22, 2010

Page 7: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Why the hell should I bother?

Thursday, July 22, 2010

Page 8: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Modularity

Thursday, July 22, 2010

Page 9: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Rails 2.3 StackActiveRecord

ActiveSupport

ActiveResource

ActionPack

Test::Unit

Thursday, July 22, 2010

Page 10: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Rails 3 Ecosystem

ActiveSupport

ActiveResource

ActionPack

ActiveModel

ActiveRecordDataMapper

MongoMapper

RSpecTest::Unit

Bacon

Thursday, July 22, 2010

Page 11: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Rails 2.3 Controller

ActionController::Base

ApplicationController

YourController

Thursday, July 22, 2010

Page 12: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Rails 3 Controller

ActionController::Base

ApplicationController

YourController

AbstractController::Base

ActionController::Metal

Thursday, July 22, 2010

Page 13: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Less Monkeypatching

Thursday, July 22, 2010

Page 14: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Security

darwinbell via Flickr

Thursday, July 22, 2010

Page 15: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

small change,

big impact

Thursday, July 22, 2010

Page 16: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

HTML is escapedby default.

Thursday, July 22, 2010

Page 17: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

<!-- Rails 2.3 --><div class='comment'> <%= comment.body %></div>

<!-- Rails 3 --><div class="comment"> <%= comment.body.html_safe %></div>

<!-- Rails 3 (alternate) --><div class="comment"> <%=raw comment.body %></div>

Thursday, July 22, 2010

Page 18: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

It’s a good thing.TM

Thursday, July 22, 2010

Page 19: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

New Apis

Thursday, July 22, 2010

Page 20: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

$e Router

Thursday, July 22, 2010

Page 21: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Rack Everywhere!

Thursday, July 22, 2010

Page 22: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Fancy New DSL

Thursday, July 22, 2010

Page 23: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

More Powerful

Thursday, July 22, 2010

Page 24: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

# Rails 2.3map.connect '/help', :controller => 'pages', :action => 'help'

# Rails 3match '/help', :to => 'pages#help'

# Rails 2.3map.resources :users do |users| users.resources :commentsend

# Rails 3resources :users do resources :commentsend

Thursday, July 22, 2010

Page 25: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

# Rails 2.3with_options :path_prefix => 'admin', :name_prefix => 'admin' do |admin| admin.resources :users admin.resources :postsend

# Rails 3namespace :admin resources :users resources :postsend

Thursday, July 22, 2010

Page 26: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

# Rails 3

constraints(:subdomain => 'api') do resources :statuses resources :friendsend

match '/hello', :to => lambda{ |env| [200, {'Content-Type' => 'text/plain'}, 'Hello World']}

match '/other-site', :to => redirect('http://url.com')

Thursday, July 22, 2010

Page 27: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

A%ionMailer

Thursday, July 22, 2010

Page 28: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

It’s (mostly) justa controller.

Thursday, July 22, 2010

Page 29: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

class Notifier < ActionMailer::Base default :from => "[email protected]"

def welcome_email(user) @name = user.name attachments['terms.pdf'] = File.read( Rails.root.join('docs/terms.pdf') ) mail(:to => user.email, :subject => "G’day Mate!") endend

Thursday, July 22, 2010

Page 30: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

class UsersController < ApplicationController respond_to :html def create @user = User.new(params[:user])

Notifier.welcome_email(@user).deliver if @user.save respond_with @user endend

Thursday, July 22, 2010

Page 31: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Bundler

Thursday, July 22, 2010

Page 32: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Caution: Entering Controversy

Thursday, July 22, 2010

Page 33: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

# Rails 2.3

# environment.rbconfig.gem 'acts-as-taggable-on'config.gem 'ruby-openid', :lib => false

# test.rbconfig.gem 'rspec'config.gem 'cucumber'

# Rails 3

# Gemfilegem 'acts-as-taggable-on'gem 'ruby-openid', :require => false

group :test do gem 'rspec' gem 'cucumber'end

Thursday, July 22, 2010

Page 34: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Dependency Resolver

Thursday, July 22, 2010

Page 35: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

A%iveRelation

Thursday, July 22, 2010

Page 36: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Like named scopes, only more so.

Thursday, July 22, 2010

Page 37: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

# Rails 2.3

Book.all( :conditions => {:author => "Chuck Palahniuk"}, :order => "published_at DESC", :limit => 10)

# Rails 3

Book.where(:author => "Chuck Palahniuk") .order("published_at DESC").limit(10)

Thursday, July 22, 2010

Page 38: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

Inherently Chainable

Thursday, July 22, 2010

Page 39: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

# Rails 3

def index @books = Book.where(:author => params[:author]) if params[:author] @books = @books.order(:title) if params[:sort] == 'title' respond_with @booksend

Thursday, July 22, 2010

Page 40: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

# Rails 2.3

class Book named_scope :written_by {|a| {:conditions => {:author => a}}} named_scope :after {|d| {:conditions => ["published_on > ?", d]}}# Rails 3

class Book class << self def written_by(name) where(:author => name) end def after(date) where(["published_on > ?", date]) end endend

Thursday, July 22, 2010

Page 41: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Be&er H'ks

Thursday, July 22, 2010

Page 42: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Generators

Thursday, July 22, 2010

Page 43: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

config.generators do |g| g.orm :mongomapper g.test_framework :rspec g.integration_tool :rspecend

rails g model my_model

Thursday, July 22, 2010

Page 44: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Engines

Thursday, July 22, 2010

Page 45: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

#lib/your_plugin/engine.rbrequire "your_plugin"require "rails"

module YourPlugin class Engine < Rails::Engine engine_name :your_plugin endend

Thursday, July 22, 2010

Page 46: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Lots more...railsdispatch.com

edgeguides.rubyonrails.org

Thursday, July 22, 2010

Page 47: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

But we’re already on Rails 2.3!

Thursday, July 22, 2010

Page 48: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

How do we cope?

Thursday, July 22, 2010

Page 49: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Ignore it alland cheat.github.com/rails/

rails_upgrade

Thursday, July 22, 2010

Page 50: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Finds Key Blockers:

Routes, Bundler, application.rb

Thursday, July 22, 2010

Page 51: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

3 Step Process

Thursday, July 22, 2010

Page 52: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Analyze Your Apprake rails:upgrade:check

Thursday, July 22, 2010

Page 53: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Backup 2.3 Filesrake rails:upgrade:backup

Thursday, July 22, 2010

Page 54: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Run Upgradesrake rails:upgrade:routesrake rails:upgrade:gemsrake rails:upgrade:configuration

Thursday, July 22, 2010

Page 55: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

Takeaways

Thursday, July 22, 2010

Page 56: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

Tests help. Unfortunately, they

may not run.

Thursday, July 22, 2010

Page 57: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

Don’t be afraid to re-generate.

Thursday, July 22, 2010

Page 58: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

Just take it one problem at a time.

Thursday, July 22, 2010

Page 59: Upgrading to Rails 3 - assets.en.oreilly.comassets.en.oreilly.com/1/event/45/Upgrading to Rails 3 Presentation.pdfOSCON 2010 Jeremy McAnallyÕs Rails Upgrade Handbook bit.ly/railsupgrade

OSCON 2010

(estions?@mbleigh @intridea

github.com/mbleigh/upgrade-to-rails3

Thursday, July 22, 2010