A thoughtfully designed template for building modern Rails apps π₯
Get started on your new app within minutes instead of hours ππ¨
To get going clone this repository and perform the following steps:
- Clone this repository
- You can now run
bin/configure
, which will help you in configuring the template. Alternatively perform all of the following steps manually. - Change application name in
config/application.rb
. - Update
database.yml
to reflect the new application name. - Update
TODO
items inconfig/environments/production.rb
. - If you plan on using Figaro, copy
config/application.yml.example
toconfig/application.yml
. - ESLint is preconfigured for modern JS with React support (AirBnB styleguide). If you want to use
it install packages with
npm install
, otherwise remove.eslintrc
andpackage.json
. - If you don't plan on tracking the template, you can remove the
.git
directory. Otherwise you can rename the remote:$ git remote rename origin rails_new
- Add your new remote as appropriate.
By default ES6 will not work for files in app/assets/javascript
since Uglifier will fail to process them. This is why we applied the following change to config/production.rb
, which allows you to use ES6 project wide:
- config.assets.js_compressor = :uglifier
+ config.assets.js_compressor = Uglifier.new(harmony: true)
Also note that for everything to work properly on Heroku, you need to set up your buildpacks like this:
heroku buildpacks:clear
heroku buildpacks:set heroku/nodejs
heroku buildpacks:add heroku/ruby
- If you want to use AirBrake, make sure the following 2 environment variables are set:
AIRBRAKE_PROJECT_ID
AIRBRAKE_API_KEY
- New Relic is pre configured in
config/newrelic.yml
, but you need to comment in the environment variables for it work on Heroku (lines 10 and 17).
Variable | Comment |
---|---|
GOOGLE_ANALYTICS_ID | Will be added to the main application layout if set |
BLOCK_HTTP_TRACE | Disable HTTP TRACE method if set to true/t/1 |
DATABASE_URL | Used for production env, automatically set by Heroku |
HTTP_METHOD_BLACKLIST | If you want to block more than just TRACE, e.g. "TRACE,OPTIONS" |
PORT | Port Puma will listen on, defaults to 3000 |
RAILS_LOG_TO_STDOUT | Set by Heroku Ruby buildpack, set manually on other platforms if needed |
RAILS_MAX_THREADS | Number of Puma threads, defaults to 5 |
All of the following have been installed and pre-configured.
- Rails 5.1.5
- Ruby 2.5.0
- pg for
ActiveRecord
- The app is preconfigured for Google Analytics, just add
GOOGLE_ANALYTICS_ID
to the environment.
ApplicationDecorator
: lightweight alternative to Draper or similar gems.- yard is available in development mode.
Use
yard doc
to generate documentation andyard server --reload
oryard server --gems
to start a local documentation server. - Favicons were generated with Real Favicon Generator.
- There's a custom middleware (
Rack::RejectTrace
) for completely disabling the HTTP TRACE method as required by certain security audits. It can be enabled via theBLOCK_HTTP_TRACE
environment variable.
All of these are managed by yarn
.
- Brakeman
- bullet
- memory_profiler
- newrelic_rpm
- nullalign
- pry
- pry-byebug
- pry-doc
- rack-mini-profiler
- RuboCop
- Preconfigured for Rails 5.1+ system tests with Rspec. Install the necessary driver with
brew install chromedriver
and seespec/system/landing_page_spec.rb
for an example. - No need to
require 'rails_helper
, we do it in.rspec
- bundler-audit
- capybara
- factory_bot_rails
- shoulda-matchers
- spring-commands-rspec
- webmock
The following default Rails gems have been removed: