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
.slim
templates - Rails ERD for generating a diagram based on application's AR models
- Capybara and Capybara Webkit for integration testing, including JavaScript behavior
- Jasmine for unit testing JavaScript code
- 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 configurationrequires.rb
- automatically requires everything in lib/ & lib/extensions
bin/setup
- setup required gems and migrate db if neededbin/quality
- runs rubocop, brakeman, rails_best_practices and bundle-audit for the appbin/ci
- should be used in the CI or locallybin/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 Webkitphantomjs198
- to run Javascript unit testsgraphviz
- to generate Entity-Relationship Diagram
Setup required dependencies from Brewfile
:
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 git@github.com:[MY-GITHUB-ACCOUNT]/[MY-NEW-PROJECT].git
git push -u origin master
- Run setup script
bin/setup
- Run test and quality suits to make sure all dependencies are satisfied and applications works correctly before making changes.
bin/ci
- Run app
bin/server
- 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"
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
Rails Base is maintained by Timur Vafin. It was written by Flatstack with the help of our contributors.