标签: Elixir
phoenix-frameworkguardian
我对Elixir和Phoenix非常陌生,我正在尝试使用{:comeonin,“~>4.0”}和{:guardian,“~>1.0”}对我的应用程序进行身份验证,并且有一个帮助功能,可以检查用户是否登录:
defmodule Chatter.ViewHelper do
定义当前用户(conn),do:Guardian.Plug.current_资源(conn)
def已登录?(conn)do
Guardian.Plug.authenticated?(康涅狄格州)
结束
结束
但我得到了这个错误
目前,我正在使用Elixir v0.15.1并检查phoenix的最新verion(v0.4.0),并尝试创建一个项目。但是,当我运行命令mix do deps.get,compile时,我收到以下错误消息。我担心适合长生不老药版本的版本。任何地方都没有记录
如何为彼此选择正确的版本
(混音)您正在尝试运行:Elixir v0.15.1版上的凤凰城,但它已经运行了
在其mix.exs文件中声明它只支持Elixir~>1.0.0-rc1
注意:我之前几次用不同的组合版本遇到过这个问题。菲尼克斯说你
在Ruby中,可以使用splat来实现这一点
[*1..5]
# => [1, 2, 3, 4, 5]
如何在长生不老药中做到这一点
我知道我可能会使用reduce,但也许有一种更简单的方法?长生不老药就像Ruby一样。它们实现了,所以在大多数情况下不需要将它们转换为列表。范围的行为方式通常与列表相同:
iex> [1, 2, 3, 4, 5] |> Enum.map(fn x -> x*x end)
[1, 4, 9, 16, 25]
iex> 1..5 |&
我想动态创建一个函数名。我写了这个宏
defmacro generate_dynamic(name) do
quote do
def add_(unquote(name)) do
end
end
end
我是这样用的:
defmodule AnotherModule do
generate_dynamic :animal
end
现在,我只定义了AnotherModule.add函数,而我期望AnotherModule.add函数。要实现这一点,您可以在取消引用
我有一个函数,它是由一个poolboy工作者派生出来的
基本概况:
Phoenix控制器用数据呼叫调度程序
Dispatcher将数据传递给Poolboy worker
Poolboy worker使用要处理的给定数据生成一个新进程
新进程使用数据调用系统命令(本例中为wget)
我遇到的问题是,当我运行ExUnit测试时,它会一直运行到生成的进程,并且我可以输出数据(使用IO.inspect)
当我运行System.cmd(“wget”)时,当ExUnit测试运行时,我会在终端中看到wge
为什么Elixir在文件中使用模块.macroName语法调用宏时会报告未定义函数错误?只有当我有另一个函数调用宏,并且我调用函数而不是宏时,我才能调用宏
下面的代码演示了这一点:
defmodule Sample do
defmacro doIt(expression) do
quote do
IO.puts unquote(expression)
end
end
def doFunc(e), do: doIt(e)
end
Sample.doFun
使用Phoenix framework发送电子邮件的最佳和最方便的方式是什么?我发现的最佳方式是使用该软件包。为了发送测试电子邮件,我使用了我的gmail帐户,使用了mailman->
def config do
%Mailman.Context{
config: %Mailman.SmtpConfig{ relay: "smtp.gmail.com",
port: 587,
标签: Elixir
phoenix-frameworkecto
我有这个密码
defmodule Project.Search do
use Ecto.Model
defp search(query, search, order?) do
name_search = like_escape(search, ~r"(%|_)")
if String.length(search) >= 3 do
name_search = "%" <> name_search <> "%"
end
desc_searc
我在长生不老药中使用了一些奇怪的String.to\u integer。没什么大不了的,但我想知道是否有办法将我的所有功能与管道操作符链接起来
问题就在这里。这行代码(您可以在“iex”中尝试):
返回字符串“3765”
我想要的是一个整数。因此,我只需将这段代码|>String.to_integer添加到前面语句的末尾,我应该有一个整数。让我们试试看。这段代码:
[5, 6, 7, 3]
|> Enum.reverse
|> Enum.map_join "", &(In
标签: Elixir
phoenix-frameworkecto
假设我有两个模型,Post和Comment,评论模型可以是两种类型中的一种,normal和fancy,这是由comments表中的type列定义的
现在我想在我的Post模型上添加两个关联,其中一个是指花哨的评论,另一个是指普通的评论,我该怎么做?所以我想要这样的东西:
has_many :fancy_comments, MyApp.Comment, where: [type: 0]
has_many :normal_comments, MyApp.Comment, where: [type:
由于属性在模块编译后是内联的,所以我假设它们的值是常量。如果可能,我想根据以前创建的属性定义一个属性。我也希望能够从外部访问它们,我目前的方法是
@required_fields ~w(email)
@optional_fields ~w(password role name last_name age country)
def required_fields, do: @required_fields
def optional_fields, do: @optional_fields
@a
我试图从列表中找到不重复的值,例如
原始清单:
iex> list = [2, 3, 4, 4, 5, 6, 6, 6, 7, 8, 8, 8, 9, 9, 10, 10, 10]
[2, 3, 4, 4, 5, 6, 6, 6, 7, 8, 8, 8, 9, 9, 10, 10, 10]
iex> unique = Enum.uniq(list)
[2, 3, 4, 5, 6, 7, 8, 9, 10]
iex> nondupes = unique -- Enum.uni
我想生成一个整数列表。我有列表的起始值、增量值和长度
我知道这应该很简单,但我无法破解。我尝试过列表理解、流函数等
以下是我尝试过的方法和失败的方法:
范围允许我选择开始和结束,但不能选择增量
1..3 |> Enum.to_list()
这个列表很有效,但它是“最好”的方法吗
start=1
长度=3
增量=2
对于i你可以理解:
for x <- 1..10, do: x * 3
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
负范围需要额外的括号
例如,假设我有一个可枚举的集合对{first,second}。使用
Enum.group_by(collection, fn {first, second} -> first end)
将产生一个映射,其键由传递的匿名函数确定。它的值是成对的集合。
但是,我希望它的值包含该对的second元素
一般来说,给定一个可枚举项,我想分组提供一个键提取器和一个值映射器,这样我就可以确定将什么放入结果的映射的值中。也就是说,我想要
map_group_by(
collection,
fn
我有一个类似Twitter的应用程序,用户可以通过连接模型相互跟踪。在一个列出了所有遵循@user的人的表中,我想实现一个链接,指向follow Back。我可以用一个链接来做这件事吗?还是我必须用表单来做这件事,然后只显示按钮?如何设置这些表单的变更集
web/models/user.ex
defmodule MyApp.User do
使用MyApp.Web,:model
使用Arc.exto.Model
模式“用户”做什么
字段:姓氏,:字符串
有很多:follower连接、MyApp.C
标签: Elixir
phoenix-frameworkphoenix-channels
我有一个应用程序,其中我在submission_controller中广播一些表单提交,如下所示:
Formerer.Endpoint.broadcast("forms:#{form.id}", "new_submission", payload)
但是,我现在要做的是确保只有当前用户可以访问为其表单广播的提交内容。(例如,如果表单2属于另一个用户,则当前用户将无法查看“表单:2”的提交内容)
我在channeljoin操作中通过仅为我在connect操作中分配给频道的用户id筛选表单来实现这
在我的app.html.eex文件中,我有:
在我的控制器中,我有:
def索引(conn,_参数)do
渲染(conn,“index.html”,feet:“feet.html”)
终止
我想这样做,以便可以在不同的子视图中导入不同的feet。例:
定义:编辑(连接,_参数)do
渲染(conn,“edit.html”,feet:“edit feet.html”)
终止
不幸的是,它只是打印“feet.html”,而不是导入feet.html
这有可能吗?您需要调用Phoenix.V
我新部署的Phoenix应用程序(在Heroku上)出现错误
我在生产中看到的唯一错误是“服务器内部错误”
如何获取更多信息并诊断/修复此错误?您正在尝试使用Elixir 1.3功能(DateTime是在1.3中添加的),但是默认情况下,heroku buildpack使用Elixir 1.2
在回购协议的根目录中添加一个包含以下内容的elixir\u buildpack.config文件:
elixir_version=1.3.2
您正在尝试使用Elixir 1.3功能(DateTime是在
标签: Elixir
phoenix-frameworkectochangeset
我和外星生物的关系有问题。我有两个模式User和Role,我希望能够在DB-to-Role表中插入一个具有外键的新用户
问题是每次我尝试插入新用户时,它与角色表没有关系(用户表中的Role\u id列为null)。我试图建立一个assoc以创建关系,但它不起作用
现行代码
我的用户模式是:
schema "user" do
field :first_name, :string
field :last_name, :string
field :email, :stri
标签: Elixir
phoenix-frameworkotperlang-supervisor
我有一个elixir(Phoenix)应用程序,可以定期为用户检索分析数据
我有一个AnalyticSupervisor来监督AnalyticWorkers
defmodule AnalyticsSupervisor do
use Supervisor
def start_link do
Supervisor.start_link(__MODULE__, [], name: :analytics_supervisor)
end
def init(_) do
c
如果在模块内编写类似以下代码,Elixir将发出警告:
def func(_) do
true
end
def func(m) when is_integer(m) do
false
end
as:警告:此子句无法匹配,因为第1行的前一个子句始终匹配
这非常有用,尤其是在模块中有许多函数时。
但在编写如下代码时:
def func(n) when is_integer(n) do
true
end
def func(m) when is_integer(m) do
fals
我有一个页面,显示类似于分数列表的内容。
我想向第三方发出一个后台http请求,并返回一个更新的分数列表。
如果分数发生了变化,我想更新页面,以便所有客户端都能获得近实时的更新视图
如何每x分钟执行一次后台工作,然后更新客户端
寻找一个高层次的设计,但更详细的背景工作将如何工作
注意:我目前在一个节点上运行所有这些功能。我将使用phoenix通道进行异步更新。定期更新有两种方法
我听到很多关于安排后台任务的好消息。我没有用过它,我个人认为
我通常只是创建一个GenServer来处理请求,从而创建
是否可以不考虑大小写而对可为零的字符串进行模式匹配
我想要这样的东西:
def matcher(str) do
case String.downcase(str) do
"correct" -> true
_ -> false
end
end
预期成果:
matcher("") # false
matcher("correct") # true
matcher("CorrecT") # true
matcher(nil) #
标签: Elixir
phoenix-frameworkecto
有没有办法通过选择另一个连接列来预加载记录
# table structure
# User 1---* Post 1---* PostTag *---1 Tag
# extract definition of scheme
scheme "posts" do
...
has_many :post_tags, PostTag
has_many :tags, [:post_tags, :tag]
end
下面的伪代码表达了我的目标(但不是工作)
正如错误消息所说,在预加载时,您需要从中选
是否能够配置.formatter.exs,以便formatter在模块中的函数之间新建两行?
例如:
谢谢大家! 目前不支持此操作。报告说:
在某些情况下,格式化程序尊重输入格式。那些是
如下所列:
块内的换行符保留为输入
除了:1)采用多行的表达式将始终具有
前后的空行和2)始终显示空行
挤在一起形成一条空行
@spec start_link(String.t()) :: {:error, String.t()} | {:ok, pid()}
def start_link(url
我有一个Phoenix服务器,它基本上将GraphQL代理到许多RESTAPI后端。它从提供的JWT中查找用户名,并选择适当的后端
现在,我对后端进行了基准测试,使其能够处理每秒13K的请求。
但是我的GraphQL前端只能执行400个请求/秒,而在开发模式下只能执行15个请求/秒
我怀疑JWT处理是这里的问题,但是我如何确认呢
我尝试了:observer,但这个输出让我困惑(什么是“减少”
编辑:我被指向erlang tracer和fprof。所以我决定试试fprof。建立这是我的控制台输出
结构是构建在映射之上的扩展。但是,我希望结构定义如下:
defmodule User do
defstruct %{name: "John", age: 27}
end
然而,我惊讶地发现这些字段需要定义为关键字列表
defmodule User do
defstruct [name: "John", age: 27]
end
我觉得这很奇怪,使用这种符号有什么原因吗?因为它允许您使用两种不同的符号:
defstruct [:name, :age]
如果没有默认值或:
defstr
Elixir中有用于更新嵌套数据结构的内核函数Kernel.put_in/3和Kernel.update_in/3,在后一种情况下,它们使用路径和值或函数帮助更新Elixir的不可变数据结构
这是中的更新\u文档中的示例:
users = %{"john" => %{age: 27}, "meg" => %{age: 23}}
update_in(users, ["john", :age], &(&1 + 1))
%{"john" => %{age: 28},
如果给定此字符串“Cool1,让我们开始工作”如何返回此值Cool,让我们开始工作?用长生不老药
到目前为止,我一直在尝试使用不带锁的正则表达式来实现这一点。使用:
Regex.replace(~r/\d/,“Cool1,让我们开始工作吧,”)使用:
Regex.replace(~r/\d/,“Cool1,让我们开始工作吧,”)使用:
\d表示任何数字(也称为数值)。使用:
\d表示任何数字(也称为数值)
String.replace("Cool1, let's g3et to work", ~
标签: Elixir
phoenix-frameworkhammer
我需要在Phoenix应用程序的测试模式中禁用速率限制(或大幅增加限制)(因为测试超出了限制)。我使用库进行速率限制
我在寻找一些东西,而不是在服务请求时检查测试模式
(我在或中都找不到答案。)
谢谢 正如Jonas Dellinger对这个问题的评论所建议的那样,我最终在/config/config.exs和/config/test.exs中的自定义变量中设置了请求数和时间刻度(后者在测试模式中“覆盖”前者的值)。我通过Hammer的via获取这些值。检查测试模式有什么问题?在/config文
标签: Elixir
phoenix-frameworkecto
我有下一个型号
defmodule App.User do
use App.Web, :model
alias App.User
schema "users" do
field :name, :string
has_many :roles_users, App.RolesUser
has_many :roles, through: [:roles_users, :role]
timestamps
end
end
defmodule App
我正在尝试将exto Repo.get_by与多个子句一起使用,但在查找语法示例时遇到困难。我需要查询DB中的两个或两个字段中的哪一个匹配,以便在子句之间设置“or”条件。我不知道这是否可能
Repo.get_by(User, [username: username, email: username], prefix: :accounts)
Repo.get\u by不允许或删除条款。您需要使用from,或where和或
我有一个需要预先插入数据的测试
因此,我尝试使用setup\u all回调设置这些数据,因为这些数据可以设置一次
因为我不想给上下文分配任何内容,所以我定义了setup\u all,如下所示
setup_all do
create_languages()
create_regions()
create_currencies()
create_user()
:ok
end
每个测试都有一个函数,它从创建的数据中获取一个结构
例如,其中一个测试如下所示:
test "upd
我对长生不老药结构的理解是:
1.它不能保存编译时定义的键以外的键。
2.它可以有默认值,在编译时进行计算
是否有任何性能优势?
还有,我还缺少什么吗?嗯,长生不老药是开源的。从的实现可以很容易地看出,它所做的一切都是在调用它的模块上定义\uuuuuu struct\uuuuuu方法(在不丧失通用性的情况下,只能考虑案例的类型)
其他所有内容都负责向Elixir编译器通知此结构,以便为其启用新语法(%MyStruct{}),并将有关该结构的一些元信息存储到编译器全局文件中
在结构下面是由表示的,
标签: Elixir
otperlang-supervisor
我正在尝试创建一个DynamicSupervisor,以便根据请求监督另一个GenServer,然后尝试对其进行测试
这是我为NodeDynamicSupervisor编写的代码:
defmodule NodeDynamicSupervisor do
使用DynamicSupervisor
def start_link()do
DynamicSupervisor.start\u链接(\u模块\u,:确定,名称:\u模块\u)
结束
def init(:ok)do
init(策略::一对一)
结束
在函数式编程中,您总是可以通过让函数调用其他函数来添加另一层抽象。我们目前的回购协议为ZB.repo。我们的想法是,我们可以用SpecialRepo替换此模块,并添加修改/增强与repo交互时发生的情况
不幸的是,EXTO的一些特性,特别是关联,为您调用了repo函数。事实上,在Ecto 3中,他们根本不调用回购函数。它们直接与数据库交互,完全绕过您的回购协议。(on_delete::delete_all)
这似乎非常有限,对我们不起作用。在使用Ecto时,是否没有办法在应用程序和回购之间取得平
以下函数需要一个映射
def process_info({k, v}) do
--- code---
end
当我用我的映射调用上面的函数时
这是%{“tt1034415”=>“Suspiria”}类似
process_info(my_map)
然后出现以下错误
** (FunctionClauseError) no function clause matching in MOVIEMATCH.process_info/1
The following argume
我需要重构一个按给定日期范围过滤项目列表的函数:
defp filter_by_date_range(projects, %{start_date: start_date, end_date: end_date} = _report) do
projects
|> Enum.filter(&Date.compare(&1.start_date, start_date) in [:gt, :eq])
|> Enum.filter(&Date.comp
我目前正在阅读编程长生不老药1.6这本书,在第88页,有一个挑战是创建一个函数(mapsum)来接受一个列表和一个函数
这个mapsum函数应该以提供的函数为参数,通过递归迭代列表中的每个元素,在影响列表中的每个数字之后,所有结果都将被添加
例如:
[1,2,3],&(&1*&1)-传递给mapsum的参数
预期成果:
[1,4,9]#在函数影响地图中的每个数字后回答。
[14] #添加值后的最终答案。
现在我可以打印[1,4,9]答案。
之后,我尝试添加代码,将这些值添加到一起
在尝试这样做
标签: Elixir
phoenix-frameworkelixir-mix
我正试图从这段视频中学习长生不老药和凤凰:尽管它相当新鲜,但在一些信息上似乎已经过时了。例如,“mix phoenix.gen.html”被替换为“mix phx.gen.html”,这就是我目前正在努力解决的问题。在视频中显示以下命令:
mix phoenix.gen.html Post posts title:string body:text
但当我尝试执行时:
mix phx.gen.html帖子标题:字符串正文:文本
我收到一个错误,从以下内容开始:
“(Mix)期望模式“posts”
我在图书馆里有一台GenServer:
defmodule MyLib.Cache do
使用GenServer
def启动链接([])do
IO.puts(“**cache genserver,名称:{{uuuuu模块}”)
#GenServer.start_链接(_模块,%{},名称:_模块)
GenServer.start_链接(uuu模块,%{},名称:MyLibCache)#无点
结束
# [.........]
而此应用程序:
defmodule MyApp.Application
我有以下代码和测试:
def order_quantity(:sell, free_quantity, lot_step_size, quantity_precision) do
{q, _} = :erlang.float_to_binary(Float.floor(free_quantity / lot_step_size) * lot_step_size, decimals: quantity_precision) |> Float.parse()
q
end
有人能帮我换一个长生不老药的防护罩吗
def contains(collection,element) do
r = case collection do
c when is_tuple(c) -> element in tuple_to_list(c)
c when is_list(c) -> element in c
c when is_regex(element) -> Regex.ma
我有一个简单的模块,其中包含一个函数:
defmodule Funcs do
def double(x) do
x*2
end
end
当我以文件名作为参数启动iex时,我可以很好地调用函数:
iex(5)> Funcs.double(3)
6
但是当我尝试在Enum.map中使用它时,我得到一个未定义的函数错误:
iex(2)> Enum.map([1,2,3,4], Funcs.double)
** (UndefinedFunctionError) und
我正在用Elixir语言(更多)和开发noflo运行时
我希望nofloui的用户能够指定一些节点元数据,特别是为给定组件部署的进程数。如何最好地将其添加到现有的noflo ui中?我愿意修改代码,但希望确保这个功能不存在,并且我没有忽略它。如果我必须修改现有代码,我应该从哪里开始
或者,用户是否有其他/更好的方式添加元数据?目前没有此类功能,但我们确实需要它。
我已经提交了一份申请。说明包括建议的实施方式:
将其添加到右侧显示的节点检查器卡。其代码可在以下位置找到:
可能的UI可以是一个键+
我有下面的模块,模拟平行地图
defmodule Parallel do
def pmap(collection, fun) do
me = self
collection
|> Enum.map(fn (elem) ->
spawn_link fn -> send(me, { self, fun.(elem) }) end
end)
|> Enum.map(
我很高兴用Elixir/Phoenix编写集成测试已经有一段时间了,但最近我添加了Exq来处理后台任务。我只是想知道其他Exq(或同等产品)是如何处理集成测试中对队列任务的调用的。我真的不想在测试期间对这些任务排队。有一个问题。基本上,如果您有不想在测试期间执行的调用,请将使它们成为参数的模块传递
def my_func(arg1, queue \\ Exq) do
queue.somoething(arg1)
end
这样,在代码中,您通常可以像以前一样调用它my_func(“参数”),
标签: Elixir
phoenix-frameworkecto
如何在模式中添加函数?我想创建一个函数,用于向模型模式动态添加字段。例如:
def func do
# .. loop to create dynamic fields
field :street, :string
end
schema "objects" do
func
end
... Error:
** (CompileError) web/models/objects.ex:12: undefined function func/0
func
当我调用下面的函数时,关键字列表1中的{:a,2}永远不会被传输,但是列表2中的{:b,4}会被传输到结果列表中,即使没有匹配对关键字列表1。有人知道为什么吗
iex>关键字。合并([a:1,a:2,b:2],[a:3,b:3,b:4],fn\k,v1,v2->v1+v2结束)
[a:4,b:5,b:4]
对我来说更奇怪的是,在下面的合并中,{:a,2}被转移到结果列表中
iex>关键字。合并([a:1,a:2,b:2],[b:3,b:4],fn\k,v1,v2->v1+v2结束)
[a:1,a
在我的应用程序中,我希望在值列表上应用函数
因为这些函数使用web API或数据库运行,所以我必须检查错误。一种是返回一个元组{:ok,result}或{:error,reason},这将产生一个所述元组的列表
我可以使用下面这样的函数检查此列表。然而,这似乎非常笨拙,我想知道是否有更优雅的解决方案。也许是使用例外
def check_errors(lst) do
if Enum.any?(lst, fn {s, _} -> s == :error end) do
上一页 1 2 ...
66 67 68 69 70 71 72 ...
下一页 最后一页 共 125 页