我之前问过一个关于让exrm为我的项目工作的问题。答案让我明白了我可以构建我的版本(在开发模式下)并通过控制台访问它。
但是有几个问题:
当我通过打开控制台时
rel/my_app/bin/my_app console
,我的应用程序实际上并没有启动。我必须打电话Application.start(:my_app)
才能开始。通话
rel/my_app/bin/my_app start
不会启动我的应用程序。我可以看到 epmd、beam.smp 和 run_erl 进程已启动,但我自己的应用程序似乎没有运行。
很确定这两个问题是相关的。
控制台采取的步骤:
$ mix release --dev
$ ./rel/my_app/bin/my_app console
iex(my_app@127.0.0.1)1> Application.start(:my_app)
# at this point the app is running until I ctrl+c
开始采取的步骤:
$ 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 my_app@127.0.0.1 -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
我可以说我的应用程序没有运行,因为它应该从队列中消耗并写入数据存储。但是,在开始发布时,队列永远不会被消耗。不幸的是,除了“启动”行之外,我找不到更多的日志输出或错误。
我需要将参数传递给 exrm 的 start 命令以使其运行我的应用程序吗?
如果没有,是否有办法通过将日志指向某处或检查内部进程来调试它?