Rails Base
Rails Base is the base Rails application template used at Flatstack. It's based on Rails 6 and Ruby 2.7
Application Gems
- 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
- 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
- Action Policy to encapsulate authorization logic
- Kaminari for pagination
- Devise for basic auth
- Rollbar for exception notification
- Google Analytics Rails for Google Analytics support
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
- Capybara for integration testing
- Factory Bot for test data
- RSpec for unit testing
- Shoulda Matchers for common RSpec matchers
- Email Spec for common matchers for testing emails
Initializers
mailer.rb
- setup default hosts for mailer from configurationrequires.rb
- automatically requires everything in lib/ & lib/extensions
Scripts
bin/setup
- setup required gems and migrate db if neededbin/quality
- runs rubocop, brakeman, rails_best_practices and bundle-audit for the appbin/test
- runs all tests and quality checksbin/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 testsgraphviz
- to generate Entity-Relationship Diagramnode
- JavaScript runtime
Bootstrap application
-
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]
-
Create your new repo on GitHub and push master into it. Make sure master branch is tracking origin repo.
git remote add origin [email protected]:[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/test
- 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"
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="[email protected]" 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.