¿Existe un Phoenix equivalente a Rails Console?

94

Estoy aprendiendo Phoenix y Elixir y vengo de Ruby / Rails, donde trabajo en REPL usando prypara inspeccionar mi base de datos y el estado de la aplicación.

Estoy tratando de averiguar cómo interactuar con mi base de datos y modelos en una aplicación de Phoenix. Lo sé iex, pero no sé cómo usarlo, inspeccione la base de datos de mi aplicación desde la respuesta. ¿Necesito conectarme a él con ecto cada vez desde la respuesta? ¿Existe un rails consoleequivalente? Revisé los documentos de Phoenix, Elixir Dose y el repositorio de Ecto, pero no puedo encontrar lo que estoy buscando. ¿Me estoy perdiendo de algo?

Editar: Basado en la respuesta a continuación, encontré esta sección de los documentos ecto. Basado en esto puedo hacer algo comoArticlesApi.Repo.all ArticlesApi.Article

Chase Gilliam
fuente
2
Usted puede ahorrar algo de tecleo por aliasing los nombres de los módulos: alias ArticlesApi.{Repo, Article}. Además, tenga en cuenta que puede recompilar módulos individuales de manera muy conveniente desde su consola ( r Article), o recompilar todo el proyecto usando recompile. Esto le permite dejar una iexsesión abierta todo el tiempo, manteniendo los alias activos.
hmans

Respuestas:

121

Puede ejecutar iex -S mixpara ejecutar iexcon las dependencias en su proyecto de mezcla actual incluidas. Puede leer sobre esto en http://elixir-lang.org/getting-started/mix-otp/introduction-to-mix.html

Desde allí puede ejecutar consultas Ecto:

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

La ejecución iex -S mix phoenix.servertambién iniciará el servidor phoenix.

Gazler
fuente
8
También vale la pena señalar la conveniencia de un iex.exsarchivo en la raíz de su proyecto para permitirle configurar alias (para que no tenga que preceder todo con MyApp.). Un ejemplo sería: alias MyApp.Repo alias MyApp.User alias MyApp.Car
David Kuhta
2
¿Hay alguna forma de que pueda usar esto en un entorno de producción?
Chris.Zou
@ Chris.Zou Sí, utilícelo bin/my_app remote_consoleen su shell remoto.
Nic Nilov
3
Esto es en realidad iex -S mix phx.serverdesde Phoenix 1.3.
okay56k
27

Para depurar el tiempo de ejecución, (como byebugo debugger, o pryen carriles), el uso

require IEx en la parte superior de su modelo o controlador o archivo de vistas, luego escriba

IEx.pry a donde lo necesite para detenerlo en tiempo de ejecución y continuar depurando.

Escriba hpara obtener ayuda dentro de la consola

Lo más importante, después de todo eso, reinicie su servidor con:

iex -S mix phoenix.server

Más info: aquí

Devaroop
fuente
4

Si está trabajando en desarrollo, use iex -S mix phx.server.

Si necesita acceder a la consola de una versión implementada, vaya a su directorio de versiones y ejecute bin/<name of your app> remote_consolepara abrir un shell remoto en la consola de su aplicación.

Mark Wilbur
fuente