2016-07-20 41 views
5

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

11

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