データベース

私たちは、コマンドラインを介して私達のデータベースを管理することができます。

以下のコマンドは、SQLアダプターで、次のデータベースで使用することができます。

  • PostgreSQLの
  • MySQLの
  • SQLite3の

アダプタがに設定されていますlib/bookshelf.rbこれは、で定義された環境変数、使用する.env.*プロジェクトのルートにファイルを。

作ります

ではdb create、私たちは現在の環境用のデータベースを作成することができます。

% bundle exec hanami db create

生産データを保存するためには、このコマンドは、本番環境で実行することはできません。

ドロップ

ではdb drop、私たちは現在の環境のために既存のデータベースをドロップすることができます。

% bundle exec hanami db drop

生産データを保存するためには、このコマンドは、本番環境で実行することはできません。

移動します

db migrate私たちが実行できるマイグレーションで見つかったがdb/migrations

次のような移行を考えます:

% tree db/migrations
db/migrations
├── 20150613165259_create_books.rb
└── 20150613165900_create_authors.rb

私たちは、実行db migrateし、データベースの、バージョンはなっ20150613165900上記の移行からの最大のタイムスタンプです。

% bundle exec hanami db migrate # Migrates to max migration (20150613165900)

このコマンドは、ターゲットバージョンを指定するためのオプションの引数を受け入れます。私たちがしたい場合たとえば、ロールバックからの変更を20150613165900_create_authors.rb、私たちは移行できます「ダウン」

% bundle exec hanami db migrate 20150613165259 # Migrates (down) to 20150613165259

このコマンドは、すべての環境およびすべてのSQLデータベースで利用可能です。

準備します

現在の環境のためのデータベースを準備します。このコマンドは、本番環境で実行することはできません。

我々は実行するとdb prepare、それを:

  • データベースを作成します。
  • ロードのSQLダンプ(もしあれば、参照db apply
  • 保留中のマイグレーションを実行します。
% bundle exec hanami db prepare

このコマンドは、データベースのセットアップコマンドとして使用する必要があります。

適用します

これは実験的な機能です。アプリケーションは年後に開発されている場合、それは移行の多数を蓄積し、これは、開発およびテストのためのデータベース操作(CI)を遅く。

それはSCMの下にあるファイルへの破壊的な変更を行いますので、これが唯一の開発モードで許可されています。

我々は実行するとdb apply、それを:

  • 保留中のマイグレーションを実行します。
  • 新鮮なスキーマをダンプします db/schema.sql
  • からすべての移行を削除します db/migrations
% bundle exec hanami db apply

このコマンドは、開発環境でのみ使用可能です。

バージョン

現在のデータベースのバージョンを出力します。次のような移行を考えます:

% tree db/migrations
db/migrations
├── 20150613165259_create_books.rb
└── 20150613165900_create_authors.rb

我々は、データベースを移行する場合:

% bundle exec hanami db migrate

私たちは、その後、現在のバージョンを求めることができます:

% bundle exec hanami db version
20150613165900