I asked a question previously about getting exrm working for my project. The answer got me to the point that I can build my release (in dev mode) and access it via the console.
However there are a couple problems:
When I open the console via
rel/my_app/bin/my_app console
, my application does not actually start. I have to callApplication.start(:my_app)
to get it going.Calling
rel/my_app/bin/my_app start
does not start my app. I can see that the epmd, beam.smp, and run_erl processes have started, but my own application does not appear to be running.
Pretty sure these two problems are related.
Steps taken for console:
$ mix release --dev
$ ./rel/my_app/bin/my_app console
iex([email protected])1> Application.start(:my_app)
# at this point the app is running until I ctrl+c
Steps taken for start:
$ mix release --dev
$ ./rel/my_app/bin/my_app start
$ ps aux | grep "my_app"
12235 0.0 0.0 2460212 636 ?? S 11:10am 0:00.19 /Users/me/code/my_app/rel/my_app/erts-6.3.1/bin/epmd -daemon
17565 0.0 0.2 2524256 26236 s008 Ss+ 4:03pm 0:00.37 /Users/me/code/my_app/rel/my_app/erts-6.3.1/bin/beam.smp -- -root /Users/me/code/my_app/rel/my_app -progname Users/me/code/my_app/rel/my_app/bin/my_app -- -home /Users/me -- -boot /Users/me/code/my_app/rel/my_app/releases/0.0.1/my_app -boot_var ERTS_LIB_DIR /Users/me/code/my_app/rel/my_app/erts-6.3.1/../lib -config /Users/me/code/my_app/rel/my_app/releases/0.0.1/sys.config -pa /Users/me/code/my_app/rel/my_app/lib/consolidated -name [email protected] -setcookie my_app -user Elixir.IEx.CLI -extra --no-halt +iex -- console
17562 0.0 0.0 2452008 588 ?? S 4:03pm 0:00.00 /Users/me/code/my_app/rel/my_app/erts-6.3.1/bin/run_erl -daemon /Users/me/code/my_app/rel/my_app/tmp/erl_pipes/my_app/ /Users/me/code/my_app/rel/my_app/log exec "/Users/me/code/my_app/rel/my_app/bin/my_app" "console"
$ tail /var/log/system.log
Jun 9 16:03:14 me.local my_app[17565][17597]: Starting up
I can tell that my application is not running because it should consume from a queue and write to a data store. However when starting the release, the queue is never consumed. Unfortunately I can't find any more log output or errors aside from the one "Starting up" line.
Is there an argument I need to pass to exrm's start command to get it to run my app?
If not, is there perhaps a way to debug this via pointing the logs somewhere or inspecting internal processes?
Looking at your previously posted
mix.exs
, you need to add your own application toapplications
. This tells the VM which applications should be started at runtime. Some applications are started out of the box (such as:kernel
,:stdlib
, etc.), and you don't need to add those, but anything you wanted started automatically should go inapplications
. You can put apps which do not need to be started inincluded_applications
, as those are loaded, but not started.