I USE IN ALMOST EVERY SAAS PROJECT

An application can only be as good as the features it is providing for its end-users. Every developer toes the line between indiscriminately adding gems and building new functionality themselves. When time is of the essence, these are the gems I reach for:


Let me start by saying I think the things the teams working on CableReady and StimulusReflex are pretty awesome. They are aiming to make working with Reactive web applications as easy as the first Rails Blog tutorials during Rails’ infancy.

With all of that being said, I am someone who prefers a bit more explicitness and work with tools I already know (and well, a lot more developers in the ecosystem).

I am not a video guy, don’t have a video set up, and really prefer not to hear the sound of my own voice. …


When it comes to working with directories Ruby comes with a class for dealing with directories and paths, here.

If you want a quick demo of how to get the names of files in a directory, look no further!

Dir.pwd ## Gets the current path of your Ruby script/consoleDir.children(Dir.pwd) ## ["array.rb", "of", "files.rb", "and", "folders"]

You can also provide an instance a directory(Dir instance or string of file/folder name)

Dir.new(Dir.pwd).each {|f| puts "Got #{f}"}
Got .
Got ..
Got app

Note: This tutorial is the type of explanation you would find in my upcoming book Build A SaaS App in Rails 6. The book guides you from humble beginnings by deploying an app to production. The book is now in pre-sale, and you can grab a free chapter right now!


…and how to use a theme

To install Bootstrap 4 and a theme, we are going to be adding some packages, updating some configuration and adding a few additional gems/libraries to make life developing easier. This is going to assume you have already started an app with rails new app_name

Note: This tutorial is an excerpt from a chapter in my upcoming book Build A SaaS App in Rails 6. The book guides you from humble beginnings by deploying an app to production. The book is now in pre-sale, and you can grab a free chapter right now!

The first thing to do is to add…


While Stripe may not be available everywhere or may not be everyone’s most cost-efficient card processor, I have found time and time again that their API and Dashboard are well thought out and “just work”.

Testing Stripe will be a bit more involved than most another testing you will do within your application. Not only are you responsible for testing against the behavior of your application, but also keeping track of remote objects and responses on a third party API(Stripe). …


Most guides and blog posts around ActionCable focus around simple chat apps to show the typical websocket workflow. That is great, but how is ActionCable suppose to fit into your everyday SaaS-like Rails application?

The following is a mash-up of content from my upcoming book Build A SaaS App in Rails 6. The book guides you from humble beginnings through deploying an app to production. The book is now in pre sale, and you can grab a free chapter right now!

Also, the beta for my new project Pull Manager is has been released. If you’re losing track of pull…


With Griddler and Mailgun

Another aspect of email within a SaaS application is receiving mail. While this is far less normal or used in comparison to sending, it can be a great way to make end user’s responses to email or action items quicker.

At a high level, there are a few different layers to this. The topmost layer is the email service, and this book’s case, Mailgun. This service handles sending outbound emails, as well as routing incoming emails to an address/domain name specified in their interface. Once the email is routed, it will be redirected to a route and processor file in…


…and by all.the.timeI mean, I reach for these gems a lot, when they are useful and/or needed.

A few months ago I posted an article/story about the 27 Gems I use in Almost Every SaaS Project. That received a ton of praise, as well as a little bit of negativity around using *so many* gems.

Gems. YMMV

Rightfully so, blindly installing a whole bunch of gems without worrying about the status of the gems, maintainability and adding even more dependencies to the gem. When I wrote the previous article, I may have been a little exaggerative in that it seemed I would use all of those gems in every project, all of the time. There is always a trade…


Service Objects are becoming a staple in the toolbelt to slim down both Controllers and Models. Welcome to the world of fat services [folder]! A quick refresher to those who may not know what a Service Object…

A Service Object is a PORO(Plain old Ruby Object), that is meant to decompose business objects into manageable classes and methods. Without getting too deep into a discussion on the sound OOP principles and how they can apply to Ruby, a Service Object should have a Single Responsibility, be easily testable and a few other aspects which I will go further in depth.


photo from unsplash.com

Starting in 2014 I began building what would become the first SaaS product I publicly released and attempted to make money. Through countless other failed apps and ideas, I finally landed on writing a book on how to build a SaaS application in Ruby on Rails in February which has already surpassed Stripe revenues earned from SaaS apps in 18 months.

In this article I am going to recount my experiences and go into painful details about:

What got me building SaaS products(and how to suck at it)

What got me…

Rob Race

Writing an eBook for Building a SaaS in Rails 6(https://BuildASaaSAppinRails.com). A step-by-step guide on how to build a SaaS(Software as a Service) app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store