開発環境にdockerを使っている場合のrails-erdのセッティング

こんにちは!kossyです!




さて、今回は開発環境にdockerを使っている場合のrails-erdのセッティング方法について、
ブログに残してみたいと思います。



環境

Ruby 2.6.6
Rails 6.0.3.5
rails-erd 1.6.1
ruby-graphviz
docker desktop 2.3.6
docker-compose 1.27.0



dockerfileの修正

docker環境でrails-erdを使う場合、仮想マシン内にruby-graphvizをインストールしなくてはなりません。

以下のようなdockerfileがあるとします。

FROM ruby:2.6
ENV LANG C.UTF-8

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs vim

RUN mkdir /app
WORKDIR /app

COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock

RUN bundle install
COPY . /app

このdockerfile内でapt-getしてる行でgraphvizを追記します。

FROM ruby:2.6
ENV LANG C.UTF-8

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs vim graphviz

RUN mkdir /app
WORKDIR /app

COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock

RUN bundle install
COPY . /app

この状態でコンテナを立ち上げ直しましょう

$ docker-compose build

gemfileを編集します。

group :development do
  gem 'listen', '~> 3.2'
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
  gem 'rails-erd' # 追記
end

bundle installします。

$ docker-compose run web bundle install

PDFファイルを生成するには以下のコマンドを実行します。

$ docker-compose run web bundle exec erd

このコマンドを実行することで、アプリケーションのルートディレクトリ(appとかconfigとかtmpと置いてあるディレクトリと同じ階層)に、「erd.pdf」というファイルが生成されます。

蛇足

デフォルトの設定のままだと、外部キーが表示されなかったりするので、オプションを入れてコマンド実行もできます。

# timestampと主キー以外のカラムを表示
$ docker-compose run web bundle exec erd --attributes=content,foreign_keys

より詳しいオプションを知りたい方は以下ドキュメントをご覧ください。
voormedia.github.io




勉強になりました。



大いに参考にさせていただいたサイト

この場を借りて御礼を申し上げます。

Rails ERD – Customisation options
railsでER図を出力する - rails erd | Dendoron