I compile and deploy my Phoenix projects manually, with no third-party library such distillery, and with a help of the commands “mix compile” and “mix release”, basically.
I need a way to run custom commands or tasks on a server in the production mode. It’d be similar to running migrations. But I’ve bewildered as for how it’s done. A project itself may or may not be up and running when a command or task is being executed. And I need to be able to pass some arguments to a said command-task.
How to do it?
- I’m aware of
defmodule Mix.Tasks.MyTask1 do .... but how would I do it in production, on a server? Is this even a proper and recommended way to run them on a server in production?
I’m aware of
bin/my_app eval 'MyProject.MyTask1'but why does it exist if there’s the other abovementioned approach? Again, is this one a proper and recommended way to run them on a server in production?
Are there other approaches?
I’m bewildered. Which one to use, in what circumstances? How to use them properly?