rails-erdで「Graphviz produced errors. Verify it has support for filetype=pdf~Original error: Format: "pdf" not recognized.~」とエラーが出た時の対処


現象

RailsでER図を自動生成してくれるrails-erdを使ってみたところ、"pdf"が認識されない!といった旨のエラーが発生。
※graphvizはインストール済み

# rake erd
Loading application environment...
Loading code in search of Active Record models...
Generating Entity-Relationship Diagram for 11 models...
rake aborted!
Saving diagram failed!
Graphviz produced errors. Verify it has support for filetype=pdf, or use filetype=                                                    dot.
Original error: Format: "pdf" not recognized. Use one of: canon cmap cmapx cmapx_n                                                    p dot eps fig gv imap imap_np ismap pic plain plain-ext pov ps ps2 svg svgz tk vml                                                     vmlz xdot xdot1.2 xdot1.4

Error from ["/usr/bin/dot", "-q1", "-Tpdf", "-oerd.pdf", "/tmp/graphviz.rb20170701                                                    -2024-1dwwpak"]:
Format: "pdf" not recognized. Use one of: canon cmap cmapx cmapx_np dot eps fig gv                                                     imap imap_np ismap pic plain plain-ext pov ps ps2 svg svgz tk vml vmlz xdot xdot1                                                    .2 xdot1.4

Tasks: TOP => erd => erd:generate
(See full trace by running task with --trace)

実行環境

CentOS 7.3
Ruby 2.4.0
Ruby on Rails 5.0.2

原因と対処

Graphvizのインストールミス。PDFをサポートするためには、事前にCairoとPangoというものをインストールしなければいけないらしいです。Cairoは2Dグラフィクスライブラリ、Pangoは多言語テキスト表示ライブラリで、いかにもGraphvizと関連してますね。
これらを入れる順番も重要だそうです(Cairo→Pango→Graphvizの順)。
ということで、Graphvizをインストールし直せば良さげです。

Graphizのアンインストール

# sudo yum remove -y graphviz

※ cairo, pangoの入れる順番を間違えているときはここでアンインストール

Cairo, Pango, Graphizのインストール

# sudo yum install -y cairo pango graphviz

再びrails-erdを実行


# rake erd
Loading application environment...
Loading code in search of Active Record models...
Generating Entity-Relationship Diagram for 11 models...
Done! Saved diagram to erd.pdf.

無事ER図ができました!

CoreText performance note: Client called~とエラーが出た時の対処法

別件ですがMac環境ではフォントの問題でエラーが発生することがあるらしいです。
そのときはgemインストールの際に以下のようにリポジトリを指定してやるといいそう。

+ gem 'rails-erd', github: 'paulwittmann/rails-erd', branch: 'mavericks'

参考

rails-erd
rails-erd issue#12
Qiita - Rails でモデルの情報を図にする方法 -Qiita