This is the application template that I use for my Rails 6 projects. As a freelance Rails developer, I need to be able to start new projects quickly and with a good set of defaults. I've assembled this template over the years to include best-practices, tweaks, documentation, and personal preferences, while still generally adhering to the "Rails way".
For older versions of Rails, use these branches:
This template currently works with:
- Rails 6.0.x
- Bundler 2.x
If you need help setting up a Ruby development environment, check out my Rails OS X Setup Guide.
To make this the default Rails application template on your system, create a
~/.railsrc file with these contents:
-d postgresql -m https://raw.githubusercontent.com/mattbrictson/rails-template/main/template.rb
This template assumes you will store your project in a remote git repository (e.g. Bitbucket or GitHub) and that you will deploy to a production environment. It will prompt you for this information in order to pre-configure your app, so be ready to provide:
- The git URL of your (freshly created and empty) Bitbucket/GitHub repository
- The hostname of your production server
To generate a Rails application using this template, pass the
-m option to
rails new, like this:
rails new blog \ -d postgresql \ -m https://raw.githubusercontent.com/mattbrictson/rails-template/main/template.rb
Remember that options must go after the name of the application. The only database supported by this template is
If you’ve installed this template as your default (using
~/.railsrc as described above), then all you have to do is run:
rails new blog
What does it do?
The template will perform the following steps:
- Generate your application files and directories
- Ensure bundler is installed
- Create the development and test databases
- Commit everything to git
- Push the project to the remote git repository you specified
What is included?
These gems are added to the standard Rails stack
- dotenv – for local configuration
- shoulda – shortcuts for common ActiveRecord tests
I like to use Postmark for transactional email, and so I've included the postmark-rails gem and configured it in
environments/production.rb. Make sure to sign up for a Postmark account to get an API key, or switch to your own preferred email provider before deploying your app.
Other tweaks that patch over some Rails shortcomings
- A much-improved
- Log rotation so that development and test Rails logs don’t grow out of control
How does it work?
Normally, Rails only allows a single file to be specified as an application template (i.e. using the
-m <URL> option). To work around this limitation, the first step this template performs is a
git clone of the
mattbrictson/rails-template repository to a local temporary directory.
This temporary directory is then added to the
source_paths of the Rails generator system, allowing all of its ERb templates and files to be referenced when the application template script is evaluated.
Rails generators are very lightly documented; what you’ll find is that most of the heavy lifting is done by Thor. The most common methods used by this template are Thor’s
gsub_file. You can dig into the well-organized and well-documented Thor source code to learn more.