SlideShare a Scribd company logo
5 Awesome Gems
                            ...and some fun with MemeGenerator




                                                             Custom Software, Simplified

Wednesday, February 6, 13
Hi!
                    • I’m Dan
                     • Co-Organizer @ BostonRB
                     • Principal Consultant @ LaunchWare
                     • Head of Instruction @ Launch
                              Academy

                            • dpickett on Twitter / GitHub/
                              everyHub

                                                              Custom Software, Simplified

Wednesday, February 6, 13
Some Favorites

                    • inherited_resources
                    • kaminari
                    • guard
                    • configatron
                    • bourbon
                                            Custom Software, Simplified

Wednesday, February 6, 13
Inherited Resources




                                Custom Software, Simplified

Wednesday, February 6, 13
Why?

                    • Makes writing boilerplate controllers
                            easier

                    • Easy internationalization of flash text
                            with the Responders gem

                    • Easy API generation for JSON and XML

                                                         Custom Software, Simplified

Wednesday, February 6, 13
Why Not?

                    • Another DSL/Library to Learn
                    • Can sometimes get in your way for
                            nonstandard controller actions

                    • Not good for beginners - feel the pain
                            of repetition in your controllers, first



                                                                 Custom Software, Simplified

Wednesday, February 6, 13
class	
  AccountsController	
  <	
  ApplicationController
            	
  	
  respond_to	
  :json
            	
  	
  inherit_resources	
  #gives	
  you	
  all	
  RESTful	
  actions	
  for	
  Account
            end




                                                                                           Custom Software, Simplified

Wednesday, February 6, 13
Kaminari




                                       Custom Software, Simplified

Wednesday, February 6, 13
Why?
                    • Easily customizable/themed
                            •   great configuration options

                            •   awesome generators

                    • Scope-Based
                    • Doesn’t hack core objects
                    • I18n ready for localization
                                                             Custom Software, Simplified

Wednesday, February 6, 13
Why Not?

                    • Other engines might express alternative
                            decisions (refinery, ie)

                    • Can be painful to paginate non-scope/
                            AREL collections



                                                       Custom Software, Simplified

Wednesday, February 6, 13
#in	
  your	
  controller
             @users	
  =	
  User.
             	
  	
  page(params[:page]).
             	
  	
  per(50)

             #in your view
             <%= paginate @users %>




                                            Custom Software, Simplified

Wednesday, February 6, 13
guard




                                    Custom Software, Simplified

Wednesday, February 6, 13
Why?

                    • Don’t constantly have to run tests
                            manually

                    • Invokes tests for files that change
                    • Extensible plugin architecture
                    • Extensible notification architecture

                                                           Custom Software, Simplified

Wednesday, February 6, 13
Why Not?


                    • Minor issue where guard plugins can
                            lag behind on dependencies




                                                         Custom Software, Simplified

Wednesday, February 6, 13
Configatron




                                         Custom Software, Simplified

Wednesday, February 6, 13
Why?

                    • Easy, dynamic configuration for gems
                            and applications

                    • Configure via manual code, hash or
                            YAML

                    • Plays nicely with Rails Application
                            configuration


                                                            Custom Software, Simplified

Wednesday, February 6, 13
Why Not?


                    • nulls vs. blanks can be confusing


                                                          Custom Software, Simplified

Wednesday, February 6, 13
module	
  Facebook
         	
  	
  def	
  self.secret_key=(key)
         	
  	
  	
  
                  	
  configatron.facebook.secret_key	
  =	
  key
         	
  	
  end

         	
  	
  def	
  self.secret_key
         	
  	
  	
  
                  	
  configatron.facebook.secret_key
         	
  	
  end
         end




                                                             Custom Software, Simplified

Wednesday, February 6, 13
Bourbon




                                      Custom Software, Simplified

Wednesday, February 6, 13
Why?

                    • Handy shortcuts for common CSS
                            idioms

                    • Beautiful documentation
                    • Exposes you to lots of great/creative
                            CSS uses



                                                        Custom Software, Simplified

Wednesday, February 6, 13
Why Not?

                    • Can be difficult to install/configure as
                            part of the asset pipeline

                    • You still need to be an informed
                            consumer of experimental CSS
                            features



                                                           Custom Software, Simplified

Wednesday, February 6, 13
http://bourbon.io




                                                Custom Software, Simplified

Wednesday, February 6, 13
To Learn More...




                               http://launchacademy.co
                            The Fun Begins May 1st
                                                         Custom Software, Simplified

