The 15 best gems for ruby on rails web applications

In this post I will share the technology stack that we use in DevInterface in order to create Ruby on Rails web applications.

From my point of view, the gems that I’ll show later in this article represent the best options to develop in an Agile and DRY way and to achieve complex solutions in the shortest time possible.

These gems are the “core” of each our Gemfile because they allow to solve the most common problems that face in every application. In support of these gems, there are lot of gems that allow you to develop social functions, audit templates, integration with external APIs and more.

Devise (https://rubygems.org/gems/devise): Since some years ago, it represents the authentication mechanism preferred by all Rails developers. Powerful, flexible, allows to integrate with OAuth authentication systems with a minimal effort.

Haml (https://rubygems.org/gems/haml): Allows you to write valid XHTML concisely. The learning curve is relatively short.

Gritter (https://rubygems.org/gems/gritter): After years of flash messages in the classic div in the page, we moved to Growl like notifications. Thanks to these pop-ups, we can show our flash messages in any page in a completely non-invasive and elegant way.

Cells (https://rubygems.org/gems/cells): Cells can really keep our controllers very skinny. We use it to represent and caching some boxes, like “recommended items”, “top users” and so on. I really like Cells over the use of helpers.

FriendlyId (https://rubygems.org/gems/friendly_id): A perfect gem to make our url seo friendly.

SimpleForm (https://rubygems.org/gems/simple_form): We use it primarily for its excellent integration with Bootstrap and for its ease of use.

Paperclip (https://rubygems.org/gems/paperclip): Despite the years, it still remains the reference point for attachments management .

Kaminari (https://rubygems.org/gems/kaminari): Useful gem to manage paginated collections .

Cancan (https://rubygems.org/gems/cancan): Our choice to manage permissions. We never have had the need to use some other solution .

Resque (https://rubygems.org/gems/resque) or Delayed Job (https://rubygems.org/gems/delayed_job): Both are valuable supports to manage background processes. If you do not have enough resources to set up a Redis server, we recommend Delayed Job.

Sunspot (https://rubygems.org/gems/sunspot): After a brief period with thinking_sphinx, we have moved to this very powerful indexing engine. Thanks to Solr, we can easily implement geolocated full text searches. The only problem is that you need to configure a dedicated Tomcat server. If you do not have these resources, we recommend using pg_search (https://rubygems.org/gems/pg_search) with a Postgres database or the old but still valid meta_search (http://rubygems.org/gems/meta_search) .

ActiveAdmin (https://rubygems.org/gems/activeadmin): When it is necessary to set up a back office administration in a short time, here is the right gem. Powerful, fairly customizable, ideal for simple administration interfaces.

Letter opener (https://rubygems.org/gems/letter_opener): Useful to test sending emails simply by opening them in a browser window .

RSpec (https://rubygems.org/gems/rspec): A perfect gem to test our models in a BDD way.

Capybara (https://rubygems.org/gems/capybara) : In addition to unit test the models, we like to create a suite of acceptance tests. Capybara allows you to test all the application’s user stories relatively quickly.

Which are the gem list that cannot miss in you Ruby on Rails stack?