My former app template for Rails 7. All recommendations you see here have been moved to https://github.com/mattbrictson/nextgen
Ruby
1,071
422 commits
updated Dec 18, 2023
📣 I am no longer maintaining this project. Please check out mattbrictson/nextgen instead. Nextgen includes all the recommendations you see here, but in a new interactive format that lets you pick and choose the enhancements appropriate to your app. Try it and send me your feedback!
This is the application template that I recommend for Rails 7 projects. 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".
I've written several blog posts on techniques, helpers, and boilerplate that are included in this template, if you'd like to take a deeper dive:
-m optionThis template currently requires:
For older versions of Rails, you can use one of these branches going back all the way to Rails 4.2.
Optional.
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. 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:
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 postgresql.
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
The template will perform the following steps:
vite_rails⚡️Add the --javascript vite option to the rails new command to get started with Vite! Vite is an easy to use alternative to Webpack(er), and much more powerful than the standard import map and css/jsbundling-rails options that are built into Rails.
app/frontend/yarn start to start the development server with hot reloading--css option will be ignored)If you don't specify --javascript vite, then this template will use the standard Rails 7 behavior.
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.
bin/setup scriptThis project works by hooking into the standard Rails application templates system, with some caveats. The entry point is the template.rb file in the root of this repository.
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 copy_file, template, and gsub_file. You can dig into the well-organized and well-documented Thor source code to learn more.
944 followers · starred Apr 2022
1,032 followers · starred Sep 2022
27 followers · starred Jun 2023
6 followers · starred Jul 2023
My former app template for Rails 7. All recommendations you see here have been moved to https://github.com/mattbrictson/nextgen
Ruby
1,071
422 commits
updated Dec 18, 2023
📣 I am no longer maintaining this project. Please check out mattbrictson/nextgen instead. Nextgen includes all the recommendations you see here, but in a new interactive format that lets you pick and choose the enhancements appropriate to your app. Try it and send me your feedback!
This is the application template that I recommend for Rails 7 projects. 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".
I've written several blog posts on techniques, helpers, and boilerplate that are included in this template, if you'd like to take a deeper dive:
-m optionThis template currently requires:
For older versions of Rails, you can use one of these branches going back all the way to Rails 4.2.
Optional.
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. 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:
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 postgresql.
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
The template will perform the following steps:
vite_rails⚡️Add the --javascript vite option to the rails new command to get started with Vite! Vite is an easy to use alternative to Webpack(er), and much more powerful than the standard import map and css/jsbundling-rails options that are built into Rails.
app/frontend/yarn start to start the development server with hot reloading--css option will be ignored)If you don't specify --javascript vite, then this template will use the standard Rails 7 behavior.
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.
bin/setup scriptThis project works by hooking into the standard Rails application templates system, with some caveats. The entry point is the template.rb file in the root of this repository.
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 copy_file, template, and gsub_file. You can dig into the well-organized and well-documented Thor source code to learn more.
944 followers · starred Apr 2022
1,032 followers · starred Sep 2022
27 followers · starred Jun 2023
6 followers · starred Jul 2023