この記事なんやねん
最近は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/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
と入力してください。
これで設定は終わりです。
まとめ
全てDocker内で完結できるとスッキリしていいですね。
因みに、いくつかRailsプロジェクトを掛け持ちしてると、あるプロジェクトではDocker使ってなくてローカルでRubocop使う場合もありますよね。そんな時はわざわざAtomの設定を変更しなくても、ラッパースクリプトの最後の行のコマンドをこのように変更すれば大丈夫です。
rubocop $CMD_ARGS
はい、単純にローカルにインストールしたrubocop
を実行してるだけですね。
それではDockerと過ごすRubocopライフを楽しんでください。