Запустите команду миграции дважды внутри псевдонимов в файле микса - PullRequest
0 голосов
/ 03 июля 2019

Внутри псевдонимов в файле микса.Если мы определим команду миграции следующим образом:

 defp aliases do
  [
    "ecto.migrate": [
      "ecto.migrate  data/priv/repo/migrations",
      "ecto.migrate --migrations-path apps/al/priv/repo/migrations"
     ]
  ]

Если мы запустим mix ecto.migrate.выполняется только первая команда, а вторая игнорируется.

Я знаю, что микс не позволяет запускать одну и ту же задачу дважды.И я не думаю, что Mix.task.rerun or reenable будет работать здесь, потому что это не пользовательская задача.

Есть ли способ переопределить ее, чтобы обе команды выполнялись?

1 Ответ

0 голосов
/ 05 июля 2019

Я не знаю ни одного способа перезапуска задач из Mix.Project, но вы можете легко создать свою собственную задачу в соответствии с вашими потребностями.

cat lib/mix/tasks/my_migrate.ex
defmodule Mix.Tasks.MyApp.MyMigrate do
  @shortdoc "Executes `ecto.migrate` several times for different paths"

  use Mix.Task

  @impl Mix.Task
  def run(paths) do
    Enum.each(paths, fn path ->
      Mix.shell().info("Executing Ecto.Migrate for path: " <> path)
      Mix.Tasks.Ecto.Migrate.run(migrations_path: path)
      Mix.Task.reenable(Mix.Tasks.Ecto.Migrate)
    end)
  end
end

И запустить ее как

mix my_app.my_migrate "data1/migrations" "data2/migrations"
...