2017-04-21 8 views
0

2つのデータベースに接続するようにPhoenixアプリケーションをセットアップしました。私は自分のマイグレーションやさまざまなEcto mixタスクを管理するのに少し問題があります。具体的には、新しいマイグレーションの作成とマイグレーションのロールバックです。まず第一にPhoenix - 複数のデータベースの移行ミックスタスクの管理に関する問題

が、ここでは最初config/dev.exs

config :phoenix_backend, PhoenixBackend.Repo, 
    adapter: Ecto.Adapters.Postgres, 
    username: "postgres", 
    password: "postgres", 
    database: "phoenix_backend_dev", 
    hostname: "localhost", 
    pool_size: 10 

config :phoenix_backend, PhoenixBackend.SearchRepo, 
    adapter: Ecto.Adapters.Postgres, 
    username: "postgres", 
    password: "postgres", 
    database: "phoenix_backend_search_dev", 
    hostname: "localhost", 
    pool_size: 10 

からレポ構成ですが、私のアプリはちょうど私が後でSearchRepoを追加し、1つのレポ、デフォルトRepoを持っていました。

最初にSearchRepoを設定したとき、そのデータベースに新しいモデルを作成するために$ mix gen.modelを実行しました。移行がpriv/repo/migrationsに行き、その後、私は私の新しいデータベースを指すように自動生成されたモジュールの定義を調整する - 私は$ mix ecto.migrateを実行したとき、私は

defmodule PhoenixBackend.SearchRepo.Migrations.CreateSearch do 

defmodule PhoenixBackend.Repo.Migrations.CreateUserRole do 

を変更し、私はエラーを得た

Could not find migrations directory "priv/search_repo/migrations" for repo PhoenixBackend.SearchRepo. 

私はそのディレクトリを作成し、移行を移行して、もう一度移行を実行しました。完璧でした。

だから、これは私が今privに2つの移行ディレクトリを持っている...問題(複数可)に

私をもたらします - priv/repo/migrationspriv/search_repo/migrations

  1. 私は$ mix ecto.migrate new_migrationを実行する場合、これはnew_migrationの両方のディレクトリの移行ファイルを作成します。

  2. $ mix ecto.rollbackを実行すると、は、priv/repo/migrationsからロールバックされます。

  3. $ mix ecto.migrateを実行すると、ディレクトリの移行が実行されます。

私はこの動作をどのように標準化することができますか?私が実行しているコマンドに問題があるのですか、またはこれらの異なるディレクトリを指すように変更する必要があるアプリケーションの設定に何かがありますか?

私は移行を作成して特定のディレクトリを指していることが大好きです。どのデータベースを移行およびロールバックするかを指定できるようにしたいと思います。この動作をどのようにカスタマイズできますか?

答えて

2

あなたが探しているオプションは、すべてのミックスヘルプの-r CustomRepo

$ mix ecto.gen.migration add_something -r MyApp.SearchRepo 
$ mix ecto.migrate -r MyApp.SearchRepo 

そのです。それを得るには

+0

スティーブあなたはもう一度私を保存しました! – skwidbreth

+0

素晴らしいです。謝辞をありがとう。それをマークして忘れないでください:) –

関連する問題