是否有与Rails Console等效的Phoenix


92

我只是在学习Phoenix和Elixir,我来自Ruby / Rails,我在REPL中工作,pry用于检查数据库和应用程序状态。

我试图弄清楚如何在Phoenix应用程序中与数据库和模型进行交互。我知道iex,但是我不知道如何使用它从repl检查我的应用程序数据库。每次从repl时都需要用ecto连接到它吗?是否有一个rails console等效的。我检查了Phoenix文档,Elixir Dose和Ecto回购,但找不到我想要的东西。我想念什么吗?

编辑:根据下面的答案,我发现了ecto文档的这一部分。基于此,我可以做类似的事情ArticlesApi.Repo.all ArticlesApi.Article


2
您可以通过为模块名称加上别名来保存一些输入alias ArticlesApi.{Repo, Article}。另外,请记住,您可以非常方便地从控制台(r Article)重新编译各个模块,或者使用来重新编译整个项目recompile。这使您可以iex始终保持会话打开状态,并使别名保持活动状态。
hmans '17

Answers:


120

您可以运行iex -S mixiex包含当前混合项目中的依赖项来运行。您可以在http://elixir-lang.org/getting-started/mix-otp/introduction-to-mix.html上阅读有关此内容的信息。

从那里可以执行Ecto查询:

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

运行iex -S mix phoenix.server还将启动phoenix服务器。


8
同样值得一提的是,iex.exs项目根目录中的文件允许您设置别名(这样您就不必在前面加上MyApp.)了。一个例子是: alias MyApp.Repo alias MyApp.User alias MyApp.Car
David Kuhta '16

2
有什么方法可以在生产环境中使用它吗?
克里斯·邹(Chris.Zou)

@ Chris.Zou是的,bin/my_app remote_console在您的远程shell中使用。
Nic Nilov

3
这实际上是iex -S mix phx.server从Phoenix 1.3开始的。
okay56k

27

对于运行时调试(如byebugor debuggerpryin rails),请使用

require IEx 在模型或控制器或视图文件的顶部,然后输入

IEx.pry 到您需要它在运行时停止并继续调试的位置。

键入h的控制台内的帮助

最重要的是,毕竟,使用以下命令重新启动服务器:

iex -S mix phoenix.server

更多信息:这里


4

如果您正在开发中,请使用iex -S mix phx.server

如果您需要进入已发布版本的控制台,请转到您的发布目录并运行bin/<name of your app> remote_console以打开一个远程Shell到您应用程序的控制台。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.