Ben Scofield presents his solution for building web applications in Rails that contain a large chunk of static content. This approach merges the management of static content with the power that the Rails framework provides to developers.
Call Girls Zirakpurđ§ Book Nowđą7837612180 đđCall Girl Service In Zirakpur No A...
Â
Building and Working With Static Sites in Ruby on Rails
1. Building and Working with Static
Sites in Ruby on Rails
Ben Scofield
ben@viget.com
Senior Developer, Viget Labs
May 18, 2007
Š Copyright 2007 Viget Labs, LLC â www.viget.com
2. 2
Me
⢠8 years building web apps (Perl, VBScript, C#,
Java, PHP)
⢠Ruby and Rails for 2 years
⢠Tech Lead for Seth Godinâs Squidoo
⢠ben@viget.com
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
3. 3
Viget Labs
⢠Full-service web design and development
consultancy
⢠Three types of clients
â Flash-based entertainment sites
â Web 2.0 startups
â Mid-sized, mostly static sites
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
4. 4
âStaticâ sites
⢠Fully static: CMS
⢠Small scale: About Us, Contact Info
⢠Large scale: ACVA (funside.com)
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
5. 5
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
6. 6
Hybrid sites
⢠Distinct static and dynamic content (About Us)
⢠Intermingled static and dynamic content
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
7. 7
THE PROBLEM
⢠Building a static site should be easy
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
8. 8
And in PHP, it is
⢠Drop a file and see it run, even with embedded
PHP code
⢠Use configuration files to route
requests, set page-specific data,
handle redirects, set page metadata...
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
9. 9
But in Rails?
⢠Actions for every view? sigh
⢠Actionless views? pfft
⢠and what about page-specific data?
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
10. 10
So why bother with Rails?
⢠Less interesting: morale
⢠More interesting: productivity
â task switching and specialization
⢠Most interesting: hybrid sites
â current and future
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
11. 11
Notes
⢠Error handling - ignore its absence
⢠Historical tour, Edge at the time
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
12. 12
Solution 1: Rails on PHP
⢠Routing + Convention + Action + Caching =
basic PHP?
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
13. 13
Routing
⢠The beauty of the catch-all route:
⢠Declare all other routes explicitly!
or namespace the catch-all:
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
14. 14
Convention
⢠All templates under a single app/views
subfolder
⢠Move as much to the layout as possible
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
16. 16
Caching
⢠Short and sweet: caches_page :show
⢠Rails caches under the request URI, not the
controlller/action
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
17. 17
Problems with Solution #1
⢠Manage page data in the views? pfft
⢠Manually expire the cache? pfft
⢠No support for redirects (site revisions)? pfft
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
18. 18
Solution 2: Configuratron 2000
⢠Use configuration files to overcome the
problems of Solution 1
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
19. 19
navigation.yml
⢠Central management for pages, page data, and
relationships
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
20. 20
Memoryâs cheap, right?
⢠Load it all into memory
⢠and pull it out when you need it
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
21. 21
Caching
⢠Expire the entire cache when navigation.yml is
updated
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
22. 22
redirects.yml
⢠Use the redirect entry to find the new page
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
23. 23
Problems with Solution #2
⢠Keeping it all in memory? pfft
⢠Upload new config files to change content? pfft
⢠All-or-nothing caching? pfft
⢠Not very Rails Wayish, is it?
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
24. 24
Solution 3: CRUDification
⢠So what is Rails best at?
â CRUD!
⢠Can we make static sites CRUDdier without
creating a full-blown CMS?
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
25. 25
Move it all to the DB...
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
26. 26
Pages and Variables
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
28. 28
Sitemaps for nothing
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
29. 29
Cascading Variables for Free
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
30. 30
Web UI
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
31. 31
Cache sweeping made easy
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
32. 32
Problems with Solution #3
⢠Search
⢠Portability
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
33. 33
Solution 4: Feed the DB
⢠Store page content in the DB
⢠Upload files or enter content through the UI
⢠Search with ... whatever
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
34. 34
Reduce, Reuse, Recycle
⢠Package the framework for distribution
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
35. 35
Question 1: To Engine or To Plugin?
⢠Engines
â Cons: deprecated, people yell at you
⢠Plugins
â Pros: everybody loves plugins!
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
36. 36
Question 2: To Generate or To App?
⢠Generators
â Pros: customized code
â Cons: hard to update
⢠Plugin Applications
â Pros: easy to update, fast start
â Cons: possible conflicts
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
37. 37
Plugin Applications
⢠Miniature Rails applications - controllers,
models, and views
⢠Grant complete, self-contained functionality to
another application
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
38. 38
Using the framework
⢠Install the plugin-app
⢠Update config files
â environment.rb and routes.rb
â (optional) .htaccess and environment.rb
⢠Run the migrations
⢠Enjoy your newly more-static site!
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
39. 39
Key Points
⢠The catch-all route is the best kind of magic
⢠Play to Railsâ strengths
⢠Handle both large- and small-scale static sites
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
40. 40
Get the (alpha) framework at
http://www.viget.com/railsconf/
Questions?
Ask âem now or email me at
ben@viget.com
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com
41. 41
No questions, eh?
⢠Why even bother with this? Why not a CMS?
⢠Use content_for in the views to move more to
the layout
⢠Plugems vs. engines vs. plugins?
⢠More about plugin-apps?
Viget Labs
we build web business
May 18, 2007 Š Copyright 2007 Viget Labs, LLC â www.viget.com