New Rails Project

Traditional App w/ Views

rails new <name> --database=<db>

Common Options

Set db to postgres

-d=postgresql

Skip default testing

-T

Preconfigure for React

--webpack=react

Skip the coffee script scss

--skip-coffee

Using postgresql (Apr 7, 2020)

Add BDD and testing gems

Update the Gemfile

group :development, :test do
  # personal dev gems
  # rspec testing, incls core, etc `rails g install:rspec`
  gem 'rspec-rails'
  # pry instead of irb
  gem 'pry-rails'
  # seed and test data generation
  gem 'factory_bot_rails'

end
group :development do
  # personal dev gems
  gem 'better_errors'
  gem 'binding_of_caller'
  # `annotate --models` for schema luv
  gem 'annotate'
end
group :test do
  # personal dev gems
  # capaybara should come standard now
  # gem 'capybara'
  # hot rspec testing
  gem 'guard-rspec'
  # `Launchy.open(url)`
  gem 'launchy'
  # enables one-liner syntax
  gem 'shoulda-matchers'
  # faker data to work with factory bot
  gem 'faker'
  # cucumber for end to end testing
  gem 'cucumber-rails', require: false
  # database cleaner to keep it squeakin
  gem 'database_cleaner-active_record'
  # if going old school RoR controller testing
  gem 'rails-controller-testing'
end

Install new gems

Run bundle install

Install rspec testing

Run rails g rspec:install

Install Shoulda Matchers

Place this at the bottom of spec/rails_helper.rb:

Shoulda::Matchers.configure do |config|
  config.integrate do |with|
    with.test_framework :rspec
    with.library :rails
  end
end

Install cucumber bdd

Run rails g cucumber:install

Install annotate gem

This will set annotate to run automatically and with nicer data Run rails g annotate:install

Configure Factory Bot Rails

If you’re using Rails, add the following configuration to spec/support/factory_bot.rb and be sure to require that file in rails_helper.rb:

RSpec.configure do |config|
  config.include FactoryBot::Syntax::Methods
end

NB: Or you can paste the whole thing in the bottom of the rails_helper.rb ala shoulda-matchers config.

Configure Database Cleaner

Require the database cleaner in your rails_helper.rb, probably near where you require rspec at the top.

require 'database_cleaner/active_record'

Then, inside the config section:

RSpec.configure do |config|
  # ... add this section somewhere in your config
  config.before(:suite) do
    DatabaseCleaner.strategy = :transaction
    DatabaseCleaner.clean_with(:truncation)
  end

  config.around(:each) do |example|
    DatabaseCleaner.cleaning do
      example.run
    end
  end
end

Setup DB

Postgresql

Make sure it’s up and running

Create the project db

Doing this first can help make sure no errors and connected rails db:create