- Technologies
- Preferred Gems
- Coding Conventions
- Test-Driven Development
- .gitignore
- Best Practices
- Deployment
- Load Balancing
- Load Testing
- Useful Links
- Ruby 2.2.x (latest stable)
- Ruby On Rails 4.2.x (latest stable)
- Ruby environment management: rvm
We don’t use Windows as OS for development machines. We use latest Mac OS X or Ubuntu/Debian (long-term support releases are preferred).
- RubyMine (not required)
- Use latest stable nginx
- Prefer latest stable PostgreSQL
- Prefer Amazon Web Services
- Puma as Ruby web server
- Capistrano for deployment
- dotenv for setting shell environment variables
- exception_notification for error/exception notifications from server
- swagger-blocks for generating API documentation in Swagger format
- Use rspec_rails ~> 3.0
Useful gems:
Add the following lines to default Rails-generated .gitignore
file:
.DS_Store
database.yml
secrets.yml
.idea
- Use ActiveRecord ORM (scopes, enums, where with conditions, order etc) instead of raw SQL queries
- Design the database schema with Vertabelo
- Keep your schema up-to-date with Rails ERD
- Avoid common security problems following Ruby on Rails Security Guide
- Never store production data (logins, passwords etc) in source code repository
- Keep
config/database.yml
andconfig/secrets.yml
outside of the source code repository. Use shell environment variables instead. More info here
Here is a list of must-have gems:
- Brakeman - A static analysis security vulnerability scanner for Ruby on Rails applications.
- SimpleCov - Code Coverage tool for Ruby
- RuboCop - A static code analyzer, based on the community Ruby style guide
- rails_best_practices - Code metric tool for Rails projects
- RailsRoady - UML diagram generation on models and controllers
These tools are to be run at the end of each development cycle (Iteration, Sprint, Milestone, Release)
TBD
- Use Loader.io
- Ruby Weekly - subscribe to it!
- Green Ruby News
- This week in Rails
- Awesome Rails
- Awesome Ruby
- Ruby Toolbox
- The 12-factor app - a methodology for building SaaS apps