Esiste una Phoenix equivalente a Rails Console


94

Sto solo imparando Phoenix ed Elixir e vengo da Ruby / Rails dove lavoro in REPL usando pryper ispezionare il mio database e lo stato dell'applicazione.

Sto cercando di capire come interagire con il mio database e i miei modelli in un'app Phoenix. Ne sono a conoscenza iex, ma non so come usarlo ispezionare il database della mia app dal repl. Devo collegarmi ad esso con ecto ogni volta dal rep? C'è un rails consoleequivalente. Ho controllato i documenti Phoenix, Elixir Dose e il repository Ecto, ma non riesco a trovare quello che sto cercando. Mi sto perdendo qualcosa?

Modifica: in base alla risposta di seguito, ho trovato questa sezione dei documenti ecto. Sulla base di questo posso fare qualcosa di simileArticlesApi.Repo.all ArticlesApi.Article


2
Si può risparmiare un po 'di battitura alias i nomi di modulo: alias ArticlesApi.{Repo, Article}. Inoltre, tieni presente che puoi ricompilare molto comodamente singoli moduli dalla tua console ( r Article) o ricompilare l'intero progetto usando recompile. Ciò consente di lasciare una iexsessione sempre aperta, mantenendo attivi gli alias.
hmans

Risposte:


121

Puoi correre iex -S mixper eseguire iexcon le dipendenze nel tuo attuale progetto mix incluso .. Puoi leggere su questo su http://elixir-lang.org/getting-started/mix-otp/introduction-to-mix.html

Da lì puoi eseguire query Ecto:

iex> MyApp.Repo.all(MyApp.User)

L'esecuzione iex -S mix phoenix.serveravvierà anche il server phoenix.


8
Vale anche la pena notare la comodità di un iex.exsfile nella radice del progetto per consentirti di impostare gli alias (quindi non devi precedere tutto con MyApp.). Un esempio potrebbe essere: alias MyApp.Repo alias MyApp.User alias MyApp.Car
David Kuhta

2
C'è un modo per utilizzarlo nell'ambiente di produzione?
Chris.Zou

@ Chris.Zou Sì, usa bin/my_app remote_consolenella tua shell remota.
Nic Nilov

3
Questo è in realtà iex -S mix phx.serverda Phoenix 1.3.
ok 56k

27

Per il debug in runtime, (come byebugo debuggero pryin rails), usa

require IEx nella parte superiore del modello o del controller o del file delle visualizzazioni, quindi digita

IEx.pry ovunque sia necessario, fermarsi in fase di esecuzione e continuare il debug.

Digita hper aiuto all'interno della console

Ancora più importante, dopo tutto ciò, riavvia il tuo server con:

iex -S mix phoenix.server

Maggiori informazioni: qui


4

Se stai lavorando allo sviluppo, usa iex -S mix phx.server.

Se hai bisogno di entrare nella console di una versione distribuita, vai alla directory della versione ed esegui bin/<name of your app> remote_consoleper aprire una shell remota sulla console della tua app.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.