Rails Base is the base Rails application template used at Flatstack. It's based on Rails 4 and Ruby 2.2.3.
- Sass for Sass/Scss stylesheets
- Zurb Foundation as CSS framework. For more information see documentation on using Foundation in Rails apps
- Foundation Icon Font for icons. Browse icon set examples
- Autoprefixer for writing CSS without vendor prefixes
- Slim for views
- Skim for client-side templates (Slim with embedded Coffeescript)
- Simple Form for forms
- Responders to DRY controllers
- Decent Exposure to DRY controllers
- Draper to decorate models for views
- Decent Decoration to extend Decent Exposure with Draper
- Interactors encapsulates application's business logic
- Pundit to encapsulates authorization logic
- Kaminari for pagination
- Devise for basic auth
- Rollbar for exception notification
- Google Analytics Rails for Google Analytics support
- Puma as Rails web server
- Foreman for managing development stack with Procfile
- 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
- Rails Best Practices for checking the code quality
- 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
- Rails ERD for generating a diagram based on application's AR models
- Jasmine jQuery for jQuery matchers and fixtures in Jasmine
- Factory Girl for test data
- RSpec for unit testing
- Shoulda Matchers for common RSpec matchers
- Email Spec for common matchers for testing emails
mailer.rb- setup default hosts for mailer from configuration
requires.rb- automatically requires everything in lib/ & lib/extensions
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
Some gems have native extensions. You should have GCC installed on your development machine.
qt- to run specs with Capybara Webkit
graphviz- to generate Entity-Relationship Diagram
Setup required dependencies from
brew tap Homebrew/bundle brew bundle
Clone application as new project with original repository named "rails-base". We use depth parameter here in order not to copy the history of changes in base project
git clone --depth 1 git://github.com/fs/rails-base.git --origin rails-base [MY-NEW-PROJECT]
Create your new repo on GitHub and push master into it. Make sure master branch is tracking origin repo.
git remote add origin email@example.com:[MY-GITHUB-ACCOUNT]/[MY-NEW-PROJECT].git git push -u origin master
Run setup script
Run test and quality suits to make sure all dependencies are satisfied and applications works correctly before making changes.
Do not forget to update application
README.mdfile with detailed information based on the existing template.
mv doc/README_TEMPLATE.md README.md # update README.md git commit -am "Update README.md"
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="firstname.lastname@example.org" NEW_RELIC_APP_NAME="Rails Base" git push staging master heroku run rake db:schema:load heroku open