Ruby

14 de Fevereiro de 2024 - @Walmir Neto

Esses dias adicionei Standard Ruby no projeto https://github.com/owalmirneto/rails-demo que uso de exemplo para escrever aqui. E escrevi alguns testes nele e percebi que apesar de Standard Ruby usar o Rubocop por baixo, ele não adiciona algumas extensão que eu uso para verificar os testes


Como sempre hoje vai bem passo a passo rapidão 😜

Setup das extensões

Começamos adicionando as extensão no nosso Gemfile

group :development, :test do
  ...
  # <https://github.com/rubocop/rubocop-rspec#usage>
  gem "rubocop-rspec", "~> 2.26", ">= 2.26.1"
  # <https://github.com/rubocop/rubocop-capybara#usage>
  gem "rubocop-capybara", "~> 2.20"
  # <https://github.com/rubocop/rubocop-factory_bot#usage>
  gem "rubocop-factory_bot", "~> 2.25", ">= 2.25.1"
end

Depois disso é só roda

bundle install

Isso vai instalar as gems, mas para funcionar corretamente é preciso adicionar as extensão no .rubocop.yml

require:
  - rubocop-rails
  - rubocop-factory_bot
  - rubocop-capybara
  - rubocop-rspec
...

Dá uma olhada na Github deles github.com/rubocop para checar mais extensões 😉

Corrigindo CI

Para pegar essas alterações no CI, precisamos rodar o rubocop, pois como disse anteriormente, o rubocop é adicionar pelo Standard Ruby, mas as extensões não são levadas em conta. Então precisamos substituir o bin/standardrb por bin/rubocop lá no arquivo de CI:

# .github/workflows/feature-code-review.yml
       - name: Install dependencies
         run: bundle install --jobs 4 --retry 3
 
-      - name: Run Standard Ruby
-        run: bin/standardrb
+      - name: Run RuboCop Linter
+        run: bin/rubocop

O código desse exemplo → https://github.com/owalmirneto/rails-demo/pull/7

Referências