Effective Gems for Ruby on Rails

Developers run into roadblocks; it comes with the territory. Thankfully, Ruby on Rails has an amazing developer community and the gems created by these developers have helped us out many times. Now, it’s our turn to give back: we’ve built effective_gems to streamline common features on many of our web applications. They’ve certainly helped us, and we think they can help you too.

Watch Code and Effect co-founder Matthew Riemer give a presentation about using the effective gems to quickly and consistently develop Ruby on Rails applications:

About the effective_gems

effective_gems offer solutions for common hurdles faced by Ruby on Rails developers. Each of the effective_gems is a Rails engine that is generally independent from the other effective_gems. This is not a suite of gems you have to use all together, but rather a growing library of gems you can pick and choose from. These gems are part of the secret sauce that allow us to quickly roll out functionality for our clients.


You need to collect and validate one or more addresses. Extend any ActiveRecord object to have one or more named addresses, like @user.billing_address. Includes a geographic region-aware custom form input backed by Carmen.


You need to upload files directly to Amazon S3. Upload images and files directly to AWS S3 with a custom form input then seamlessly organize and attach them to any ActiveRecord object.


You need to sort, search, export, and paginate tables of data. Uniquely powerful server-side searching, sorting and filtering of any ActiveRecord or Array collection as well as post-rendered content displayed using DataTable.js.


You and/or your clients need to modify email content on-the-fly without re-deploying your rails app. Create one or more email templates using the Liquid templating language. Update those templates from an admin screen to modify the content of your email sends without re-deploying your rails application.


You need to augment the existing Rails Form Helper and SimpleForm inputs with minimal additional configuration. Contains a curated collection of custom form inputs, along with their Javascript & CSS assets, that may be installed individually or all at once. Customize any option used to initialize the javascript library by declaring those options in ruby.


You need to record activity of users, emails, and background jobs. Automatically log all sent emails, user logins, and page views. Logs are tied to a parent and an associated object (e.g. User and Order). You can also cleanly log custom events from Ruby and JavaScript.


You need to mask primary keys in a param or view. Display unique 10-digit numbers instead of ActiveRecord IDs. Hides the ID param so curious website visitors are unable to determine your user or order count.


You need to process orders, with or without a shopping cart. Quickly build an online store with carts, orders, automatic email receipts, and payment collection via Stripe, StripeConnect, PayPal, or Moneris.


You need a fully-functional CMS that provides full or restricted editing for you and your end users. Works with effective_regions to create WYSIWYG editable content pages based on one or more templates – just regular Rails views – that you define and control. Edit menus with a drag-and-drop bootstrap3-strict menu builder.


You need a basic blog with WYSIWYG content editing, post scheduling, pagination and optional top level routes for each post category. Works with effective_regions to create WYSIWYG editable posts. Define one or more top level categories, such as ‘news’, ‘blogs’, ‘events’ and get appropriate top-level routes and URLs. Has built-in pagination and smart html-aware truncation of content to display post excerpts.


You need to write and publish content in an end-user friendly manner across multiple page templates. Create editable content regions within your existing, ordinary ActionView::Base views, and update content with an actually-good full-screen WYSIWYG editor.


You need to assign roles and query objects with role-based permissions. Assign multiple roles to any User or other ActiveRecord object. Select only the appropriate objects based on intelligent, chainable ActiveRecord::Relation finder methods.


You need to make sure your CSS looks great when applied to Bootstrap3. Creates a /styleguide page that renders the correct HTML for all Bootstrap3 (v3.2.0) components. Ensure that your custom CSS theme looks good with all Twitter Bootstrap3 html components.