IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

DBIx::Class::Schema::Loader で 34 秒くらいで Schema クラス生成

既存 DB から以下のワンライナー一発で DBIx::Class の Schema が生成できる

$ perl -MDBIx::Class::Schema::Loader=make_schema_at,dump_to_dir:./lib -e 'make_schema_at "Hoge::Schema", {relationships => 1, debug => 1}, ["dbi:mysql:hoge","user","password"]'

やりかた。

  1. まず、クラスを作りたいディレクトリ付近に移動
  2. さっきのコマンドの dump_to_dir: の箇所にクラスツリーの起点となるディレクトリを指定
  3. make_schema_at の第一引数に生成する Schema のパッケージ名を指定
  4. 外部キー制約とかを考慮して has_many とか belongs_to とかを自動で設定して欲しい場合は relationships => 1 にする
  5. ログを出して欲しい場合は、 debug => 1 を設定する。寡黙的にやる場合はいらない。
  6. 最後に配列で、DSN、ユーザ名、パスワードなどの接続情報を入れる。
  7. だだだだだっとクラスが生成される。
  8. ウマー