【问题标题】:Is there a Phoenix equivalent to Rails Console是否有相当于 Rails 控制台的 Phoenix
【发布时间】:2016-01-25 18:27:20
【问题描述】:

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

我正在尝试弄清楚如何在 Phoenix 应用程序中与我的数据库和模型进行交互。我知道iex,但我不知道如何使用它从repl 中检查我的应用程序数据库。我是否需要每次从 repl 用 ecto 连接到它?是否有 rails console 等价物。我检查了 Phoenix 文档、Elixir Dose 和 Ecto repo,但找不到我要找的东西。我错过了什么吗?

编辑:根据下面的答案,我找到了 ecto 文档的 this 部分。基于此,我可以做类似ArticlesApi.Repo.all ArticlesApi.Article

【问题讨论】:

  • 您可以通过给模块名称起别名来节省一些输入:alias ArticlesApi.{Repo, Article}。另外,请记住,您可以非常方便地从控制台 (r Article) 重新编译各个模块,或使用 recompile 重新编译整个项目。这使您可以让iex 会话始终处于打开状态,同时保持别名处于活动状态。

标签: elixir phoenix-framework ecto elixir-iex


【解决方案1】:

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

您可以从那里执行 Ecto 查询:

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

运行iex -S mix phx.server 也会启动凤凰服务器。

【讨论】:

  • 还值得注意的是,在项目根目录中的iex.exs 文件很方便,它允许您设置别名(因此您不必在所有内容之前都使用MyApp.)。一个例子是:alias MyApp.Repo alias MyApp.User alias MyApp.Car
  • 有没有办法在生产环境中使用它?
  • @Chris.Zou 是的,在你的远程 shell 中使用 bin/my_app remote_console
  • 这实际上是自 Phoenix 1.3 以来的iex -S mix phx.server
【解决方案2】:

对于运行时调试(如byebugdebuggerpry 在rails 中),使用

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

IEx.pry 到任何你需要它在运行时停止并继续调试的地方。

在控制台中输入 h 获取帮助

最重要的是,毕竟,重启你的服务器:

iex -S mix phoenix.server

更多信息:here

【讨论】:

    【解决方案3】:

    如果您从事开发工作,请使用iex -S mix phx.server

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

    【讨论】:

      【解决方案4】:

      对我来说,我想在我的 Elixir 测试中运行 pry。为此,您需要在 mix test 命令前面加上 iex - S

      完全是这样的

      iex -S mix test test/meta_api_web/pages/mutation/update/update_model_test.exs:270 
      

      【讨论】:

        猜你喜欢
        • 2016-07-23
        • 1970-01-01
        • 1970-01-01
        • 2015-02-16
        • 2010-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-07
        相关资源
        最近更新 更多