2016-05-14 5 views
1

Ich habe eine "Dummy" -App in meiner Mix-App, also ist die erste Migration in test/dummy/priv/repo/migrations/20160323060044_create_user.exs platziert.Ecto-Migration mit nicht standardmäßigen Repo-Pfad ausführen

Ich möchte diese Migration ausführen, aber es gibt zurück, und das enttäuscht mich.

Hier ist meine test.exs:

config :ecto_state_machine, Dummy.Repo, 
    adapter: Ecto.Adapters.Postgres, 
    username: System.get_env("USER"), 
    password: "posgtres", 
    database: "ecto_state_machine_test", 
    pool_size: 10, 
    port: 5432, 
    priv: "test/dummy/priv/repo/" 

Hier ist meine Migration:

defmodule Dummy.Repo.Migrations.CreateUser do 
    use Ecto.Migration 

    def change do 
    create table(:users) do 
     add :state, :string, null: false 
     add :confirmed_at, :datetime 

     timestamps 
    end 
    end 
end 

Ich bin mit

MIX_ENV=test mix ecto.migrate -r Dummy.Repo 

und ärgerlich already up statt Migration erhalten. Was mache ich falsch?

Meine Versuche:

  1. Ich habe versucht, und neu erstellen Datenbank zu löschen, nichts

    passiert
  2. Meine andere wiederum war es, den Code zu verlangen. Ich habe versucht, dies in meinem test.exs oder dev.exs zu implementieren, aber ich erhielt `Modul Ecto.Migration nicht geladen wird und nicht

    "test/dummy/priv/repo/migrations" |> Path.join("**/*.exs") |> Path.wildcard |> Enum.map(&Code.require_file/1)

  3. Ich habe auch versucht, durch MIX_ENV=test mix ecto.gen.migration f -r Dummy.Repo eine gefälschte Migration zu schaffen gefunden werden konnte, füllen Sie es mit Code, der eine Ausnahme auslösen, und als ich hatte

    MIX_ENV=test mix ecto.migrate -r Dummy.Repo # => 12:49:00.932 [info] Already up

So kann es keine Repo finden. Traurig, aber wahr

  1. Ich habe auch versucht MIX_ENV=test zu laden schälen, dann Code aus zweitem Ansatz aufrufe, dann Mix.Task.run "ecto.migrate" ["-r", "Dummy.Repo"]. Es kam zurück: Noop zu mir?

  2. Github Ausgabe: https://github.com/elixir-lang/ecto/issues/1428

+0

Haben Sie Ihre Migration erstellt 'Mix ecto.gen.migration create_user' mit? Dies sollte die Transaktion immer dort platzieren, wo Ecto sie lesen kann. – tkowal

+0

Ja, ich habe es getan. Werfen Sie einen Blick auf den 3. Ansatz – asiniy

+0

Wow, ich habe damit stundenlang zu tun gehabt. Als ich es schließlich auf den "Priv-Aspekt" beschränkte (und folglich die Fehlersuche durchgeführt wurde), stieß ich schließlich auf Ihren Beitrag des genau gleichen Problems! Wenn der Befehl 'ecto.gen.migration' funktioniert, sollte auch der Befehl 'ecto.migrate' funktionieren! – ibgib

Antwort

0

Jose Valim kommentiert at github:

This is fixed in Ecto 2.0.0-rc. In previous versions, migrations would always have to be inside priv. We have removed this requirement in Ecto 2.0. 
Verwandte Themen