Rails Environment

Follow Setup Ruby On Rails on GoRails.

Create Rails Project

# create a project
$ rails new --skip-test-unit --database=postgresql playgound

# create database
$ cd playgound
$ bin/rake db:create db:migrate

Edit config/database.yml to make sure DB setup is correct.

Setup RSpec and Capybara

Follow RSpec Setup in Rails 4.

Setup Bootstrap

Use 42dev/bower-rails or add gems to Gemfile:

gem 'bootstrap-sass', '~> 3.2.0'
gem 'font-awesome-sass', '~> 4.1.0'
gem 'autoprefixer-rails'

Download bootstrap.scss to app/assets/stylesheets/bootstrap-custom.css

Rename app/assets/stylesheets/application.css to application.css.scss, replace all content with:

@import "bootstrap-sprockets";
@import "bootstrap-custom";
@import "font-awesome";

Add Bootstrap’s JavaScript modules to app/assets/javascript/application.js:

//= require bootstrap/affix
//= require bootstrap/alert
//= require bootstrap/button
//= require bootstrap/carousel
//= require bootstrap/collapse
//= require bootstrap/dropdown
//= require bootstrap/tab
//= require bootstrap/transition
//= require bootstrap/scrollspy
//= require bootstrap/modal
//= require bootstrap/tooltip
//= require bootstrap/popover

These enable you control which bootstrap module included.

Gems:

Setup Devise and Pundit

Add gems to Gemfile:

# Use devise for Authentication
gem 'devise'
# Use pundit for Authorization
gem 'pundit'

Install Devise rails generate devise:install and follow the instructions.

Create a User model rails generate devise user and rake db:migrate.

Gems:

Other useful Gems

# Loading environment variables
group :development, :test do
  gem 'dotenv-rails'
end
# Thread-safe Email validator
gem 'email_validator'
# Extra ActionView view helpers
gem 'flutie'
# Serve Static pages
gem 'high_voltage', '~> 2.2.1'

Gems:

Candies

To stop auto-generation of helpers, javascripts and stylesheets, add the following to config/application.rb:

config.generators do |generate|
  generate.helper false
  generate.javascript_engine false
  generate.stylesheets false
  generate.request_specs false
  generate.routing_specs false
  generate.view_specs false
end

Template

All these steps can be automated using Rails Application Templates.

TODO: Template required