Nag*_*i45 7 elixir erlang-otp iex
我有一个elixir/OTP应用程序在生产中运行,它开始于mix phoenix.server.它有几个持有状态的进程.其中一个是作为代理实现的存储,当前有一个我想手动更改的状态,而不会停止整个应用程序.一旦我在应用程序内部进行iex会话,这将是微不足道的,但我不知道在elixir中是否甚至可以使用这样的选项?
tko*_*wal 16
这取决于您是如何启动OTP应用程序的.要连接到节点,需要使用--name或--sname标志启动它.您可以使用检查当前正在运行的会话的名称node()
$ iex
Erlang/OTP 18 [erts-7.2.1] [source] [64-bit] [smp:4:4] [async-threads:10] [kernel-poll:false]
Interactive Elixir (1.3.0) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> node()
:nonode@nohost
Run Code Online (Sandbox Code Playgroud)
节点名称是一个原子,其中第一部分是实际节点名称,第二部分是主机.主机用于路由,因此很难连接到部署的节点nohost.
如果iex以短名称(--sname)开头,它将自动检测您的主机名.
$ iex --sname foo --cookie ciastko
(...)
iex(foo@MacBook-Pro-Tomasz)1> node
:"foo@MacBook-Pro-Tomasz"
Run Code Online (Sandbox Code Playgroud)
在其他一些控制台上运行iex不同的名称和相同的cookie并尝试Node.connect(:"foo@MacBook-Pro-Tomasz").他们应该联系.
你可能没有开始你的凤凰应用程序考虑到这一点,你现在无法连接.下次需要运行时启动Phoenix这种可能性:
elixir --sname some_name --cookie ciastko -S mix phoenix.server
Run Code Online (Sandbox Code Playgroud)