LoginSignup
2
0

More than 1 year has passed since last update.

docker環境でvscodeのrubocop拡張が反応しない時の対処法

Last updated at Posted at 2021-10-12

はじめに

vscode の rubocop 拡張 ruby-rubocop を Docker 環境で使用したところかなり詰まったのでその備忘録です。

ホストに rubocop をインストールすれば良いという記事が散見されましたが、根本的な解決になっていません。ここではホストを汚さずコンテナ内の rubocop を参照するような解決方法をあげます。

一人でも多くの方の参考になれば幸いです。

何も設定していない時のエラー ( rubocop 拡張入れただけ)

command /Users/horisho/.rbenv/shims/rubocop returns empty output! please check configuration.

ホストに rubocop は存在しないので、 docker コンテナに実行先を向けないといけません。

初期設定

こちらのIssueコメントを参考に設定をしました。
rubocop の実行ファイルを作成し、実行環境を Docker コンテナ内に向けている形です。
ディレクトリ構成は以下のようです。

$ tree -L 2 -a
.
├── .vscode
│   └── settings.json
├── api
│   ├── .rubocop.yml
│   ├── rubocop
│   └── 略
├── docker-compose.yml
└── 略

ファイルの中身は以下のようです。

api/rubocop
#!/bin/bash
docker-compose exec -T api bundle exec rubocop -c .rubocop.yml "$@"
docker-compose.yml
version: "3"

services:
  api:
    build:
      context: ./api
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    depends_on:
      - db
      - redis
    volumes:
      - './api:/myapp'
    ports:
      - '3010:3000'
    tty: true
    stdin_open: true
    env_file:
      - .env

# 以下略
.vscode/settings.json
{
  "ruby.rubocop.executePath": "./api/"
}

rubocop 周りの設定ファイルはapiディレクトリに含め、起動コンテナにマウントしている状態です。また、Issueコメントとは異なり、 rubocop 拡張の実行パスを./apiに向けています。

遭遇したエラーメッセージ

command ./api/rubocop returns empty output! please check configuration.
./rubocop is not executable

結論(修正方法)

rubocop 実行ファイルをdocker-compose.ymlと同階層に配置し、実行パスをIssueコメント同様./に修正すれば良い。

$ tree -L 2 -a
.
├── .vscode
│   └── settings.json
├── api
│   ├── .rubocop.yml
│   └── 略
├── docker-compose.yml
├── rubocop
└── 略
.vscode/settings.json
{
  "ruby.rubocop.executePath": "./"
}

原因

rubocop 実行ファイル(/apiディレクトリ)で docker-compose コマンドを実行しています。当然 docker-compose は同階層の docker-compose.yml を参照しにいきますが、 /api ディレクトリには存在せず、ルートディレクトリに存在します。そのため、コンテナが見つからずエラーというわけです。

注意点

rubocop実行ファイルでdocker-compose exec api ...execコマンドを実行しているため、コンテナがすでに立ち上がっていないとエラーで怒られます。

2
0
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
2
0