RoR

RoR

Advanced

A server-side web application framework written in Ruby, Ruby on Rails (RoR) is a framework, primarily helping developers build websites and applications, abstracting and simplifying repetitive tasks. 

This competency area includes working with Refactoring large Rails codebases, working with vast test suites, know-how of building a Gem, microservices, security, and performance, and other key concepts such as debugging, testing, and deployment.  

Key Competencies: 

  1. Refactoring - Refactoring large rails codebases, by extracting controller and model logic to Service Objects and PORO (Plain Old Ruby Object). Writing simple, easy to understand code that is easy to maintain. Being able to mentor other developers to do the same by effective code reviews. Being proactive in deleting unused code. 

  2. Maintain & Enhance Large Test Suites - Ability to maintain and work with large test suites. Ensuring the tests run within a reasonable amount of time, and being proactive in deleting unused tests. 

  3. Building custom Gems - Know-how of building a Gem from scratch. Refactoring relevant parts of the codebase to engines & gems. 

  4. Micro Services - Being proactive in identifying parts of the system which warrant its own service and build self-sufficient services only when it’s absolutely necessary. Building high performance, secure, and robust APIs. 

  5. Security - Understanding Role-based security, understanding Rails security guidelines, and writing code in a conformant manner. Implementing counter-measures for common, known attack vectors. (CSRF, XSS. SQl Injection, etc.)

  6. Performance - Understanding how to debug performance issues and solving them in large codebases, understanding the request and response cycle of a web request, and the performance bottlenecks and their countermeasures.  

  7. Creating & Customizing Rails generators - Being able to create rails generators and change generator templates.

  8. Asynchronous Programming - Selecting tasks for asynchronous processing. Using gems such as delayed_job and sidekiq for background jobs.

  9. Debugging race conditions - Debugging tricky race conditions in a busy production environment.

  10. Deployment - Creating advanced CI/CD pipelines to deploy Rails applications in various environments.