ER図が生成したかったのでrailsとschema_plus(+MySQLWorkbench)を使ってみた

railsはデフォルトではforeign_keyを設定してくれないので、

MySQLWorkbenchでリバースエンジニアリングしたときにERDの線の部分が出力されません。

ruby-toolboxみたり、ググったりしてみると

  • foreigner
  • automatic_foreign_key
  • schema_plus

あたりがヒットして

mlomnicki/automatic_foreign_key · GitHub https://github.com/mlomnicki/automatic_foreign_key

みると

SchemaPlus - new and better automatic_foreign_key

とかかいてあるので、

lomba/schema_plus · GitHub https://github.com/lomba/schema_plus

を使ってみた。

まず、MySQLWorkbenchをインストール

MySQL :: MySQL Workbench 5.2 http://www-jp.mysql.com/products/workbench/

次にmysqlをインストールする

※手順的にconfig/database.yml弄る手間を省くためにあえてノンパスワードのまま

brew install mysql
mysql.server start

rails newして

rails new schema_plus_sample -d mysql && cd schema_plus_sample

Gemfileに

echo "gem 'schema_plus'" >> Gemfile

書いて

bundle install --path vendor/bundle

する、あとは

rails g model user name:string password:string
rails g model book name:string title:string user:references
rake db:create
rake db:migrate

とか適当なモデル作ってリファレンス設定してMySQLにデータベースができたら

MySQLWorkBench開いて

f:id:kanetann:20130514005431j:plain

localhost:3306にrootで接続できるかTest Connectionして

f:id:kanetann:20130514005530j:plain

correctな感じだったら、接続してcommand+Rでリバースエンジニアリングの設定画面開いて

f:id:kanetann:20130514005714j:plain

schema_plus_sample_developmentにチェックして

f:id:kanetann:20130514005842j:plain

どんどん進んでExecuteボタンを押すと

f:id:kanetann:20130514005909j:plain

こんな感じでERDが表示されます。

とはいえ、rails-erdのほうがお手軽だし、オブジェクトや線をいろいろいじらなくてもよしなにレイアウトしてくれる点で使いやすそうだという印象があります。

データベース設計時に使うといろいろ捗りそうです。