我正在学习Phoenix和Elixir,我来自Ruby/Rails,我在REPL中工作,pry用来检查我的数据库和应用程序状态.
我正试图弄清楚如何在Phoenix应用程序中与我的数据库和模型进行交互.我知道iex,但我不知道如何使用它从repl检查我的应用程序的数据库.我是否需要每次从repl使用ecto连接到它?有没有rails console等价物.我检查了Phoenix文件,Elixir Dose和Ecto repo,但找不到我要找的东西.我错过了什么吗?
编辑:根据下面的答案,我发现了ecto文档的这一部分.基于此我可以做类似的事情ArticlesApi.Repo.all ArticlesApi.Article
如何睡觉/等待一秒钟?
我能找到的最好的东西是这样的(在iex中):
IO.puts "foo" ; :timer.sleep(1); IO.puts "bar"
Run Code Online (Sandbox Code Playgroud)
但是我的两个看法都没有延迟.
我是Elixir的新手,但它有很多乐趣!
我来自Ruby世界,所以开始看起来比喻.并且存在调试工具pry.使用binding.pry我可以中断任何会话.我在Elixir找到了类似的东西 - IEx.pry.但是当我通过测试时,它不起作用ExUnit.
问题 - 是否可以中断测试会话并使用当前环境运行iex?
我知道我们可以使用control-C退出IEX控制台.我很好奇是否有一个命令输入控制台也会做同样的事情.
每次修改源代码时如何自动重新编译和重新加载我的iex + mix应用程序?
如果iex + mix组合无法做到这一点,那么最简单的选择是什么?我已经检查了凤凰的重载方式,对我的小测试项目来说似乎并不容易实现.
我也知道José的.iex.exs:
defmodule R do
def reload! do
Mix.Task.reenable "compile.elixir"
Application.stop(Mix.Project.config[:app])
Mix.Task.run "compile.elixir"
Application.start(Mix.Project.config[:app], :permanent)
end
end
Run Code Online (Sandbox Code Playgroud)
我并不是非常高兴,因为它不会在代码更改时自动重新加载,我仍然需要输入R.reload!iex.
并且..请帮我在stackoverflow上创建"iex"标签,我的声誉还不够:)
使用IEx(Elixir的REPL),我希望能够保存我的命令历史记录.
例如:
我可以打开一个新的IEx会话并执行命令.执行命令后,我可以按向上箭头并预先填充我的最后一个命令.关闭IEx并重新打开后,我想访问我的最后一个命令.
有没有办法做到这一点?
()在IEx 1.2.4中键入时,光标将"跳转"到匹配的括号1s并向后移动.即使它不是真的跳跃但它有点令人讨厌.有没有办法在IEx中禁用此功能?
编辑:
虽然最初涉及IEx的问题,实际问题(正如@tkowal在下面的评论中所指出的)实际上是在IEx运行的Erlang Shell中.因此我在这个问题上添加了erlang-shell标签.
我想使用IEx.pry逐步使用我的elixir代码,比如ruby中的byebug或Java中的调试点.我试着在这里查看文档:https://github.com/elixir-lang/elixir/blob/4f68c4f10502e0f54a21093bb9a33957e63a9ac4/lib/iex/lib/iex.ex 但没有找到任何内容.谁有人建议这样做的方法?
我知道几种退出的方法,iex但我喜欢在其他REPL中使用ctrl-D(例如node,irb.)
如何自定义iex才能执行此操作?
在Elixir中,有没有办法直接从shell调用模块函数,而不需要启动iex -S mix会话?让我用一个场景来说明:
作为我的Phoenix应用程序的一部分,我编写了一个辅助模块,可以从相邻的iex -S mix会话中运行.这是一个超级简化的版本:
defmodule MyApp.Helper do
# For the demo, these imports/aliases are not used - but they're there in real life.
import Ecto.Query
alias MyApp.Repo
def start do
{:ok, "Done"}
end
end
Run Code Online (Sandbox Code Playgroud)
如果我启动会话iex -S mix然后从模块运行一个函数,它一切正常:
$ iex -S mix
Erlang/OTP 20 [erts-9.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Compiling 2 files (.ex)
Interactive Elixir (1.5.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> MyApp.Helper.start
{:ok, …Run Code Online (Sandbox Code Playgroud)