Slide 1

Slide 1 text

Rails3 uby M a t t A i m o n e t t i Future

Slide 2

Slide 2 text

MIM me Matt Aimonetti

Slide 3

Slide 3 text

“morally loose, cheese eating surrender monkey” Ted Han

Slide 4

Slide 4 text

+ =

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

FUTURE time period commonly understood to contain all events that have yet to occur.

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

RAILS 3 the future of web development

Slide 14

Slide 14 text

E V O L U T I O N

Slide 15

Slide 15 text

A U D I E N C E Rails Merb app developers entrepreneurs designers app developers enterprise plugin authors

Slide 16

Slide 16 text

Rails 3 app developers entrepreneurs enterprise plugin authors designers A U D I E N C E

Slide 17

Slide 17 text

P R I N C I P L E S Rails Merb programmer happiness strong conventions fluent design app developers flexibility modularity speed

Slide 18

Slide 18 text

P R I N C I P L E S Rails 3 programmer happiness strong conventions fluent design flexibility modularity speed

Slide 19

Slide 19 text

A T O M I C S T R U C T U R E

Slide 20

Slide 20 text

A T O M I C N U C L E U S proton neutron Rails 2

Slide 21

Slide 21 text

A T O M I C C L U S T E R Rails 3

Slide 22

Slide 22 text

ActiveModel + ORM ActionPack ActionWorker ActiveSupport Generators ActiveResource ActionMailer Rack middlewares Rails stack

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

NEW

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

rack love

Slide 30

Slide 30 text

constraints/filters

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

Rack Apps intregration

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

mountable apps

Slide 35

Slide 35 text

rack entry point class MyForum < Rails::Application

Slide 36

Slide 36 text

A C T I V E W O R K E R push_queue Thumbnailer.new(path, user, :action => :process)

Slide 37

Slide 37 text

background process

Slide 38

Slide 38 text

U N O B T R U S I V E J A V A S C R I P T html 5

Slide 39

Slide 39 text

html ❺ ‘data-*’ attributes

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

one js API interface for all libs

Slide 42

Slide 42 text

O R M A G N O S T I C I T Y

Slide 43

Slide 43 text

Active _ Record still the default Active Relation common API

Slide 44

Slide 44 text

Datamapper Legacy repository multiple repository query optimization various datastores

Slide 45

Slide 45 text

Sequel Prepared Statements Sharding Highly customizable SQL Perf

Slide 46

Slide 46 text

Couchrest/ mongomapper/ your _ ORM etc..

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

P E R F O R M A N C E

Slide 49

Slide 49 text

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 3 SPEED BOOST 3.02x 2.59x 2.88x 2.16x 2.44x not final

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

RUBY future

Slide 52

Slide 52 text

Ruby 1.8.7 1.9.x IronRuby JRuby MacRuby Rubinius 2.0

Slide 53

Slide 53 text

Ruby 1.9.x 1.9.x better perf better threading fibers official Ruby recommended

Slide 54

Slide 54 text

RAILS 3 BENCHMARKS 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

Slide 55

Slide 55 text

Ruby 2.0 not started scalability performance maintenabilty multiple VMs selector namespace method combination etc.. ¿future?

Slide 56

Slide 56 text

IronRuby 0.9.1 .NET integration VisualStudio 201? Silverlight IIS web server Microsoft

Slide 57

Slide 57 text

IronRuby VisualStudio 201? better tools even better integration performance ¿future?

Slide 58

Slide 58 text

JRuby 1.4.0 RC1 java integration native threads deployment JVM

Slide 59

Slide 59 text

JRuby •java profiling/debugging tools •better integration (hibernate..) •.java file compilation •better integration (server, mobile etc..) •performance ¿future?

Slide 60

Slide 60 text

MacRuby 0.5 RC1 Cocoa integration AOT compilation performance GCD Apple support & tools OSX platform

Slide 61

Slide 61 text

MacRuby •iPhone •instrumentation •better dev tools •performance •standardized •linux •any C libs ¿future? biased

Slide 62

Slide 62 text

Rubinius 0.12 ruby almost all the way full introspection C extensions

Slide 63

Slide 63 text

Rubinius •AOT compiler •very powerful debugger •real time profiler •performance ¿future?

Slide 64

Slide 64 text

VOCÊ you