[RUBY] Führen Sie RSpec, Brakeman, Rubocop und Rails Best Practices mit Overcommit aus

Warum haben Sie sich für Overcommit entschieden?

Annahme

--Rspec (Testautomatisierung) --Brakeman (Sicherheitskontrolle) --Rubocop (Ruby-Code-Analyse) --RailsBestPractices (Rails-Code-Analyse)

Ich werde unter der Annahme schreiben, dass Sie bereits installiert haben und bereit sind, Befehle manuell einzugeben. Wenn Sie ein Tool haben, das Sie nicht verwenden, ignorieren Sie die Einstellungen in diesem Teil.

Einführung

Gemfile


group :development do
  gem 'overcommit'
$ bundle install
$ overcommit --install #Konfigurationsdatei generieren

.overcommit.yml


#Deaktivieren Sie unnötige Überprüfungen
CommitMsg:
  ALL:
    enabled: false
PreCommit:
  AuthorEmail:
    enabled: false
  AuthorName:
    enabled: false
  BrokenSymlinks:
    enabled: false
  CaseConflicts:
    enabled: false
  MergeConflicts:
    enabled: false
#Erforderliche Überprüfungseinstellungen
  RuboCop:
    enabled: true
  RailsBestPractices:
    enabled: true
PrePush:
  Brakeman:
    enabled: true
  RSpec:
    enabled: true
$ overcommit --sign #Reflektieren Sie die Einstellungsänderung

Außerdem wird Standardeinstellungen angewendet, mit Ausnahme der Elemente, die explizit in der Einstellungsdatei festgelegt sind.

Funktionsprüfung

Das Folgende ist ein Beispiel für die Operationsprüfmethode. Rubocop Betten Sie Time.now in einen geeigneten Controller ein und bestätigen Sie, dass es nicht festgeschrieben werden kann RailsBestPractices Setzen Sie default_scope order (created_at :: desc) auf ein geeignetes Modell und bestätigen Sie, dass Sie kein Commit durchführen können Brakeman Setzen Sie "http_basic_authenticate_with name:" ID ", password:" password "auf den entsprechenden Controller und bestätigen Sie, dass Push nicht möglich ist. RSpec Schreiben Sie einen Test, der nicht bestanden wird, und stellen Sie sicher, dass Sie nicht pushen können

Wo ich süchtig war

Wenn ich RSpec manuell ausführte, bestand es, aber ich konnte die Pre-Push-Prüfung nicht bestehen, und die folgende Meldung wurde angezeigt.

NameError:
  uninitialized constant Capybara::DSL

Wenn ich es manuell drücke, führe ich "bin / rspec" aus, aber wenn ich vorab drücke, führe ich "bundle exec rspec" aus, so dass es so aussieht, als ob das Verhalten etwas anders ist. Gelöst durch Hinzufügen des Folgenden zu spec_helper.rb.

spec/spec_helper.rb


RSpec.configure do |config|
  #Die folgenden 3 Zeilen wurden hinzugefügt
  ENV['RAILS_ENV'] ||= 'test'
  require File.expand_path('../config/environment', __dir__)
  require 'rspec/rails'

Referenz

Recommended Posts

Führen Sie RSpec, Brakeman, Rubocop und Rails Best Practices mit Overcommit aus
[Schienen] Test mit RSpec
Führen Sie Ruby on Rails RSpec-Tests mit GitHub-Aktionen aus
Führen Sie Rails immer im Docker aus
[Schienen] Machen wir einen Unit-Test mit Rspec!
[Ruby on Rails] Test mit RSpec anzeigen
[Ruby on Rails] Controller-Test mit RSpec
Führen Sie SystemSpec (RSpec) und Rubocop auf CircleCI aus
[Ruby on Rails] Modelltest mit RSpec
Einführung in Rspec mit Ruby on Rails x Docker
Rails-Anfänger haben versucht, mit RSpec zu beginnen
[Ruby / Rails] Inaktiviere Lint von update_all mit Rubocop