Wednesday, February 6, 13
For More Gems...


                    • Ignition, our rails template is available
                            •   http://github.com/LaunchWare/ignition




                                                                 Custom Software, Simplified

Wednesday, February 6, 13
Questions?



                                         Custom Software, Simplified

Wednesday, February 6, 13

More Related Content

PDF
Designing Puppet: Roles/Profiles Pattern
PDF
Python performance profiling
PDF
Invokedynamic in 45 Minutes
PPT
Extreme Programming Deployed
PDF
Devops what it means to me
PPT
Reverse engineering
PDF
Mobile Web to Mobile Apps
PDF
Qcon talk
Designing Puppet: Roles/Profiles Pattern
Python performance profiling
Invokedynamic in 45 Minutes
Extreme Programming Deployed
Devops what it means to me
Reverse engineering
Mobile Web to Mobile Apps
Qcon talk

Similar to 5 Of Our Favorite Ruby Gems (20)

PDF
App Engine Meetup
PDF
Using The Page Object Pattern
PDF
Aloha on-rails-2009
PPTX
Programming Languages Presentation (BY MetaSense Marketing)
PPTX
Orlando DNN Usergroup Pres 12/06/11
PDF
eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...
PDF
Optimizing WordPress Performance on Shared Web Hosting
PDF
Hadoop meets Cloud with Multi-Tenancy
PDF
jQuery Mobile, Backbone.js, and ASP.NET MVC
PDF
VIB - Very Important Bundles
PDF
Fault tolerance - look, it's simple!
PPT
Scaling the synchronous web - Elaine Wherry
PDF
Rubypalooza 2009
PDF
Agile framework Support
PDF
Cross-platform tools for mobile application development
PPTX
SpringOne Tour: 10 Practical Tips for Building Native and Serverless Spring A...
PDF
Let's speed it up a bit (AmsterdamPHP)
PPTX
Techzim Surge: Important Considerations for Hosting Web or Mobile Apps
PDF
static ABAP code analyzers
PDF
Frontend Engineer Toolbox
App Engine Meetup
Using The Page Object Pattern
Aloha on-rails-2009
Programming Languages Presentation (BY MetaSense Marketing)
Orlando DNN Usergroup Pres 12/06/11
eSynergy Andy Hawkins - Enabling DevOps through next generation configuration...
Optimizing WordPress Performance on Shared Web Hosting
Hadoop meets Cloud with Multi-Tenancy
jQuery Mobile, Backbone.js, and ASP.NET MVC
VIB - Very Important Bundles
Fault tolerance - look, it's simple!
Scaling the synchronous web - Elaine Wherry
Rubypalooza 2009
Agile framework Support
Cross-platform tools for mobile application development
SpringOne Tour: 10 Practical Tips for Building Native and Serverless Spring A...
Let's speed it up a bit (AmsterdamPHP)
Techzim Surge: Important Considerations for Hosting Web or Mobile Apps
static ABAP code analyzers
Frontend Engineer Toolbox
Ad

More from Dan Pickett (8)

PDF
Developing Developers Through Apprenticeship
PDF
Intro to jquery
PDF
Engines Lightning Talk
KEY
Refinery CMS: BostonRB CMS Showdown
KEY
VCR Lightning Talk
KEY
A Brief Introduction to JQuery Mobile
KEY
So You've Got a Software Idea...Now What?
KEY
It's Not Just About Code
Developing Developers Through Apprenticeship
Intro to jquery
Engines Lightning Talk
Refinery CMS: BostonRB CMS Showdown
VCR Lightning Talk
A Brief Introduction to JQuery Mobile
So You've Got a Software Idea...Now What?
It's Not Just About Code
Ad

Recently uploaded (20)

PPTX
MYSQL Presentation for SQL database connectivity
PDF
Empathic Computing: Creating Shared Understanding
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Getting Started with Data Integration: FME Form 101
PPTX
Machine Learning_overview_presentation.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Encapsulation theory and applications.pdf
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
A comparative analysis of optical character recognition models for extracting...
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
MYSQL Presentation for SQL database connectivity
Empathic Computing: Creating Shared Understanding
Dropbox Q2 2025 Financial Results & Investor Presentation
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Per capita expenditure prediction using model stacking based on satellite ima...
Programs and apps: productivity, graphics, security and other tools
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Getting Started with Data Integration: FME Form 101
Machine Learning_overview_presentation.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
Encapsulation theory and applications.pdf
SOPHOS-XG Firewall Administrator PPT.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Spectral efficient network and resource selection model in 5G networks
Building Integrated photovoltaic BIPV_UPV.pdf
A comparative analysis of optical character recognition models for extracting...
Digital-Transformation-Roadmap-for-Companies.pptx
Accuracy of neural networks in brain wave diagnosis of schizophrenia
gpt5_lecture_notes_comprehensive_20250812015547.pdf

