Gibt es ein Phoenix-Äquivalent zur Rails Console?

91

Ich lerne gerade Phoenix und Elixir und komme von Ruby / Rails, wo ich in der REPL arbeite pry, um meine Datenbank und meinen Anwendungsstatus zu überprüfen.

Ich versuche herauszufinden, wie ich mit meiner Datenbank und meinen Modellen in einer Phoenix-App interagieren kann. Ich bin mir dessen bewusst iex, aber ich weiß nicht, wie ich es verwenden soll. Überprüfen Sie die Datenbank meiner App anhand der Antwort. Muss ich mich jedes Mal über die Antwort mit ecto verbinden? Gibt es ein rails consoleÄquivalent. Ich habe die Phoenix-Dokumente, Elixir Dose und das Ecto-Repo überprüft, kann aber nicht finden, wonach ich suche. Vermisse ich etwas

Bearbeiten: Basierend auf der Antwort unten habe ich diesen Abschnitt der ecto-Dokumente gefunden. Auf dieser Grundlage kann ich so etwas tunArticlesApi.Repo.all ArticlesApi.Article

Chase Gilliam
quelle
2
Sie können einige Eingaben speichern, indem Sie die Modulnamen mit einem Alias ​​versehen : alias ArticlesApi.{Repo, Article}. Denken Sie auch daran, dass Sie einzelne Module sehr bequem von Ihrer Konsole ( r Article) neu kompilieren oder das gesamte Projekt mit neu kompilieren können recompile. Auf diese Weise können Sie eine iexSitzung jederzeit offen lassen und die Aliase aktiv halten.
Hmans

Antworten:

120

Sie können ausführen iex -S mix, um iexmit den Abhängigkeiten in Ihrem aktuellen Mix-Projekt auszuführen . Weitere Informationen hierzu finden Sie unter http://elixir-lang.org/getting-started/mix-otp/introduction-to-mix.html

Von dort aus können Sie Ecto-Abfragen ausführen:

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

Durch Ausführen iex -S mix phoenix.serverwird auch der Phoenix-Server gestartet.

Gazler
quelle
8
Beachten Sie auch die Bequemlichkeit einer iex.exsDatei im Stammverzeichnis Ihres Projekts, damit Sie Aliase einrichten können (damit Sie nicht alles voranstellen müssen MyApp.). Ein Beispiel wäre: alias MyApp.Repo alias MyApp.User alias MyApp.Car
David Kuhta
2
Gibt es eine Möglichkeit, dies in der Produktionsumgebung zu verwenden?
Chris.Zou
@ Chris.Zou Ja, bin/my_app remote_consolein Ihrer Remote-Shell verwenden.
Nic Nilov
3
Dies ist eigentlich iex -S mix phx.serverseit Phoenix 1.3.
okay56k
27

Verwenden Sie für das Laufzeit-Debug (wie byebugoder debuggeroder pryin Rails)

require IEx Geben Sie dann oben in Ihr Modell, Ihren Controller oder Ihre Ansichtsdatei ein

IEx.pry dorthin, wo Sie es benötigen, um zur Laufzeit anzuhalten und mit dem Debuggen fortzufahren.

Geben Sie hHilfe in die Konsole ein

Starten Sie nach all dem Ihren Server neu mit:

iex -S mix phoenix.server

Mehr Infos: hier

Devaroop
quelle
4

Wenn Sie in der Entwicklung arbeiten, verwenden Sie iex -S mix phx.server.

Wenn Sie die Konsole einer bereitgestellten Version benötigen, wechseln Sie in Ihr Versionsverzeichnis und führen Sie bin/<name of your app> remote_consoleeine Remote-Shell für die Konsole Ihrer App aus.

Mark Wilbur
quelle