Your SlideShare is downloading. ×
Building and Working With Static Sites in Ruby on Rails
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Building and Working With Static Sites in Ruby on Rails

8,217
views

Published on

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 …

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.

Published in: Business, Technology

1 Comment
5 Likes
Statistics
Notes
  • That was really really helpful to me just now when setting up a Rails app that needs to serve a lot of static pages. Thanks so much for posting, it's still very relevant in 2012!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
8,217
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
162
Comments
1
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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
  • 15. 15 Action 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
  • 27. 27 Redirects 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

×