Here at Minicorp we use the Ruby on Rails web application framework for the majority of our client projects. The beauty of the Rails framework is the amount of quality open source gems that are at our disposal. The gems listed below are just a handful of the ones that we love and use the most, either for their simplicity (Letter Opener) or just the amount of time they save us writing boilerplate code (Devise, Paperclip).
Byebug / Pry - both of these gems allow runtime debugging of your apps. We tend to use byebug (comes as a default gem in Rails 5) however pry does have better REPL functionality.
Devise - is a flexible authentication solution for Rails. This is our ‘go-to’ for authentication and has saved us countless hours setting up user authentication for projects. It is super simple to install and is modular which allows you to customize your implementation to only use to modules your project requires.
Letter Opener - this is a great little gem. When sending an email via ActionMailer, letter opener will display the email in a new browser window. This saves the numerous ‘test’ emails hitting your actual email account which can be annoying (especially if wearing a smart watch tap..tap..tap).
Paperclip - Lots of our clients projects require functionality such as uploading an avatar and attaching to a user model or uploading document etc etc. Paperclip makes this super simple and is highly configurable. The most common setup we have for projects is for attaching images to various models. In development the files are stored in the public/system (default) and in production we have another configuration which utilizes Amazon S3 for storage.
Scenic - enables creating and managing database views for use in Rails applications. Scenic provides a similar migration mechanism to Rails allowing versioning and rollbacks of views. You can also back your view with a Rails model, they even provide a handy generator command that will create your view migration and model!
This has come in handy for many projects, most recently we used Scenic to create a highly optimised view exposing just the data we are interested in. We could then query the data in Rails via the model backing the view in a much simpler way.
Stripe - client requirements permitting Stripe is our favourite payments provider. The platform is solid, easy to integrate and the Stripe API reference is very detailed with example requests and responses. We have used Stripe on various projects for simple payments as well as Stripe Connect for more complicated payment scenarios in which we need to handle payments on behalf of others (think Hailo/Uber paying its drivers).
Do you use any of these gems? What gems do you love? Let us know!