Y a-t-il un Phoenix équivalent à Rails Console

93

J'apprends juste Phoenix et Elixir et je viens de Ruby / Rails où je travaille dans le REPL en utilisant prypour inspecter ma base de données et l'état de l'application.

J'essaie de comprendre comment interagir avec ma base de données et mes modèles dans une application Phoenix. Je suis au courant iex, mais je ne sais pas comment l'utiliser inspecter la base de données de mon application à partir du repl. Dois-je me connecter avec ecto à chaque fois depuis le repl? Y a-t-il un rails consoleéquivalent. J'ai vérifié la documentation Phoenix, Elixir Dose et le repo Ecto, mais je ne trouve pas ce que je recherche. Est-ce que je manque quelque chose?

Edit: Basé sur la réponse ci-dessous, j'ai trouvé cette section de la documentation ecto. Sur cette base, je peux faire quelque chose commeArticlesApi.Repo.all ArticlesApi.Article

Chase Gilliam
la source
2
Vous pouvez économiser quelques secondes par aliasing le nom du module: alias ArticlesApi.{Repo, Article}. Gardez également à l'esprit que vous pouvez très facilement recompiler des modules individuels à partir de votre console ( r Article), ou recompiler l'ensemble du projet à l'aide de recompile. Cela vous permet de laisser une iexsession ouverte tout le temps, en gardant les alias actifs.
hmans

Réponses:

121

Vous pouvez exécuter iex -S mixpour exécuter iexavec les dépendances dans votre projet de mixage actuel inclus. Vous pouvez lire à ce sujet à http://elixir-lang.org/getting-started/mix-otp/introduction-to-mix.html

De là, vous pouvez exécuter des requêtes Ecto:

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

L'exécution iex -S mix phoenix.serverdémarrera également le serveur phoenix.

Gazler
la source
8
Il convient également de noter la commodité d'un iex.exsfichier à la racine de votre projet pour vous permettre de configurer des alias (vous n'avez donc pas à tout faire précéder MyApp.). Un exemple serait: alias MyApp.Repo alias MyApp.User alias MyApp.Car
David Kuhta
2
Existe-t-il un moyen de l'utiliser dans un environnement de production?
Chris.Zou
@ Chris.Zou Oui, utilisez bin/my_app remote_consoledans votre shell distant.
Nic Nilov
3
C'est en fait iex -S mix phx.serverdepuis Phoenix 1.3.
okay56k
27

Pour le débogage d'exécution, (comme byebugou debuggerou prydans les rails), utilisez

require IEx en haut de votre fichier de modèle ou de contrôleur ou de vues, puis tapez

IEx.pry à l'endroit où vous en avez besoin pour s'arrêter au moment de l'exécution et continuer le débogage.

Tapez hpour obtenir de l'aide dans la console

Plus important encore, après tout cela, redémarrez votre serveur avec:

iex -S mix phoenix.server

Plus d'infos: ici

Devaroop
la source
4

Si vous travaillez dans le développement, utilisez iex -S mix phx.server.

Si vous avez besoin d'accéder à la console d'une version déployée, accédez à votre répertoire de version et exécutez bin/<name of your app> remote_consolepour ouvrir un shell distant sur la console de votre application.

Mark Wilbur
la source