我有许多任务和工作,我希望能够在生产工具上手动执行。目前,我一直在remote_console
内运行代码来执行它们。我尝试使用/bin/my_app command MyModule my_func
运行它们,但是我收到了另一个Erlang节点正在使用的资源的错误。
我更喜欢使用/bin/my_app command MyModule my_func
样式,因此我可以使用ssh运行bash脚本。
在Elixir应用程序上运行远程任务的推荐方法是什么?
答案 0 :(得分:0)
由于useEffect(() => {
console.log(items);
}, [items])
不是应用程序版本的一部分,因此无法在生产环境中运行mix
任务。
但是,显然可以在最终的应用程序版本中包含任何代码,因此您可以添加将在应用程序启动时运行迁移的代码。
mix
模块的文档包含一个sample migration runner:
Ecto.Migrator
然后,可以在发行版启动过程中包含运行迁移的命令:
defmodule MyApp.Release do
@app :my_app
def migrate do
for repo <- repos() do
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true))
end
end
def rollback(repo, version) do
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :down, to: version))
end
defp repos do
Application.load(@app)
Application.fetch_env!(@app, :ecto_repos)
end
end