future of ruby and rails

64
Rails3 uby Matt Aimonetti Future

Upload: matt-aimonetti

Post on 15-May-2015

4.947 views

Category:

Technology


2 download

DESCRIPTION

Presentation given to RailsSummit 2009 in Brazil. The presentation covers the plan for Rails3 and the different Ruby implementations.

TRANSCRIPT

Page 1: Future Of Ruby And Rails

Rails3uby

Matt Aim

onetti

Future

Page 2: Future Of Ruby And Rails

MIMme

Matt Aimonetti

Page 3: Future Of Ruby And Rails

“morally loose, cheese eating surrender monkey”Ted Han

Page 4: Future Of Ruby And Rails

+

=

Page 5: Future Of Ruby And Rails
Page 6: Future Of Ruby And Rails
Page 7: Future Of Ruby And Rails
Page 8: Future Of Ruby And Rails

FUTUREtime period commonly understood

to contain all events that have yet to occur.

Page 9: Future Of Ruby And Rails
Page 10: Future Of Ruby And Rails
Page 11: Future Of Ruby And Rails
Page 12: Future Of Ruby And Rails
Page 13: Future Of Ruby And Rails

RAILS 3the future of web development

Page 14: Future Of Ruby And Rails

E V O L U T I O N

Page 15: Future Of Ruby And Rails

A U D I E N C E

Rails

Merb

app developersentrepreneursdesigners

app developersenterpriseplugin authors

Page 16: Future Of Ruby And Rails

Rails 3

app developersentrepreneursenterpriseplugin authorsdesigners

A U D I E N C E

Page 17: Future Of Ruby And Rails

P R I N C I P L E S

Rails

Merb

programmer happinessstrong conventionsfluent design

app developersflexibilitymodularityspeed

Page 18: Future Of Ruby And Rails

P R I N C I P L E S

Rails 3

programmer happinessstrong conventionsfluent designflexibilitymodularityspeed

Page 19: Future Of Ruby And Rails

A T OM I C S T R U C T U R E

Page 20: Future Of Ruby And Rails

A T OM I C N U C L E U S

protonneutron

Rails 2

Page 21: Future Of Ruby And Rails

A T OM I C C L U S T E R

Rails 3

Page 22: Future Of Ruby And Rails

ActiveModel+ ORM

ActionPack

ActionWorker

ActiveSupport

Generators

ActiveResource

ActionMailer

Rack middlewares

Rails stack

Page 23: Future Of Ruby And Rails
Page 24: Future Of Ruby And Rails
Page 25: Future Of Ruby And Rails

NEW

Page 26: Future Of Ruby And Rails

R O U T E Rmatch ‘awesome/:action’

Page 27: Future Of Ruby And Rails
Page 28: Future Of Ruby And Rails
Page 29: Future Of Ruby And Rails

rack love

Page 30: Future Of Ruby And Rails

constraints/filters

Page 31: Future Of Ruby And Rails

constraints(:ip => /192\.168\.1\.\d\d\d/) do get 'admin', :to => "dashboard#index"end

Page 32: Future Of Ruby And Rails

Rack Apps intregration

Page 33: Future Of Ruby And Rails

Rack app intregration

namespace :facebook do use MyMiddleware match "/game", :to => SinatraApp end

Page 34: Future Of Ruby And Rails

mountable apps

Page 35: Future Of Ruby And Rails

rack entry point

class MyForum < Rails::Application

Page 36: Future Of Ruby And Rails

A C T I V EWO R K E R

push_queueThumbnailer.new(path, user, :action => :process)

Page 37: Future Of Ruby And Rails

background process

Page 38: Future Of Ruby And Rails

U N O B T R U S I V EJ A V A S C R I P T

html 5

Page 39: Future Of Ruby And Rails

html ❺ ‘data-*’ attributes

Page 40: Future Of Ruby And Rails
Page 41: Future Of Ruby And Rails

one js APIinterface for all libs

Page 42: Future Of Ruby And Rails

O RM AGN O S T I C I T Y

Page 43: Future Of Ruby And Rails

Active_Recordstill the default

ActiveRelation

common API

Page 44: Future Of Ruby And Rails

Datamapper

Legacy repository

multiple repository

queryoptimization

various datastores

Page 45: Future Of Ruby And Rails

Sequel

PreparedStatements Sharding

Highly customizable

SQLPerf

Page 46: Future Of Ruby And Rails

Couchrest/mongomapper/

your_ORMetc..

Page 47: Future Of Ruby And Rails

I N T E R N A LC L E A N U P

Page 48: Future Of Ruby And Rails

P E R F O RMANCE

Page 49: Future Of Ruby And Rails

hello world

render

partial

10 partials

collection of 10

103% 207% 310%

Rails 3/Ruby 1.9 benchmarked against Rails 2.3.x/Ruby 1.8.7

RAILS 3SPEED BOOST

3.02x

2.59x

2.88x

2.16x

2.44x

not final

Page 50: Future Of Ruby And Rails

hello world

render

partial

10 partials

collection

200% 400% 600% 800%

8x

4x

4.9x

3.38x

3.39x

6.27x

1.63x

1.18x

2.49x

2.78x

スピードアップ 1.9

Ruby 1.8 Ruby 1.9

jeremy

kemper

Ruby world 2009

Page 51: Future Of Ruby And Rails

RUBYfuture

Page 52: Future Of Ruby And Rails

Ruby

1.8.7

1.9.xIronRuby

JRubyMacRubyRubinius

2.0

Page 53: Future Of Ruby And Rails

Ruby 1.9.x

1.9.xbetter perf

better threadingfibers

official Rubyrecommended

Page 54: Future Of Ruby And Rails

RAILS 3BENCHMARKS

Ruby 1.8.6 REE 1.87 Ruby 1.9.1

hello world

render

partial

10 partials

collection of 10

-12% 7% 25% 43% 62% 80%

35%

77%

24%

55%

50%

6%

-2%

3%

-10%

17%

-6%

-12%

-10%

-3%

-4%

% faster than Ruby 1.8.7

not final

http://github.com/mattetti/rails-simple-benches

Page 55: Future Of Ruby And Rails

Ruby 2.0

not started

scalabilityperformancemaintenabiltymultiple VMs

selector namespacemethod combination

etc..

¿future?

Page 56: Future Of Ruby And Rails

IronRuby

0.9.1

.NET integrationVisualStudio 201?

SilverlightIIS web server

Microsoft

Page 57: Future Of Ruby And Rails

IronRubyVisualStudio 201?

better toolseven better integration

performance

¿future?

Page 58: Future Of Ruby And Rails

JRuby

1.4.0 RC1

java integrationnative threads

deploymentJVM

Page 59: Future Of Ruby And Rails

JRuby• java profiling/debugging tools•better integration (hibernate..)• .java file compilation•better integration (server,

mobile etc..)•performance

¿future?

Page 60: Future Of Ruby And Rails

MacRuby

0.5 RC1

Cocoa integrationAOT compilation

performanceGCD

Apple support & toolsOSX platform

Page 61: Future Of Ruby And Rails

MacRuby•iPhone•instrumentation•better dev tools•performance•standardized•linux•any C libs•C extensions

¿future?

biased

Page 62: Future Of Ruby And Rails

Rubinius

0.12ruby almost all the way

full introspectionC extensions

Page 63: Future Of Ruby And Rails

Rubinius

•AOT compiler•very powerful debugger•real time profiler•performance

¿future?

Page 64: Future Of Ruby And Rails

VOCÊyou