All
gems
start with a namespace
Saturday, April 6, 13
Slide 4
Slide 4 text
No
Rails app
starts with a namespace
Saturday, April 6, 13
Slide 5
Slide 5 text
Rails Gems
Saturday, April 6, 13
Slide 6
Slide 6 text
(a gorgeous and
infinite nothingness)
Rails Gems
Saturday, April 6, 13
Slide 7
Slide 7 text
(a gorgeous and
infinite nothingness
with all the bells and
whistles of active*)
Rails Gems
Saturday, April 6, 13
Slide 8
Slide 8 text
Try this!
Namespace everything
in your next app
Saturday, April 6, 13
Slide 9
Slide 9 text
Give yourself a box so
you can start thinking
outside of it
Saturday, April 6, 13
Slide 10
Slide 10 text
Component-based Ruby
and Rails Architectures
Stephan Hagemann
Saturday, April 6, 13
Slide 11
Slide 11 text
Saturday, April 6, 13
Slide 12
Slide 12 text
Let’s talk about large apps
Saturday, April 6, 13
Slide 13
Slide 13 text
Never build large apps.
Saturday, April 6, 13
Slide 14
Slide 14 text
Saturday, April 6, 13
Slide 15
Slide 15 text
Your app wants to kill you!
Sandi Metz
Saturday, April 6, 13
Slide 16
Slide 16 text
HTTP://WWW.FLICKRIVER.COM/PHOTOS/REXY85/263649949/
Saturday, April 6, 13
Slide 17
Slide 17 text
HTTP://WWW.PBASE.COM/SIGMADSLR/IMAGE/34745521
Saturday, April 6, 13
Slide 18
Slide 18 text
HTTP://WWW.PELAPAPAS.COM.MX/HTMLS/GENTE_ANIMALES.HTML
Saturday, April 6, 13
Slide 19
Slide 19 text
The secret to building large
apps is never build large
apps.
Justin Meyer
Saturday, April 6, 13
Slide 20
Slide 20 text
The secret to building large
apps is never build large
apps. Break your applications
into small pieces. Then,
assemble those testable, bite-
sized pieces into your big
application
Justin Meyer
Saturday, April 6, 13
Slide 21
Slide 21 text
But how?
Saturday, April 6, 13
Slide 22
Slide 22 text
github.com/shageman/the_next_big_thing
Saturday, April 6, 13
Slide 23
Slide 23 text
Saturday, April 6, 13
Slide 24
Slide 24 text
5 looser coupling
3 gems
1 one app
4 engines
8 HTTP SOA
2 modules
7 eco-system
6 services
Saturday, April 6, 13
Slide 25
Slide 25 text
1
The one app
Saturday, April 6, 13
Slide 26
Slide 26 text
Remember!
a gorgeous and infinite
nothingness
with all the bells and
whistles of active*
Saturday, April 6, 13
Slide 27
Slide 27 text
HTTP://WWW.FLICKR.COM/PHOTOS/WIDNR/6589525327/
Saturday, April 6, 13
Slide 28
Slide 28 text
ANNOYANCE
ENTRY
STRUCTURE
Saturday, April 6, 13
Slide 29
Slide 29 text
2
The modularized app
Saturday, April 6, 13
Slide 30
Slide 30 text
+
A higher level structure
Saturday, April 6, 13
Slide 31
Slide 31 text
HTTP://WWW.FLICKR.COM/PHOTOS/WIDNR/6589525327/
Saturday, April 6, 13
Slide 32
Slide 32 text
HTTP://EECUE.COM/P/31426/METAL-RECYCLING-YARD.HTML
Saturday, April 6, 13
Slide 33
Slide 33 text
ANNOYANCE
EMAIL
SIGNUP
STRUCTURE
Saturday, April 6, 13
Slide 34
Slide 34 text
3
The gem component app
Saturday, April 6, 13
Slide 35
Slide 35 text
+
Provably independent tests
Saturday, April 6, 13
Slide 36
Slide 36 text
Choose modules that tell
the story of the system
and contain a cohesive
set of concepts
Eric Evans
Saturday, April 6, 13
Slide 37
Slide 37 text
Saturday, April 6, 13
Slide 38
Slide 38 text
HTTP://WWW.SMASHINGMAGAZINE.COM/INFORMATION-AND-INSTRUCTIONAL-SIGNS-PART-1/
Saturday, April 6, 13
Slide 39
Slide 39 text
ANNOYANCE
EMAIL
SIGNUP
STRUCTURE
Saturday, April 6, 13
Slide 40
Slide 40 text
4
The Rails component app
Saturday, April 6, 13
Slide 41
Slide 41 text
+
Provable structure for Rails
Saturday, April 6, 13
Slide 42
Slide 42 text
Rails Engines
Saturday, April 6, 13
Slide 43
Slide 43 text
Engines are not just for
pagination, generic
admin, and authentication
Saturday, April 6, 13
Slide 44
Slide 44 text
Engines are not just
kaminari, generic admin,
and authentication
Saturday, April 6, 13
Slide 45
Slide 45 text
Engines are not just
kaminari, active admin,
and authentication
Saturday, April 6, 13
Slide 46
Slide 46 text
Engines are not just
kaminari, active admin,
and devise
Saturday, April 6, 13
Slide 47
Slide 47 text
Rails::Engine allows you to wrap a
specific Rails application or subset of
functionality and share it with other
applications or within a larger
packaged application.
http://edgeapi.rubyonrails.org/classes/
Rails/Engine.html
Saturday, April 6, 13
Slide 48
Slide 48 text
EMAIL
SIGNUP
TEASER
STRUCTURE
ANNOYANCE
Saturday, April 6, 13
Slide 49
Slide 49 text
What code smell did
you see?
Saturday, April 6, 13