Web development is one of the very few domains that require constant learning. Trends and technologies pop up in no time and in many instances, they go bust in the blink of an eye as well. Still, there are some web technologies and frameworks that have successfully passed the test of time with flying colors. Ruby on Rails is one splendid example.
Rails took what was an obscure language without much of a traction mainstream. Since then, a vocal and highly enthusiastic community has nurtured it with extensive documentation and ruby gems to extend the functionality of the core Rails framework. After the break, let us take a look at ruby gems that can help you put together a Rails powered web app in short order.
It’s hard to find web apps that don’t require an administration panel. There are a few ruby gems that offer admin interface functionality out of the box and Active Admin is one among them. The success of Active Admin is primarily credited to creating not just functional admin interfaces, but highly stylish ones at that. Comprehensive documentation works in favor of it too.
If you are looking for something more than an admin panel, try Hobo. It’s a super framework of sorts that’s capable of creating everything from a functional backend to subsites and permission systems. Doesn’t work with all versions of Rails though!
You could spend few hours writing code to check if users are who they say they are, or use a gem like Devise or Authlogic. Devise does a lot of heavy lifting for you and creates the respective models, views and controllers as well. For a change, are you searching for a way to allow users to sign in with their Facebook, Twitter or OpenID accounts? OmniAuth is what you are looking for.
Restricting users from accessing certain features of the app is key if you have a tiered subscription model. Gems like CanCan and canard take the pain out of the process. CanCan is simpler to use and the fact that it’s maintained by the legendary Ryan Bates makes it a perfect choice.
The built in email handling capabilities of Rails are good enough in most cases. Except when queuing mails to be sent later. ResqueMailer allows messages prepared by ActionMailer to be delivered asynchronously. With this gem installed, the user don’t have to sit around waiting for the email to be sent out before proceeding further.
It’s just not sending emails that could be executed in the background. Use gems like Resque, Foreman and Delayed Job, for creating background jobs, placing them on multiple queues, and processing them later.
Rails is pretty much locked down and common attacks like cross site scripting cannot happen with a web app built using RoR. There are a tons of gems out there to secure your web app and the one we highly recommend is Brakeman. It’s a static analysis tool which checks Rails applications for security vulnerabilities. This gem finds security issues at any stage of development and I suggest you install it ASAP.
It’s true that testing saves your bacon and there is a bouquet of ruby gems readily available to test your app any which way you want. Cucumber and RSpec come highly recommended and they both have loads of documentation to get you started quickly.
Now that you have developed and tested the app, it’s time to move the code to production. Popular Rails app hosters Heroku and Engineyard have gems of their own to facilitate the process. But, if your choice is an economical VPS or AWS, try Phusion Passenger or Capistrano.
It’s only natural for developers to offer an API so that other curious souls can leverage it to create cool mashups. RABL and Grape are two fantastic API builder frameworks widely used by the Rails community.
Moving beyond the core web app components, there are a variety of gems that help you tackle project specific requirements. For instance, you can link the web app to a CMS using Refinery or an online storefront using Spree. Dalli assists in high performance caching, Prawn generates dynamite PDF files and Paperclip excels in file attachment management.
I could go on and on, the list is endless! If I missed cool gems off the list, leave a comment and I’ll add it to the list.