标签: elixir

我可以在Elixir的同一个库中使用别名吗?

说我有一个函数的定义:

def rename(src, dst) do
   <do rename>
end
Run Code Online (Sandbox Code Playgroud)

在我的Elixir库中,我可以在同一个库中创建:

alias rename, as: mv  
Run Code Online (Sandbox Code Playgroud)

那么当用户可以在我的库中使用重命名和mv函数时?

elixir

11
推荐指数
2
解决办法
1543
查看次数

Elixir Phoenix中的可选POST参数

我有一个凤凰路线,我想将一些表格数据发布到,但是表格中有大约4个字段是可选的(表格由最终用户构建,因此这些字段可能不存在于POST有效载荷中)

在路线的凤凰控制器中,您将如何处理?

例如:

我的表格有

Field1,
Field2
Field3 (optional)
Field4 (optional)
Field5 (optional)
Run Code Online (Sandbox Code Playgroud)

POST表单必须始终具有Field1,Field2但可以包含其他字段的任意组合.

所以到目前为止我的控制器代码是这样的:

def create(conn, %{"field1" => field1, "field2" => field2) do
end
Run Code Online (Sandbox Code Playgroud)

如何让其他3个可选?如果我将它们全部添加到那时它们将是必需的,我不希望为每个可能提交的表单创建一个函数,因为它似乎有点过分.

elixir phoenix-framework

11
推荐指数
1
解决办法
4026
查看次数

凤凰服务器上的MIX_ENV = prod在PORT = 80时崩溃

我有一些问题,拌匀,MIX_ENV=prodmix phoenix.server,它失败的开始.在Linode的Ubuntu 14.04上运行所有最新的(Elixir 1.0.5,Phoenix 0.14.0),除了Erlang(17.x,17.3).

$ MIX_ENV=prod PORT=80 mix phoenix.server
{"Kernel pid terminated",application_controller,"{application_start_failure,elirc_site,{{shutdown,{failed_to_start_child,'Elixir.ElircSite.Endpoint',{shutdown,{failed_to_start_child,'Elixir.Phoenix.Endpoint.Server',{shutdown,{failed_to_start_child,{ranch_listener_sup,'Elixir.ElircSite.Endpoint.HTTP'},{shutdown,{failed_to_start_child,ranch_acceptors_sup,{{badmatch,{error,eacces}},[{ranch_acceptors_sup,init,1,[{file,\"src/ranch_acceptors_sup.erl\"},{line,30}]},{supervisor,init,1,[{file,\"supervisor.erl\"},{line,243}]},{gen_server,init_it,6,[{file,\"gen_server.erl\"},{line,306}]},{proc_lib,init_p_do_apply,3,[{file,\"proc_lib.erl\"},{line,239}]}]}}}}}}}}},{'Elixir.ElircSite',start,[normal,[]]}}}"}
Run Code Online (Sandbox Code Playgroud)

具体来说,我认为这部分是追踪.

{{badmatch,{error,eacces}},[{ranch_acceptors_sup,init,1,[{file,\"src/ranch_acceptors_sup.erl\"},{line,30}]}
Run Code Online (Sandbox Code Playgroud)

elixir-mix elixir phoenix-framework

11
推荐指数
3
解决办法
2188
查看次数

在已部署的服务器上记录到文件

我想在我部署的phoenix app上调试一个问题.有没有一种简单的方法来启用文件记录?

与rails创建uat.log和production.log的方式类似

elixir phoenix-framework

11
推荐指数
1
解决办法
4380
查看次数

你如何嵌入双引号Elixir字符串?

我有一个嵌入式的刺痛":

tx <iq id="wUcdTMYuYoo41" to="2348138248411@" type="set" xmlns="w:profile:picture">
Run Code Online (Sandbox Code Playgroud)

我如何在Elixir中提供这样的字符串作为值?

例如:

iex> s= "tx <iq id="wUcdTMYuYoo41" to="2348138248411@" type="set" xmlns="w:profile:picture">"
Run Code Online (Sandbox Code Playgroud)

使用~s和~S没有帮助

iex(20)> s=~S("tx <iq id="wUcdTMYuYoo41" to="2348138248411@" type="set" xmlns="w:profile:picture">")              
** (SyntaxError) iex:20: keyword argument must be followed by space after: w:

iex(20)> s=~s("tx <iq id="wUcdTMYuYoo41" to="2348138248411@" type="set" xmlns="w:profile:picture">")
** (SyntaxError) iex:20: keyword argument must be followed by space after: w:

iex(20)> 
Run Code Online (Sandbox Code Playgroud)

string elixir double-quotes

11
推荐指数
2
解决办法
4888
查看次数

如何在函数保护条款中测试结构的值?

在这个小卫生功能的Phoenix/Elixir应用程序中,当用户没有输入电子邮件时,我会遇到问题.

我正在使用结构来处理数据.一个简单的卫生功能(现在)只是剥离空白并更新结构(地图).到目前为止,它的工作很好,但是当领域emailnil,我得到一个错误.

** (FunctionClauseError) no function clause matching in String.Unicode.strip/1
Run Code Online (Sandbox Code Playgroud)

所以我引入了一个guard子句来检查这种情况,然后只清理用户名.

defmodule MyApp.User do
  defstruct username: nil, email: nil, password: nil, hashed_password: nil

  # Sanitizing input without guard clause
  def sanitize_user(user)do
    %{user | username: String.strip(user.username), email: String.strip(user.email)}
  end


  # Sanitizing input with guard clause
  def sanitize_user(user) when is_nil(user.email) do
    %{user | username: String.strip(user.username)}
  end
  def sanitize_user(user) when is_binary(user.email) do
    %{user | username: String.strip(user.username), email: String.strip(user.email)}
  end
end
Run Code Online (Sandbox Code Playgroud)

现在我在编译时遇到错误:

** (CompileError) web/models/user.ex:54: cannot invoke remote function Access.get/2 …
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

11
推荐指数
1
解决办法
5643
查看次数

使用Elixir的简单,高效的FIFO队列

是否有内置数据类型可用于Elixir中的FIFO队列?

我已经查看了列表,但似乎获得列表尾部效率不高?也许我对此错了?

我的队列需要容纳100,000或更多元素.我需要的是,我为音频生成{t,y}形式的44100个元组.我正在尝试实现延迟,所以我需要在将其发送到处理管道之前排队几秒钟(最多可能是10?)的音频.

elixir

11
推荐指数
1
解决办法
4737
查看次数

Elixir - 如何深度合并地图?

随着Map.merge我有:

Map.merge(%{ a: %{ b: 1 }}, %{ a: %{ c: 3 }}) # => %{ a: %{ c: 3 }}
Run Code Online (Sandbox Code Playgroud)

但实际上我想:

Map.merge(%{ a: %{ b: 1 }}, %{ a: %{ c: 3 }}) # => %{ a: %{ b: 1, c: 3 }}
Run Code Online (Sandbox Code Playgroud)

有没有为这种情况编写递归样板函数的本机方法?

elixir

11
推荐指数
2
解决办法
3126
查看次数

Elixir + Ecto:如何在[数组]中不存在?

我试图寻找User在他们的match_history领域中没有某个字符串元素的所有s .我猜了一下:

matched_user = User |> where([u], ^device_id not in u.match_history) |> limit(1) |> VideoChat.Repo.one

但它似乎打破了not部分.有没有办法做到这一点?

elixir ecto

11
推荐指数
1
解决办法
3143
查看次数

如何获取Elixir项目的根目录

在Elixir项目中,您可以使用

Path.expand
Run Code Online (Sandbox Code Playgroud)

将文件或目录定义为当前文件的相对路径.

例如: Path.expand("../../../lib/file.ex")

但如何从项目的根级别找到路径?

elixir

11
推荐指数
1
解决办法
2756
查看次数