Skeleton for new Rails based projects.
Ruby CSS HTML Other
Latest commit b8bdf13 Sep 30, 2017 @wowonrails wowonrails committed with timurvafin Upgrade bullet and nokogiri (#508)
Permalink
Failed to load latest commit information.
.cloud66 Cloud66 (#361) Aug 9, 2017
.github Example of template for pull request (#459) Aug 2, 2017
app Make sure Google Analytics used only with GA_TRACKER env variable (#506) Sep 21, 2017
bin Update Rails to 5.1.2 and it's friends (#499) Aug 2, 2017
config Fix database.yml when MAX_THREADS or DB_POOL is set (#505) Sep 21, 2017
db Upgrade to rails 5 (#480) Mar 1, 2017
doc Update README template Jan 5, 2016
lib/tasks correct rails version in README.md (#481) Mar 1, 2017
public Move assets to app directory May 26, 2011
spec Upgrade to rails 5 (#480) Mar 1, 2017
.codeclimate.yml Update Rails to 5.1.2 and it's friends (#499) Aug 2, 2017
.env.example Update Rails to 5.1.2 and it's friends (#499) Aug 2, 2017
.erdconfig Add Rails ERD for generating entity-relationship diagrams Aug 17, 2015
.gitattributes Configure .gitattributes to avoid merge conflicts Apr 6, 2016
.gitignore Switch from Thin to Puma Aug 27, 2015
.postcss-sorting.json Update foundation to 6 version and change csscomb, scss-lint configs (#… Aug 9, 2016
.pryrc.example add gem pry-remote Dec 25, 2013
.rspec remove fuubar Mar 21, 2016
.rubocop.yml Update Rails to 5.1.2 and it's friends (#499) Aug 2, 2017
.ruby-version Update Ruby version to 2.4.2 (#507) Sep 21, 2017
.scss-lint.yml Update foundation to 6 version and change csscomb, scss-lint configs (#… Aug 9, 2016
.slim-lint.yml Configure linters to work with CodeClimate Engine Based platform (#451) Jun 20, 2016
Brewfile Update readme (#495) May 18, 2017
CHANGELOG.md [WIP] Meta tags (#478) Aug 14, 2017
CONTRIBUTING.md more detailed release instructions May 18, 2015
Gemfile Update Ruby version to 2.4.2 (#507) Sep 21, 2017
Gemfile.lock Upgrade bullet and nokogiri (#508) Sep 29, 2017
Guardfile Update Rails to 5.1.2 and it's friends (#499) Aug 2, 2017
Procfile Switch from Thin to Puma Aug 27, 2015
README.md Update Ruby version to 2.4.2 (#507) Sep 21, 2017
Rakefile force double quotes in ruby May 20, 2015
app.json Do not drop database on Heroku (#501) Aug 15, 2017
coffeelint.json Configure linters to work with CodeClimate Engine Based platform (#451) Jun 20, 2016
config.ru Update rubocop, rubocop-rspec, active_link_to, faker, slim_lint (#437) Apr 15, 2016

README.md

Rails Base

Build Status Test Coverage Code Climate

Rails Base is the base Rails application template used at Flatstack. It's based on Rails 5 and Ruby 2.4.2

Application Gems

Development Gems

  • Puma as Rails web server
  • Letter Opener for opening mail in the browser instead of sending it
  • Bullet for detecting N+1 queries and unused eager loading
  • Rubocop and Rubocop-Rspec for reporting violations of the Ruby style guide
  • Brakeman for checking application for common security vulnerabilities
  • Pry Rails for interactively exploring objects
  • Bundler Audit for scanning the Gemfile for insecure dependencies based on published CVEs
  • Spring for fast Rails actions via pre-loading
  • Web Console for better debugging via in-browser IRB consoles
  • SCSS-Lint for reporting violations of SCSS coding conventions
  • Coffeelint to keep Coffeescript code clean and consistent
  • Slim-Lint for reporting violations of Ruby style guide in .slim templates
  • Rails ERD for generating a diagram based on application's AR models

Testing Gems

Initializers

  • mailer.rb - setup default hosts for mailer from configuration
  • requires.rb - automatically requires everything in lib/ & lib/extensions

Scripts

  • bin/setup - setup required gems and migrate db if needed
  • bin/quality - runs rubocop, brakeman, rails_best_practices and bundle-audit for the app
  • bin/ci - should be used in the CI or locally
  • bin/server - to run server locally

Getting Started

Prepare dependencies

Some gems have native extensions. You should have GCC installed on your development machine.

  • phantomjs - to run Javascript unit tests
  • graphviz - to generate Entity-Relationship Diagram

Setup required dependencies from Brewfile:

brew tap Homebrew/bundle
brew bundle

Bootstrap application

  1. Clone application as new project with original repository named "rails-base".

    git clone git://github.com/fs/rails-base.git --origin rails-base [MY-NEW-PROJECT]
  2. Create your new repo on GitHub and push master into it. Make sure master branch is tracking origin repo.

git remote add origin git@github.com:[MY-GITHUB-ACCOUNT]/[MY-NEW-PROJECT].git
git push -u origin master
  1. Run setup script
bin/setup
  1. Run test and quality suits to make sure all dependencies are satisfied and applications works correctly before making changes.
bin/ci
  1. Run app
bin/server
  1. Update README

Do not forget to update application README.md file with detailed information based on the existing template.

mv doc/README_TEMPLATE.md README.md
# update README.md
git commit -am "Update README.md"

Deployment

Heroku

Out of the box Rails Base ready to be deployed to Heroku.com.

  • Heroku Postgres add-on will be used for database.
  • SendGrid add-on required to be able to send emails.
  • NewRelic add-on could be used to monitor application performance.
  • Rollbar add-on could be used to application errors.
heroku create --addons=heroku-postgresql,sendgrid,newrelic,rollbar --remote staging rails-base-example
heroku config:add HOST="rails-base-example.herokuapp.com" MAILER_SENDER_ADDRESS="noreply@rails-base-example.herokuapp.com" NEW_RELIC_APP_NAME="Rails Base"
git push staging master
heroku run rake db:schema:load
heroku open

Custom Server

To be able to deploy to your custom server Cloud66.com recommended as a provisioning and deployment service. Make sure to review and configure cloud66/manifest.yml before deployment.

Credits

Rails Base is maintained by Timur Vafin. It was written by Flatstack with the help of our contributors.