Ruby

11 de Fevereiro de 2024 - @Walmir Neto


Sempre fui muito assíduo de definir todas as regras para meu estilo do meu código, só que esses dias descobri o Standard Ruby que é um grupo de regras feito pela própria comunidade e uma das coisas que eles falam é “Dois desenvolvedores jamais concordarão sobre quais deveriam ser todas as regras e formatos”.

E isso me fez lembrar que eu já tive muitas desse debates e sendo bem sincero, resolvi delegar meu estilo de código para o Standard Ruby

A idéia aqui é fazer o setup da Standard Ruby e ERB Lint tanto no projeto quanto no vscode, sem delongas vamo nessa…

Instalando Standard Ruby

Como estamos usando Rails, precisamos instalar as standard e standard-rails lá no bloco group :development, :test do do Gemfile:

group :development, :test do
  # <https://github.com/standardrb/standard#usage>
  gem "standard", "~> 1.33"
  # <https://github.com/standardrb/standard-rails#usage>
  gem "standard-rails", "~> 1.0"
end

Depois roda:

bundle install
bundle binstub standard # optional

Agora é hora do arquivo .stardand.yml de configurações +info

fix: false              # default: false
parallel: true          # default: false
format: progress        # default: Standard::Formatter
ruby_version: 3.2.3     # default: RUBY_VERSION
default_ignores: false  # default: true

ignore:                 # default: []
  - 'vendor/**/*'

plugins:                # default: []
  - standard-rails

Como o Standard Ruby usa o rubocop, podemos usar um arquivo .rubocop.yml e usar o rubocop normalmente

require:
  - rubocop-rails

inherit_gem:
  standard: config/base.yml

AllCops:
  NewCops: enable
  TargetRubyVersion: 3.3
  TargetRailsVersion: 7.1

Além disso, para o vscode fazer o auto format é preciso adicionar ‣. Então procure-o na sua barra de extensões

Untitled

Precisamos dizer a vscode para usar essa extensão para formatar, eu vou deixar dentro do próprio projeto, mas podemos deixar nas configurações do usuário no vscode. Além de deixar-la como sugestão no arquivo .vscode/suggestions.json do projeto e no .vscode/settings.json fica desse jeito

{
  "[ruby]": {
    "editor.defaultFormatter": "testdouble.vscode-standard-ruby",
    "editor.formatOnSave": true, // Format files automatically when saving
    "editor.tabSize": 2, // Use 2 spaces for indentation
    "editor.insertSpaces": true, // Use spaces and not tabs for indentation
    "editor.semanticHighlighting.enabled": true, // Enable semantic highlighting
    "editor.formatOnType": true, // Enable formatting while typing
  },
}

Feito isso é para tá funcionando o auto format quando salvar os arquivos .rb