将iex shell附加到正在运行的elixir应用程序

MrR*_*uru 5 elixir-mix heroku elixir

我有一个在heroku上运行的elixir(混合)应用程序

我在将远程iex shell附加到此应用程序时遇到问题

该应用程序通过以下命令启动:

web: MIX_ENV=prod elixir --sname server -S mix run --no-halt
Run Code Online (Sandbox Code Playgroud)

我在本地附加shell没有问题

MIX_ENV=prod elixir --sname server -S mix run --no-halt
iex --sname console --remsh server@mru2
Run Code Online (Sandbox Code Playgroud)

但是,在heroku上尝试时,我遇到了以下问题:

heroku run "iex --sname console --remsh server@41959264-bef2-4d2e-b5de-6dcf618efa44"
Running `iex --sname console --remsh server@41959264-bef2-4d2e-b5de-6dcf618efa44` attached to terminal... up, run.4421
Erlang/OTP 17 [erts-6.4] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]

Could not contact remote node server@41959264-bef2-4d2e-b5de-6dcf618efa44, reason: :nodedown. Aborting...
Run Code Online (Sandbox Code Playgroud)

似乎启动的实例heroku run无法连接到运行服务器的实例.我试过强制执行一个常见的cookie,但无济于事.

我错过了什么?

bit*_*ker 6

我几乎肯定在Heroku dynos上运行的节点不允许彼此通信.但只要cookie在两个节点之间共享并且您连接到正确的完全限定名称,那么您在上面采取的步骤是正确的.

  • 究竟.Heroku dynos不允许交流.这就是为什么凤凰城这样的项目允许你在Heroku上做reds的pubsub. (3认同)