Skip to content

fs/rails-base

Folders and files

NameName
Last commit message
Last commit date
Aug 9, 2017
Aug 2, 2017
Jul 12, 2021
May 14, 2021
Jul 15, 2020
Jul 15, 2020
Jun 10, 2020
Jun 15, 2020
Mar 1, 2017
May 26, 2011
Apr 23, 2021
Jun 15, 2020
Jul 14, 2020
Aug 17, 2015
Jul 15, 2020
Apr 6, 2016
Jun 15, 2020
Jun 15, 2020
Aug 9, 2016
Dec 25, 2013
Mar 21, 2016
Jul 21, 2020
Jun 15, 2020
Jun 17, 2020
Jun 15, 2020
Jul 15, 2020
Jun 9, 2020
Dec 11, 2019
Jul 12, 2021
Jul 12, 2021
Aug 2, 2017
Aug 27, 2015
May 14, 2021
Jun 15, 2020
Jun 15, 2020
Apr 22, 2021
Apr 15, 2016
Apr 23, 2021
Jun 15, 2020
Aug 13, 2021

Repository files navigation

Rails Base

Build Status

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

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
  • ByeBug as debugger
  • 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
  • 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/test - runs all tests and quality checks
  • bin/server - to run server locally

Getting Started

Prepare dependencies

Some gems have native extensions. You should have GCC installed on your development machine. Dependencies will be automatically installed via setup script.

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

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/test
  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.