我想从Elixir中的单元测试中分离出集成测试.我发现Elixir mix文档有一个关于过滤器的部分,并描述了我想要做的事情.
然后将下面的行添加到appdir/test/test_helper.exs中
# Exclude all external tests from running
ExUnit.configure exclude: [external: true]
Run Code Online (Sandbox Code Playgroud)
那么一个标签如何测试为"外部"?
我有一个小凤凰应用程序,允许用户登录并查阅他们的个人资料.我使用了以下简单路线:
resources "/users", MyApp.UserController
Run Code Online (Sandbox Code Playgroud)
但这允许每个用户通过:index操作查看用户列表,以及删除或更新任何用户.
限制访问管理员的最简单方法是什么?我应该在每个动作前加一张支票吗?或者我应该创建一个"/admin"可以处理这些操作的资源?推荐的方式是什么?
我想使用Elixir Ecto中的关键字"between"创建一个SQL.
我知道如何使用创建一个SQL like
where: like(t.descript, ^some_description)
但是,当我尝试以同样的方式做到这一点 like
where: between(t.start_date, ^start_date, ^end_date),
我收到了"无效"错误信息
** (Ecto.Query.CompileError) `between(t.start_date(), ^start_date, ^end_date)` is not a valid query expression.**
Run Code Online (Sandbox Code Playgroud)
我怎么能以正确的方式做到这一点?
提前致谢!!
我正在尝试做一个http请求
def getPage() do
url = "http://myurl"
body = '{
"call": "MyCall",
"app_key": "3347249693",
"param": [
{
"page" : 1,
"registres" : 100,
"filter" : "N"
}
]
}'
headers = [{"Content-type", "application/json"}]
HTTPoison.post(url, body, headers, [])
end
Run Code Online (Sandbox Code Playgroud)
这对我很有用.
我的问题是 - 如何在body请求中插入变量.含义:
def getPage(key, page, registers, filter) do
url = "http://myurl"
body = '{
"call": "MyCall",
"app_key": key,
"param": [
{
"page" : page,
"registres" : registers,
"filter" : filter
}
]
}'
headers = [{"Content-type", "application/json"}]
HTTPoison.post(url, body, headers, …Run Code Online (Sandbox Code Playgroud) 我正在开发一个带有由Phoenix支持的Web界面的应用程序,我正在探索当前SQLite(及其Ecto驱动程序)的替代存储方法(是的,我听说过PGSQL,不,我不愿意使用它.)
我想使用LevelDB和H2LevelDB,它在Github上有一个Erlang驱动程序
然而,在编译时我意识到Phoenix似乎很依赖Ecto,即使在负责渲染eex模板的模块中也是如此.我发现有点可怕,有点奇怪,同时有点烦人.那么,从预先生成的文件中盲目地清除对Ecto的所有引用是否安全,或者我应该为我的Web UI切换到其他内容?
我想在没有第三方库的情况下获得Phoenix/Elixir的当前日期时间戳.或者简单地说,我想要类似的东西DateTime.now().我怎样才能做到这一点?
我需要获取客户端的IP地址,这不起作用:
def create(conn) do
ip_address = conn.inet.ip_address
# ....
Run Code Online (Sandbox Code Playgroud)
由于key :inet not found in: %Plug.Conn.我怎样才能获得IP地址呢?
我对Elixir中的变量赋值有疑问.在Erlang中,这会引发no match of right hand side value:
X = 4.
X = 2.
Run Code Online (Sandbox Code Playgroud)
但是,Elixir似乎完全可以为变量赋值不止一次.我很困惑模式匹配在Elixir中是如何工作的.Elixir如何区分模式匹配和变量赋值?根据我的理解,在Erlang中,它X是一个未绑定的变量,因此它可以与任何东西匹配,对吗?但是一旦绑定,模式匹配只有在与它相同的值时才有效X.那么Elixir与Erlang没有共享相同的未绑定变量概念吗?
我希望能够在管道中提取元组的第N项,而不使用with或以其他方式分解管道.Enum.at除了元组不是枚举这一事实外,它会完美地工作.
这是一个激励人心的例子:
colors = %{red: 1, green: 2, blue: 3}
data = [:red, :red, :blue]
data
|> Enum.map(&Map.fetch(colors, &1))
|> Enum.unzip
Run Code Online (Sandbox Code Playgroud)
这回来了{[:ok, :ok, :ok], [1, 1, 3]},假设我只想提取[1, 1, 3]
(对于这种特殊情况,我可以使用,fetch!但对于我不存在的实际代码.)
我可以补充一下
|> Tuple.to_list
|> Enum.at(1)
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点,不需要从每个元组创建一个临时列表?