現象
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