Mam uruchomioną aplikację eliksir/OTP, która została uruchomiona pod numerem mix phoenix.server
. Ma kilka procesów utrzymujących stan. Jedną z nich jest skrytka, zaimplementowana jako Agent, która obecnie ma stan, który chciałbym ręcznie zmienić bez zatrzymywania całej aplikacji. Kiedy jestem w sesji iex wewnątrz aplikacji, będzie to banalne, ale nie wiem, czy taka opcja jest nawet możliwa w eliksiru?Dołączanie sesji iex do działającego procesu eliksir/OTP
Odpowiedz
To zależy od tego, w jaki sposób uruchomiłeś swoją aplikację OTP. Aby połączyć się z węzłem, należy go uruchomić z flagą --name
lub --sname
. Można sprawdzić nazwę sesji obecnie działa z 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()
:[email protected]
Nazwa węzła jest atom, gdzie pierwsza część jest faktyczna nazwa węzła, a druga część jest gospodarzem. Host jest używany do routingu, więc trudno jest połączyć się z węzłem wdrożonym pod numerem nohost
.
Jeśli uruchomisz iex
z krótką nazwą (--sname
), automatycznie wykryje ona twoją nazwę hosta.
$ iex --sname foo --cookie ciastko
(...)
iex([email protected])1> node
:"[email protected]"
Na innej perspektywie konsoli iex
z inną nazwą i tym samym pliku cookie i spróbuj Node.connect(:"[email protected]")
. Powinny się połączyć.
Prawdopodobnie nie uruchomiłeś aplikacji phoenix z tą myślą i nie możesz się teraz połączyć. Aby uruchomić Phoenix z tą możliwością następnym razem, musisz uruchomić:
elixir --sname some_name --cookie ciastko -S mix phoenix.server