5 Of Our Favorite Ruby Gems

  • 1. 5 Awesome Gems ...and some fun with MemeGenerator Custom Software, Simplified Wednesday, February 6, 13
  • 2. Hi! • I’m Dan • Co-Organizer @ BostonRB • Principal Consultant @ LaunchWare • Head of Instruction @ Launch Academy • dpickett on Twitter / GitHub/ everyHub Custom Software, Simplified Wednesday, February 6, 13
  • 3. Some Favorites • inherited_resources • kaminari • guard • configatron • bourbon Custom Software, Simplified Wednesday, February 6, 13
  • 4. Inherited Resources Custom Software, Simplified Wednesday, February 6, 13
  • 5. Why? • Makes writing boilerplate controllers easier • Easy internationalization of flash text with the Responders gem • Easy API generation for JSON and XML Custom Software, Simplified Wednesday, February 6, 13
  • 6. Why Not? • Another DSL/Library to Learn • Can sometimes get in your way for nonstandard controller actions • Not good for beginners - feel the pain of repetition in your controllers, first Custom Software, Simplified Wednesday, February 6, 13
  • 7. class  AccountsController  <  ApplicationController    respond_to  :json    inherit_resources  #gives  you  all  RESTful  actions  for  Account end Custom Software, Simplified Wednesday, February 6, 13
  • 8. Kaminari Custom Software, Simplified Wednesday, February 6, 13
  • 9. Why? • Easily customizable/themed • great configuration options • awesome generators • Scope-Based • Doesn’t hack core objects • I18n ready for localization Custom Software, Simplified Wednesday, February 6, 13
  • 10. Why Not? • Other engines might express alternative decisions (refinery, ie) • Can be painful to paginate non-scope/ AREL collections Custom Software, Simplified Wednesday, February 6, 13
  • 11. #in  your  controller @users  =  User.    page(params[:page]).    per(50) #in your view <%= paginate @users %> Custom Software, Simplified Wednesday, February 6, 13
  • 12. guard Custom Software, Simplified Wednesday, February 6, 13
  • 13. Why? • Don’t constantly have to run tests manually • Invokes tests for files that change • Extensible plugin architecture • Extensible notification architecture Custom Software, Simplified Wednesday, February 6, 13
  • 14. Why Not? • Minor issue where guard plugins can lag behind on dependencies Custom Software, Simplified Wednesday, February 6, 13
  • 15. Configatron Custom Software, Simplified Wednesday, February 6, 13
  • 16. Why? • Easy, dynamic configuration for gems and applications • Configure via manual code, hash or YAML • Plays nicely with Rails Application configuration Custom Software, Simplified Wednesday, February 6, 13
  • 17. Why Not? • nulls vs. blanks can be confusing Custom Software, Simplified Wednesday, February 6, 13
  • 18. module  Facebook    def  self.secret_key=(key)        configatron.facebook.secret_key  =  key    end    def  self.secret_key        configatron.facebook.secret_key    end end Custom Software, Simplified Wednesday, February 6, 13
  • 19. Bourbon Custom Software, Simplified Wednesday, February 6, 13
  • 20. Why? • Handy shortcuts for common CSS idioms • Beautiful documentation • Exposes you to lots of great/creative CSS uses Custom Software, Simplified Wednesday, February 6, 13
  • 21. Why Not? • Can be difficult to install/configure as part of the asset pipeline • You still need to be an informed consumer of experimental CSS features Custom Software, Simplified Wednesday, February 6, 13
  • 22. http://bourbon.io Custom Software, Simplified Wednesday, February 6, 13
  • 23. To Learn More... http://launchacademy.co The Fun Begins May 1st Custom Software, Simplified Wednesday, February 6, 13
  • 24. For More Gems... • Ignition, our rails template is available • http://github.com/LaunchWare/ignition Custom Software, Simplified Wednesday, February 6, 13
  • 25. Questions? Custom Software, Simplified Wednesday, February 6, 13