みなさんこんにちは! 私の意見では、すべてのプログラマーは、移動するものと存在しないものすべてを自動化および最適化するよう努力する必要があります。 この記事では、GuardというRuby gemを使用してRuby on Rails開発者のワークフローを自動化する方法について説明します。 この記事は主にRuby開発者には役立ちますが、他の人には役立つかもしれません。

ガードとは何ですか?
Guardは、ファイルを変更するときにコマンドを自動的に実行できるツールです。 たとえば、サーバー設定ファイルを変更すると、Guardはサーバーを自動的に再起動する場合があります。 または、ファイルを保存するときにCSSに自動的にコンパイルされるようにLESSを構成できます。 開発者がGuardをどのように構成するかによります。
Guardには特別なGuardfile設定ファイルがあり、これはどのファイルを変更するときにどのコマンドを実行するかを示します。 すべての設定を自分で指定するか、最も頻繁に使用される設定が事前に書き込まれているGuard Pluginsコミュニティによって作成された設定を使用できます。
インストールと最初の開始
Guardをプロジェクトに統合する最善の方法は、GuardをGemfileに追加することです。
group :development do gem 'guard' end
そして、コマンドでインストールします
$ bundle
次に、Guardfileコマンドを作成する必要があります
$ bundle exec guard init
Guardを実行するには、Bundlerコマンドを使用するのが最適です。
$ bundle exec guard

Ruby on Railsアプリケーションのセットアップ
インストール後、標準のRoRプロジェクトにGuardを使用することを検討してください。 RoRアプリケーションが既に作成されているとします。 Gemfileの変更時に、Guardが必要なすべてのgemを自動的にインストールするようにします。
1.プロジェクトへの追加
これを行うには、Gemfileの開発グループに
guard-bundler gemを追加します
group :development do
宝石をセット
$ bundle install
そして、コマンドでプラグインを初期化します
$ guard init bundler
プロジェクトのルートにあるGuardfileに注意してください。 今、行があります
guard :bundler do watch('Gemfile') end
彼らは、GuardはGemfileを監視し、guard-bundler gemで事前に作成されたコマンドを実行すると言います。 この場合、それは
$ bundle install
2.検証
それをチェックしてください! 次のコマンドを使用して、ターミナルでGuardを有効にします
$ bundle exec guard
Gemfileにgemを追加します。 たとえば、
guard-rspecは 、Rspecのテストを自動的に実行します。
gem 'guard-rspec', require: false
ガードプロセスでターミナルを開いて、そこでbundlerが自動的に起動したことを確認しましょう。その結果、guard-rspecが自動的にインストールされました。 ご覧のとおり、このようなGuardの設定により、開発者は頻繁に実行されるタスクの1つを自動化できます。
3.セットアップ
Rspecのインストール後にプラグインを初期化する
$ guard init rspec
Guardfileに新しい行が追加されました。 それらを考慮してください:
これらの行は、自動的に実行されるようにRspecテストを構成します。 それらのいくつかを考えてみましょう。 たとえば、次の行
ruby watch('spec/spec_helper.rb') { "spec” }
Guardはspec / spec_helper.rbファイル(プロジェクトルートへの相対パスはGuardfileファイル)を監視し、変更されるたびにspecフォルダー全体のテストを開始すると言います。 ブロック開始
ruby guard :rspec, cmd: 'bundle exec rspec' do
ルールについては、すべてのRspecコマンドがbundle exec rspecパラメーターで起動されると述べています。 つまり、考慮されるケースでは、ruby spec / spec_helper.rbを変更すると、コマンドが起動されます
$ bundle exec rspec spec
ひも
rubywatch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
.rbファイルを変更すると、このファイルに関連付けられたテストのテストが開始されると述べています。 つまり、app / models / user.rbを変更すると、コマンドが自動的に実行されます
$ bundle exec spec spec/models/user_spec.rb
正規表現は、このようなアクションを作成および編集するために使用されます。 デバッグには、Rubyコンソールでmatchコマンドを使用することをお勧めします。たとえば、
"app/views/units/index.html.slim".match(%r{^app/views/(.+)/(.*)\.(.*)\.(erb|haml|slim)$})
その他の例!
Guardの場合、あらゆる場面で
多数のプラグインが作成されています。 各開発者は、自分に合った適切なものを個別に見つけて、自分で構成する必要があります。 現在使用しているものについて簡単に説明します。 私自身はまだ完璧な解決策を見つけていないので、コメントや提案を喜んでいます!
gemfileで
group :development, :test do
ガードファイル内
ルボコップについて少し
Rubocopは、.rbファイルで構文が正しいかどうかを確認できるRuby gemです。 この例では、Guardと一緒に構成されているため、Rubocopの.rbファイルを変更するたびに、それを確認し、コンソールとlog / rubocop.logファイルに結果を表示します。
Rubocopには膨大な数の設定があるため、任意の構文要件に適合させることができます。 コードを自動的に修正することもできます。 .rubocop.ymlファイルはgemの設定に使用されます。たとえば、rubocopは通常90文字を超える行で誓いますが、設定ファイルのおかげで、140文字を超える行のみを指すようにできます。
すべての設定を表示するには、コマンドを実行するだけです
$ rubocop --auto-gen-config
すべての設定を無効にしてファイルを作成します。 したがって、1つずつオンにして、目的の最終的な.rubocop.ymlファイルを取得できます。
結果
最終的に何が設定されますか? このプロジェクトでは、別のプロセスzeusとguardを実行するだけで十分です。 その後、次のことが起こります。
- zeus Railsを介して実行されているサーバーは自動的にサポートされ、メインのプロジェクト設定ファイルが変更されるたびに再起動します
- gemfileを変更するたびに、すべてのgemがインストールされます
- テストでファイルを変更すると、このテストが実行されます
- コントローラー/モデル/ライブラリ/ビューのファイルを変更すると、関連するテストがあれば起動されます
- 変更された各rubyファイルは、rubocopを使用してリテラシーをチェックします
- javascript / coffeescriptファイルを変更すると、すべてのジャスミンテストが実行されます
- 移行ファイルまたはシードを変更すると、必要なすべての移行が実行されます

したがって、十分に多数のプロセスが自動化されました。 各プロジェクトについて、警備員を立ち上げ、創造的なプロセスに完全に集中するだけで十分であることを確認したいと思います。
ガードの例
次に、Guardを使用した現在のプロセスについて説明します。 以下は、私が現在一緒に働いている他の開発者に私が与えた推奨事項です。
- ターミナルを開き、プロジェクトフォルダーに移動します
- テスト/サーバーを高速化するためにzeusを実行する
$ zeus start
- ガードを起動
$ bundle exec guard
これで、Guardが自動的に起動し、Zeusで有効化された付属のRailsサーバーをサポートします。 - ターミナルでEnterキーを押して、すべてのテストを実行します。 すべてのテストを修正したら、作業できます!
注意すべき点:テストファイルを変更すると、テストが自動的に実行されます。 つまり、IDEウィンドウと同時にターミナルウィンドウを開いたままにすることをお勧めします(たとえば、Rubymineでは、下のウィンドウでこれを行うことができます)。変更が行われたことでテストが失敗したかどうかをすぐに確認できます。

よろしくお願いします!
読んでくれてありがとう! 私はGuardの専門家であると主張していないので、コメントや提案を喜んでいます。