What is RuboCop?
Who uses RuboCop?
Why developers like RuboCop?
Here are some stack decisions, common use cases and reviews by companies and developers who chose RuboCop in their tech stack.
For many(if not all) small and medium size business time and cost matter a lot.
That's why languages, frameworks, tools, and services that are easy to use and provide 0 to productive in less time, it's best.
Maybe Node.js frameworks might provide better features compared to Rails but in terms of MVPs, for us Rails is the leading alternative.
Amazon EC2 might be cheaper and more customizable than Heroku but in the initial terms of a project, you need to complete configurationos and deploy early.
Advanced configurations can be done down the road, when the project is running and making money, not before.
Finally, comunication and keeping a good history of conversations, decisions, and discussions is important so we use a mix of Slack and Twist
We use CircleCI for #ContinuousIntegration. Workflows are configured via a simple yaml file and run inside isolated Docker containers. CircleCI runs ESLint, Brakeman, and RuboCop to enforce code quality and security best practices. It integrates with GitHub and Slack to notify us of build progress and pass/failure statuses.
The continuous integration process for our Rails backend app starts by opening a GitHub pull request. This triggers a CircleCI build and some Code Climate checks.
The CircleCI build is a workflow that runs the following jobs:
- check for security vulnerabilities with Brakeman
- check code quality with RuboCop
- run RSpec tests in parallel with the knapsack gem, and output test coverage reports with the simplecov gem
- upload test coverage to Code Climate
Code Climate checks the following:
- code quality metrics like code complexity
- test coverage minimum thresholds
The CircleCI jobs and Code Climate checks above have corresponding GitHub status checks.
Once all the mandatory GitHub checks pass and the code+functionality have been reviewed, developers can merge their pull request into our Git
master branch. Code is then ready to deploy!