LoginSignup
8
3

More than 3 years have passed since last update.

Docker環境でAtomからRubocopを使う方法

Last updated at Posted at 2019-08-15

この記事なんやねん

最近はDockerを使って環境構築をするケースが多いと思いますが、Atomなどのテキストエディタのコードフォーマットで使うRubocop系のライブラリを動作させるための日本語の記事が意外となかったので投稿します。

Atomのlinter-rubocopをDocker経由で動作させるのを目的に書いていきます。
docker-composeでも動きますよ。

手順

ここから早速始めていきましょう。因みに、以下の環境は揃っているという前提で進めます。

  • Dockerとdocker-composeをインストール済み
  • Atomをインストール済み
  • docker-composeを使ってRails環境を構築済み

もし、 環境構築まだやねん って状態だったら、こちらの記事を参考に開発環境を作ってみてください。

また、自分の使ってる.rubocop.ymlこちらになります。まだ用意してなければなければ使ってみてください。

ラッパースクリプトの配置

まずは、ラッパースクリプトを作成しましょう。
配置場所はどこでもいいですが、プロジェクト配下にbin/rubocopというパスで配置するのが分かりやすいかと思います。今回の例ではそうします。

docker execしていますがdocker runコマンドでも動作します。
ただ、execの方が早いので、コンテナを起動しておいてexecコマンドにてrubocopを叩く方が使い勝手がいいかと思います。
ここら辺はお好みで変えてください。

bin/rubocop
#!/bin/bash

CMD_ARGS=""
for arg in $@
do
if [ -f "$arg" ]
then
  CMD_ARGS="$CMD_ARGS ${arg#$PWD/}"
else
  CMD_ARGS="$CMD_ARGS $arg"
fi
done

docker exec -i <コンテナ名> rubocop $CMD_ARGS

<コンテナ名>にrubocopがインストールされてるコンテナ名を記載してください。docker-compose psコマンドで確認できます。
因みに、私の環境では下記のようにhr_web_1がrailsとrubocopがインストールされてるコンテナになります。

% dc ps
   Name                  Command                State     Ports
---------------------------------------------------------------
hr_chrome_1   /opt/bin/entry_point.sh          Exit 143        
hr_db_1       docker-entrypoint.sh postgres    Exit 0          
hr_web_1      bundle exec rails s -p 300 ...   Exit 1          

記述したら、chmod +x bin/rubocopで実行権限を付与するのを忘れないでください。

スクリプトの実行準備が整ったら、docker-compose up -dでコンテナを起動しておきましょう。

プラグインの設定

linter-rubocopからInstallボタンを押して、プラグインをAtomにインストールしてください。

次に、AtomのLinter Rubocopの設定画面から、Command欄に./bin/rubocopと入力してください。

rubocop.png

これで設定は終わりです。

まとめ

全てDocker内で完結できるとスッキリしていいですね。

因みに、いくつかRailsプロジェクトを掛け持ちしてると、あるプロジェクトではDocker使ってなくてローカルでRubocop使う場合もありますよね。そんな時はわざわざAtomの設定を変更しなくても、ラッパースクリプトの最後の行のコマンドをこのように変更すれば大丈夫です。

rubocop $CMD_ARGS

はい、単純にローカルにインストールしたrubocopを実行してるだけですね。

それではDockerと過ごすRubocopライフを楽しんでください。

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3