我遵循了,但是命令mix deps.get&&mix compile--all--force&&./start.sh产生了以下输出:
** (Mix) Could not start application myweber: {:bad_return, {{Myweber, :start, [:normal,
[]]}, {:EXIT, {:undef, [{Cowboy, :start, 2, []}, {Weber, :start, 2, [file:
'/Users/jonas/cod
我已经编写了一个简单的Stream.unfold函数,当我这样调用它时,它运行良好:
a = Stream.unfold({1,2,3}, &my_unfold_func) |> Stream.take(5)
a = my_unfold_wrapper() |> Stream.take(5)
但是,我似乎无法找到一种实现包装器的方法,该包装器允许我直接调用我的函数,例如:
a = Stream.unfold({1,2,3}, &my_unfold_func) |&
我想在一组面包屑中显示一个链接(使用Slime进行标记)
这就很好了。但我想在上下文中显示它,并提供其他链接
# by concatenation
= link("Projects > ", to: project_path(@conn, :index)) <> link(@project.name, to: project_path(@conn, :show, @project))
# or by interpolation
#{link("Projects", to: p
鉴于:
如何获得行和:[3,6,9,…,x]
要使用哪个Enum函数,或者如何使用列表理解来保存一个运行总和,目前还不清楚。我想说,最可读的方法是:
data = [[1,2,3, ..., n],[1,2,3, ..., n],[1,2,3, ..., n], ...]
# List with N rows of equal length
对于N列表的情况,需要使用递归:
data
|> Enum.zip()
|> Enum.map(fn {v1, v2} -> v1
我写
列表如下所示
Enum.reduce(list, map, fn elem, map ->
key=hd(elem)
Map.put(map, key, List.wrap(Map.get(map, key)) ++ tl(elem))
end)
预期结果如下所示
['B2', ['B1', 'B2', 'B3']],
['B2', ['A1', 'A2', 'A3']],
上面的代码确实产生了这个结果,但感觉异常难看
我觉得Enum.into可以用于更好的变体,但似乎我
在Phoenix项目中,我应该在哪里定义helper方法
我想定义像Rails这样的助手方法。
但我想知道应该在哪里定义helper方法
该方法用于模板、视图、模型和控制器。
我在模型中定义了following和import等方法。
是这样吗?
还是应该在视图中定义这些
# web/models/session.ex
defmodule UserAuthenticator.Session do
alias UserAuthenticator.User
@doc """
ret
标签: Elixir
phoenix-frameworkguardian
如果用户发送的令牌未过期,但该特定用户已不存在,Guardian仍允许用户访问控制器
我在current_user.ex中添加了{:ok,nil},它只是终止了连接,我认为这不是正确的方法,因为我需要向用户返回一些东西,比如错误。我不确定我应该在那里用什么
这是我的路由器:
pipeline :authed_api do
plug :accepts, ["json"]
plug Guardian.Plug.VerifyHeader, realm: "Bearer"
pl
我正在尝试将链接标记写入phoenix模板中的下一页xxx\u path
<%= link to: xxx_path(@conn, :main, id) do %>
<% end %>
我告诉你phx.routes
C:\Works>mix phx.routes
xxx_path GET / xxxWeb.XxxController :index
xxx_path GET /:
我正在使用Elixir编写一些分布式代码,但是,我必须不断传递--name来为我的节点分配一个名称。默认情况下是否有这样做的方法?我想在.elixirrc文件中设置一些内容,以便每个服务器始终具有相同的节点名 简短回答:不
详细回答:您可以动态地为节点命名,因此,如果您发现自己正在执行许多设置任务(设置cookie、命名节点等),您可以使用一个脚本来帮助您启动它。您需要Elixir v0.10.1(目前为master)来实现以下目的:
# boot.exs
:net_kernel.start([
我已经创建了一个参考长生不老药练习曲的genserver小应用程序
工作正常,当我启动服务器并执行GenServer.call.时,我得到了所需的数据
同时,我的应用程序也在接收来自其他生产者的消息,这必须被捕获,因为现在每当我的应用程序接收到下面这样的消息时,它都可以在shell上看到
iex(6)> subscription 0x7fdc83c0cdf0 ref 0x7fdc8403fc00
encode_message num 2
encode_message address top
我试图在我的第一个Elixir应用程序中使用JSON API,但我很早就被卡住了。我决定使用来管理get请求,但是当从elixir shell调用HTTPotion.start时,我得到以下响应:
{:error, {:ibrowse, {'no such file or directory', 'ibrowse.app'}}}
出于好奇,我决定看看是否可以直接调用ibrowse,但是调用:ibrowse.start返回
** (UndefinedFunctionError) undefine
标签: Elixir
twitter-streaming-api
我正在使用该库,希望能够偶尔终止对流式API的调用以更改参数
我当前的代码如下所示:
for tweet <- ExTwitter.stream_filter(track: terms) do
process_tweet tweet
end
对于tweet您可以抛出异常并捕获它:
try do
for tweet <- ExTwitter.stream_filter(track: terms) do
process_tweet tweet
if logi
在elixir中,我们有地图:
> map = %{:a => "one", :b => "two"} # = %{a: "one", b: "two"}
> map.a # = "one"
> map[:a] # = "one"
我们还有关键词列表:
> kl = [a: "one", b: "two"] # = [a: "one", b
Postgrex项目页面提到了使用扩展对来自db的类型进行编码/解码的能力
我正试图从项目页面获取返回地图的代码,但我不确定扩展应该挂接到Postgrex的何处,如果有必要,我正在尝试在Phoenix web应用程序中这样做:
defmodule Extensions.JSON do
alias Postgrex.TypeInfo
@behaviour Postgrex.Extension
def matching,
do: [type: "json"]
def f
我找到了Kernel.apply/3,它允许通过将方法指定为原子来动态调用模块中的公共方法,例如result=apply(\uuuu模块,:my\u方法,[arg])转换为result=my\u方法(arg)
让我困惑的是调用私有方法的方法;给定如下代码:
defmodule MyModule do
def do_priv(atom, args) when is_list(args) do
apply(__MODULE__, atom, args)
end
我有一个列表,我想根据从结构类型B到a的转换进行分块。例如,我有以下内容:
iex(1)> defmodule A, do: defstruct []
{:module, A ...
iex(2)> defmodule B, do: defstruct []
{:module, B ...
iex(3)> values = [ %A{}, %A{}, %B{}, %B{}, %B{}, %A{}, %A{}, %B{} ]
[%A{}, %A{}, %B{}, %B{}, %B
我已经建立了一个小的聊天应用程序,如下所示:
并且无法确定如何向主题中的所有用户广播消息。在上面的应用程序中(没有像我现在使用的那样更新到v0.13),我将如何做到这一点?以下是我尝试过但没有成功的方法:
Phoenix.PubSub.broadcast Chat.PubSub, "new:msg", "hello from the console"
Phoenix.PubSub.broadcast Chat.Endpoint, "new:msg", "hello from the conso
比如说,我有属于许多标签的Post模型:
defmodule MyApp.Post do
use MyApp.Web, :model
schema "tours" do
field :title, :string
field :description, :string
has_many :tags, {"tags_posts", MyApp.Tag}
end
# …
end
保存帖子时,我会从multiselect字段获取标签\u ID列表,如下所示
标签: Elixir
phoenix-frameworkconformexrm
我正在尝试使用exrm和conform部署Phoenix应用程序。在本地Ubuntu上测试该版本。但当我在服务器上运行相同的程序时,会出现故障。我无法理解确切的原因
{error_logger,{2016,1,30},{7,45,44},“协议:~tp:register/listen error:~tp~n”,[“inet_tcp”,etimedout]}
{{错误{{错误{错误{日志记录者,{{2016,1,30},{7,45,44}},{7,45,44},{{7,45,44},5}错误{7,
标签: Elixir
phoenix-frameworkecto
在Phoenix框架表单中,我的页面上有一个选择框,可以将一个属性值设置为nil
<%= select f, :relation_id,
Enum.into(Enum.map(@relations, fn p -> {p.name, p.id} end),
[{"None", nil}]) %>
我从Ecto收到一个错误,该变更集无效,因为它需要一个整数。我可能会截取映射,将值设置为null,然后将更新后的映射传递到变更集中。但是有更简单的方法吗?我想你应该使用插
我有以下代码片段:
def flatten([h|t]), do: [h] ++ flatten(t)
我是fp领域的新手,想知道这是否是尾部递归 这不是尾部递归。为了运行最后一个表达式(++,列表串联),必须保留[h],对flatten(t)的新调用将产生一个新的堆栈帧,并且由于引用了[h],因此不能仅仅替换上一个堆栈帧
换句话说,通过尾部调用优化,顶层的函数调用将替换上一个堆栈。该函数调用中的任何表达式都会提前发生,并在调用它们时使堆栈增长
大多数尾部调用优化的枚举(包括尾部递归)都使用累
我在我的人造博客phoenix应用程序中创建了一组验收测试。它们之间有一些重复的逻辑,我想转移到一个助手模块来保持干燥
以下是目录结构:
test/acceptance/post
├── create_test.exs
├── delete_test.exs
├── helpers.exs
├── index_test.exs
└── update_test.exs
我想在helpers.exs文件中粘贴复制的验收测试逻辑。它看起来像:
defmodule Blog.Acceptance.Po
标签: Elixir
phoenix-frameworkectoelixir-mix
我需要发布一个简单的Elixir library/hex软件包,将一个表添加到父应用程序的数据库中。我应该创建一个复制到父应用程序中的迁移,还是应该考虑创建一个生成器?我认为生成迁移的混合任务是正确的方法
$ mix package.install
还有几个项目要求用户手动添加迁移,比如GuardianDb
要理解你的要求有点困难,但我相信我会考虑使用shell脚本来完成这项任务。我正在使用Elixir进行混合任务。我需要用文件访问包裹内容。我还不清楚你到底要什么。尽量让你的问题更清楚一点,你
我试图配置出,什么是组长以及它与I/O模块的关系,但在internet上找不到任何有用的东西。谁能给我解释一下吗
《长生不老药1.2》(戴夫·托马斯)一书中有以下场景:
在第二个窗口中,他为什么要通过:erlang_group_leader?它有什么好处呢?:
返回评估函数的流程的组长的流程标识符
每个过程都是某个过程组的成员,所有组都有一个组长。组中的所有I/O都被传送到组组长。生成新进程时,它将获得与生成进程相同的组长。最初,在系统启动时,init既是自己的组长,也是所有进程的组长
以及:
“长生不老药”代表什么
在这个从Phoenix生成的代码中提取的代码示例中,看起来var |>function_calla,b,c语法允许调用多个传递var作为参数的函数,但我不完全理解它是如何工作的
defmodule HelloPhoenix.PostController do
use HelloPhoenix.Web, :controller
# ...
def update(conn, %{"id" => id, "post" => post_params})
标签: Elixir
ectochannelsphoenix-channels
我目前正试图设计一个方案,其中会发生以下情况
客户端A已订阅/连接到主题/频道T
A以select查询的形式向T发送消息
只有A接收查询结果,没有其他订阅者
这甚至可以使用频道吗?我选择频道的主要原因是对websocket的出色支持——不过我对其他Phoenix解决方案持开放态度 是的,频道应该做你想要的工作。您可以使用push,将查询结果向下推送到发送查询的用户:
def handle_in("new_query", %{"query" => qu
标签: Elixir
production-environmentelixir-mix
我有许多任务和作业,我希望能够在生产elixir应用程序上手动执行。目前,我通过在远程控制台中运行代码来执行这些操作。我试图通过使用/bin/my_app命令MyModule my_func运行它们,但在另一个Erlang节点使用资源时出错
我更喜欢使用/bin/my_app命令MyModule my_func样式,这样我就可以使用ssh运行bash脚本
建议在Elixir应用程序上运行远程任务的方法是什么?在生产环境中运行mix任务是不可能的,因为mix不是应用程序版本的一部分
但是,显然可以
版本:1.2.2,错误:
List.flatte([a,[b]])应返回([a,b])。但是,
在某些情况下不能正常工作。例如,List.flatte([11,
[[12],13]])在需要([11,12,13])时返回“\v\f\r”。即使
List.flatte([10])返回“\n”
为什么会发生这种情况?如果有,解决方法是什么?实际上,它与列表无关。展平,效果很好。这只是将可打印字符打印为ASCII字符的问题。与许多编程语言相反,Elixir将字符表视为整数列表
hd [12, 13,
我正在尝试生成一个进程,该进程将每五秒钟发布一次HTTP请求,以向服务器报告其心跳。我的密码是:
defmodule MyModule.Heartbeat do
def start_link do
spawn_link(fn ->
:timer.apply_interval(:timer.seconds(5), __MODULE__, :beat, [])
end)
end
defp beat do
HTTPoison.post "http
我正在研究构建一个具有很多实时功能的应用程序
我很快浏览了各个频道。Phoenix是否有一些神奇的代码可以对我隐藏DOM更新逻辑?也许是一个包裹?我对编写JavaScript代码来更新/操作DOM不感兴趣。似乎有理由期望Phoenix可以在服务器端重新呈现模板,并通过通道发送更改后的DOM—这不可能吗
如果存在上述情况,可能存在某种东西可以将Phoenix的模板转换为客户端JavaScript视图,该视图可以采用Phoenix模板所采用的相同变量,然后呈现视图?这样,Phoenix就不必发送整个
标签: Elixir
phoenix-frameworkecto
我有以下型号:
defmodule My.User do
use My.Web, :model
schema "users" do
has_many :relationships, My.Relationship
has_many :pending_friends, through: [:relationships, :friend]
has_many :rejected_friends, through: [:relationships, :friend]
我正在构建一个长生不老药模块,它以一定的顺序发送消息。我写了这样的单元测试
MyModule.send_msgs(self())
assert_received {:event, 1}
assert_received {:event, 2}
assert_received {:event, 3}
问题是,即使我洗牌assert\u接收的顺序,测试仍然通过
MyModule.send_msgs(self())
assert_received {:event, 2}
assert_received
我有如下数据结构列表:
defmodule Foo do
defstruct [:id, :parent_id, :children]
end
lst = [
%Foo{id: 1, parent_id: nil, children: []},
%Foo{id: 2, parent_id: 1, children: []},
%Foo{id: 4, parent_id: 1, children: []},
%Foo{id: 3, parent_id: 2, children
几天前,我开始使用Phoenix 1.3,一切都很好,直到我开始在控制器中添加新动作
路由器
resources "/users", UserController, only: [:show] do
resources "/events", EventController do
get "/:id", EventController, :join, as: :join
end
end
事件控制器.ex
def join(conn, %{"event_id"
需要将原始元组保存到数据库中
价值观:
conn.adapter = {Plug.Adapters.Cowboy.Conn, {:http_req, #Port<0.14529>, ranch_tcp, :keepalive, #PID<0.528.0>, "GET", :"HTTP/1.1", {{127, 0, 0, 1}, 2866}, "localhost", :undefined, 4000, "/click", :undefined, "campaign_
给出这两个列表:
l1=['a','b','c']
l2=[“Foo”、“bar”、“baz”]
对于l1中的每个项目,我希望对l2中的每个项目运行func
类似于:
Enum.each(l1,&(fun1(&1,中的每个项目)
有没有一个简单的方法可以做到这一点?是的,你可以使用理解,这里有一个iex的快速示例:
for abc <- ['a', 'b', 'c'],
foobar <- ["Foo", "bar", "baz"] do
IO.inspect "#{
因此,我使用Elixir/Phoenix和ESPE测试框架进行了如下测试设置:
let :response do
resp = build_conn() |> put("/kites/#{id_function()}", [horizontal: "more", default: true])
Poison.Parser.parse!(resp.resp_body, keys: :atoms!)
end
调用response()时,会出现如下错误:
** (Poison.Enco
我一直在做戴夫·托马斯的练习。我遇到过一个函数,它说要编写一个函数(出于某种原因称为caesar),将一个字符表和一个整数添加到字符表中的每个元素,如果它超过了“z”,则循环回到“a”,这样您就可以像这样调用它了
我的名单。凯撒('ryvke',13)
它应该返回一个字符串
我有一个映射列表并执行加法的函数,但它返回一个charlist,我不知道如何将其转换为字符串:
defmodule MyList do
def caesar(list, n) do
Enum.map list
我需要在for循环中存储GenServer调用的最后一个结果。
我真的不知道该怎么做才对
def handle_info(:load_info, state) do
infos = for info <- state.infos do
{:ok, infos} = send(self(), {:info_link, info})
infos
end
{:noreply, %{state | infos: infos}}
end
def handle_info
我想做一个程序,将显示当前正在播放的歌曲从互联网广播流(SomaFM)。我正在使用Elixir中的HTTPoison库。但我没有得到回应。它只是挂着
我正在使用以下代码:
HTTPoison.start
url = "http://ice1.somafm.com/lush-128-mp3"
headers = [{"Icy-Metadata", "1"}]
with {:ok, %HTTPoison.Response{body: body}} <- HTTPoison.get(url, h
我在exto.schema中读到,通过这样做,我们可以得到字段和类型:
Model.__schema__(:fields)
Model__schema__(:types)
我有模块属性常量@必填字段和@可选字段
我们有没有办法从变更集或模式函数中获取@必填字段和@可选字段
如果要将必填字段和可选字段添加到变更集转换函数,请多谢:
# using sigils list of words
@required_fields ~w(field1 field2 field3)
@optio
我正在进行多部分上传。其请求头如下所示:
Accept:application/json,text/javascript
Accept-Encoding:gzip, deflate, br
Accept-Language:en-US,en;q=0.9
Connection:keep-alive
Content-Length:733
Content-Type:multipart/form-data; boundary=----WebKitFormBoundary9Am5omyM263xjTB2
H
我是长生不老药/二郎的新手。举个例子,我试图学习如何订阅websocket提要
我复制了Websockex基本示例:
defmodule WebSocketExample do
use WebSockex
def start_link(url, state) do
WebSockex.start_link(url, __MODULE__, state)
end
def handle_frame({type, msg}, state) do
IO.puts "R
标签: Elixir
phoenix-frameworkecto
我有一个用elixir/phoenix制作的web应用程序。
我将围绕标题进行解释。
所以我在系统中有一个叫做角色的东西,还有一个叫做权限
角色通过中间表角色权限与权限有多对多关系
三者的模式大致如下:
角色
schema "roles" do
# associations
has_many(:users, User)
many_to_many(:permissions, Permission, join_through: "role_permissions")
我的应用程序中有以下内容:
defp aaabbbcc(conn, params) do
conn = Plug.Conn.fetch_query_params(conn)
Logger.info("#{Kernel.inspect(conn[:params]["some_custom_params"])}")
例外情况:
Plug.Conn does not implement the Access behaviour
行Plug.Conn.fetch\u que
我想从用户那里得到一个日期输入,并比较(如果它至少是30分钟的未来)它是否是未来的,并将其保存到数据库中。
用户输入的日期如下2018-09-26
用户输入的时间如下16:00
所以我把它转换成天真的日期时间
def build_naive_datetime(date, time) do
{:ok, datetime} = NaiveDateTime.from_iso8601("#{date} #{time}:00")
datetime
end
因此它返回~N[2018-09-26 1
在凤凰城框架中
def show(conn, %{"id" => id}) do
json conn, Repo.get(User, id)
end
匹配很好,但使用:符号的模式不匹配
def show(conn, %{"id": id}) do
json conn, Repo.get(User, id)
end
当我从测试调用以下代码时
conn
|> get(user_path(conn, :show, user.id))
|> json_response(20
我在Elixir中第一次使用regex(Regices?),并发现了两个函数,乍一看,它们似乎是相同的,只是它们的参数顺序不同:和
它们都接受字符串、模式、替换和选项列表,并返回替换后的字符串
这两者有什么区别吗?在什么情况下我应该使用一个而不是另一个?是的,它们都使用字符串、模式和替换。区别在于,如果模式字符串存在于输入字符串中,字符串将用“替换字符串”替换字符串。
例如:String.replace(“abc”、“a”、“a”)—这将导致abc。它将查找搜索字符串“a”,并将该字符串替换为“
我有(我怀疑的是)UTC日期时间。我想将其转换为我的本地时间(该日期时间的时区名为America/New_York)
我试着跟随:
时区=时区.get(“美国/芝加哥”,Timex.now)
#
>时区。转换(日期时间,时区)
#
为什么下面显示的第三个命令会引发错误
iex(1)> ~N[2019-12-02 16:27:18]
~N[2019-12-02 16:27:18]
iex(2)> DateTime.from_naive(v(1), "E
我继承了一个用长生不老药写的项目。基本上它是一个API网关。在这种情况下,我需要执行从API网关URL到目标URL重定向到的URL的重定向。所以情况是这样的
对(Elixir中的API网关)>的请求转到我的服务器,它返回302并重定向到另一个URL
我已经编写了如下代码:
def索引(%%{query\u string:query\u string}=conn,data)do
总站=
case MyLib.index(数据,[],查询字符串)do
{:好的,%HTTPoison.Response
上一页 1 2 ...
41 42 43 44 45 46 47 ...
下一页 最后一页 共 125 页