- rails new <project_name> -d postgresql --skip-turbolinks --skip-spring -T
- -d postgresqlsets up the project to use PostgreSQL
- --skip-turbolinks&- --skip-springcreates a project that does not use turbolinks or spring
- -Tskips the creation of the test directory and use of- Test::Unit
- In the Gemfile:
- Available to all environments:
- Inside of group :test:- gem 'rspec-rails'- user rspec in place of minitest (docs)
- gem 'capybara'- act as a user navigating your site in tests (docs)
- gem 'launchy'- for running save_and_open_page (docs)
- gem 'shoulda-matchers'- easier model testing (docs)
- gem 'database_cleaner'- clean your database between tests (docs)
- gem 'factory_girl_rails'- easily generate database objects without repetitive code in tests (docs)
- gem 'simplecov', require: false- generate reports on your test coverage (docs)
 
- inside of group :production:- gem 'rails_12factor', group: :production- If publishing on Heroku (docs)
 
- Bundle and install (bundle execorrails g) where required, create additional required files
- bundle
- rails g rspec:install
- bundle exec figaro install
- mkdir spec/support
- touch spec/support/factory_girl.rb
- touch spec/support/factories.rb
- touch spec/support/database_cleaner.rb
- Add config data
- In spec/rails_helper.rbrequire 'capybara/rails' Shoulda::Matchers.configure do |config| config.integrate do |with| with.test_framework :rspec with.library :rails end end- Uncomment Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
- Change config.use_transactional_fixtures = trueto... = false
 
- Uncomment 
- In spec/support/factory_girl.rbRSpec.configure do |config| config.include FactoryGirl::Syntax::Methods end
- In spec/support/factories.rbFactoryGirl.define do <factories for each model go here> end
- In spec/spec_helper.rb- Note: this must appear at the very top of this file
 require 'simplecov' SimpleCov.start 'rails'
- In spec/support/database_cleaner.rbRSpec.configure do |config| config.before(:suite) do DatabaseCleaner.clean_with(:truncation) end config.before(:each) do DatabaseCleaner.strategy = :transaction end config.before(:each, :js => true) do DatabaseCleaner.strategy = :truncation end config.before(:each) do DatabaseCleaner.start end config.after(:each) do DatabaseCleaner.clean end # Optional for formatting output of test suite runs (see comments) config.formatter = :documentation end
- In .gitignore# Ignore SimpleCov files coverage
- (Optional) If working with an external API:
- In Gemfile
- bundle
- In spec/rails_helper.rbrequire 'vcr' VCR.configure do |config| config.cassette_library_dir = "spec/vcr_cassettes" config.hook_into :webmock end
- In .gitignore# Ignore vcr cassettes /spec/vcr_cassettes
- (Optional) If you will be using feature tests that utilize JavaScript:
- In Gemfile- under group :test
 
 note: Firefox 46 is required for Seleniumgem 'selenium-webdriver`
- under 
- (Optional) If you will be using ES6 syntax:
- In 'Gemfile'
- available to all environments:
- gem 'sprockets', '>= 3.0.0'
- gem 'sprockets-es6'- Enable use of ES6 syntax in production (useful if pushing to Heroku) (docs)
 
- In application.rb:- require 'sprockets/es6'
 
- Any JS files that use ES6 syntax will need to be saved as .es6
 
- available to all environments: