Elixir 我怎么才能这样匹配呢

我有一个函数,它接受一个集合,它是一个id/项元组列表,应该替换给定的项、id和新项 def update_item(collection, id, new_item) do Enum.map(collection, fn ({ ^id, _ }) -> { id, new_item } (entry) -> entry end) end 如果出现编译器错误和消息未绑定变量^id,则此操作失败。我该怎么做?有没有一个好方法可以做到这一点,或者我应该用另一种方

Elixir 在phoenix框架中路由到静态页面

我想为我的网站运行一个angularJS前端和一个phoenix后端。我希望我的根路由将用户引导到静态目录中的一个预构建页面,其中包含我的angular客户端,然后使用phoenix运行API。我在过去使用ruby on rails通过如下路由匹配实现了这一点: get '/', to: redirect('/foobar.html') 菲尼克斯有没有类似的方法?现在没有。您需要创建一个控制器,然后在控制器中: defmodule MyApp.RootController do use

Elixir-从URL下载文件(图像)

在Elixir中,从URL下载文件/图像的代码是什么样子的 谷歌搜索似乎带回了如何下载长生不老药本身。看看,一个长生不老药的HTTP客户端。您只需向指向图像(或文件,不相关)的url发出GET请求即可: HTTPoison.get/1返回一个HTTPoison.Responsestruct;为了得到响应的主体,我匹配了这个结构。现在body变量包含图像数据(仅为二进制);您可以将其写入文件: File.write!("/tmp/image.png", body) 你看:) 即使不使用httpo

Elixir 如何从Phoenix中的环境文件中获取变量值?

我正在部署我的第一个Phoenix应用程序,并且在我的环境文件中指定了一个变量的值(dev.exs和prod.exs) 现在我想弄清楚如何在我的控制器中访问它们 #config/dev.exs 配置:my_应用程序,MyApp.Endpoint, http:[端口:4000], 调试错误:true, 缓存\u静态\u查找:false, 我的价值:“发展价值” #config/prod.exs 配置:my_应用程序,MyApp.Endpoint, http:[端口:{:系统,“端口”}], url

Elixir 凤凰框架下的嘲弄

我在phoenix项目中使用它来测试控制器和回购协议之间的交互 我在控制器中编写了此测试: test_with_mock "list all entries on index", %{conn: conn}, Repo, [:passthrough], [] do conn = get conn, board_column_path(conn, :index, 1) assert called Repo.all from(c in Column, where: c.board_id =

Elixir url_decode64二进制序列化为字符串

我目前正在尝试从Youtube评论中解码一些base64 CDATA。它似乎将其解码为二进制格式,但不确定如何将其转换为字符串 <?xml version="1.0" encoding="utf-8"?><root><comments><![CDATA[EAEYACCQTg==]]></comments></root> 还有长生不老药 iex> Base.url_decode64!("EAEYACCQTg==")

在Elixir应用程序中加载Erlang项目

我正在构建一个使用hackneyErlang项目的Elixir应用程序,我无法使用hackney提供的方法。 我的mix.exs如下所示: defmodule Connecter.Mixfile do use Mix.Project def project do [app: :connecter, version: "0.0.1", elixir: "~> 1.2-dev", build_embedded: Mix.env == :prod,

Elixir 如何在GenServer中执行对当前进程的调用?

我知道我可以这样调用GenServer GenServer.call(pid, request) # using a pid GenServer.call(registered_name, request) # if I registered the process with a name 还是像这样 GenServer.call(pid, request) # using a pid GenServer.call(registered_name, request) # if I regi

如何在Elixir中使用monkeypatch模块功能

我有一个Elixir模块,可以导入一些函数。我想用我自己的函数来修补其中的一个函数。可能吗?我该怎么做 更新示例 我举的具体例子是,对于task Mix.Tasks.Deps.Compile,我想向“Compile”函数添加一些功能 Mix.Tasks.Deps.Compile模块相当深入地嵌入到Mix框架中。我想做最小的更改,同时添加我想要的额外功能。我想添加的功能是cond do块的另一个条件。简单的答案是:你不能。没有猴子在横梁上打补丁的想法 较长的答案是BEAM中的模块是延迟加载的,因

Elixir 是否可以编写一个合并多个表而不编写原始SQL的EXTO查询?

背景: 我正在写一个简单的问答网站。与Stackoverflow非常相似,在这个站点中,用户可以喜欢/上传问题、答案或评论 问题: 我正在努力编写一个能够返回用户喜欢/赞成的所有问题、答案或评论的Ecto查询 具体来说,我想写一个查询: 将特定用户向上投票的所有问题、评论和答案作为单个列表返回 并将问题、答案和评论列表按投票时间进行排序 根据我的理解,这个问题似乎需要联合 因此,我想知道是否有人可以告诉我,或者为我指出正确的方向,在Ecto中处理这样一个问题。谢谢你的帮助 以下是相关模型的模式

Elixir quantum导致未定义的应用程序:[stdlib,内核]

我尝试将其用作Phoenix应用程序的cronjob工具。它解决了我的开发系统中的一个问题。但我不能让它在生产中运行/node\u modules/brunch/bin/brunch b-p&&MIX\u ENV=prod MIX do phoenix.digest,release--ENV=prod--upgrade总是以以下错误结束: Generated abc app ==> Assembling release.. ==> Building release abc:1.2.5

Elixir Phoenix-将列添加到时间戳

我有一个phoenix应用程序,在所有型号中都使用时间戳。但是,我希望扩展时间戳,以便无论何时在模型中包括时间戳,它都会添加以下字段: created_at (utc datetime) updated_at (utc datetime) created_at_utc (utc timestamp of created_at field) updated_at_utc (utc timestamp of updated_at field) 如何扩展自动生成这些字段的timest

Elixir 尝试在不创建新变量的情况下返回结果

有没有办法简化此代码: def test do var1 = func1() |> func2() |> func3() var2 = if var1 == nil do var1 else func4(var1) end func5(var2) end 我希望避免创建var2并就地返回结果。您可以将if的返回值通过管道直接传递到func5: if var1 == nil do var1 els

Elixir 我可以查询一个模型,该模型的总计数为它在EXTO中的关联之一吗?

是否可以组合一个查询,返回所有模型(如Post)及其关联(如Like)的聚合计数 Repo.all(from p in Post, join: l in Like, where l.post_id == p.id, group_by: p.id, select: {p, count(l.id) 我尝试过使用上面的group_by和select,但这只是部分有效。查询结果排除了所有不喜欢的帖子 如果这是不可能的,那么处理此问题的最佳方法是什么?第一件事是对查询

Elixir Phoenix 1.3默认生成器//幼稚的日期时间问题

运行mix phx.gen.json对象项发布时间:native\u datetime输出以下文件/测试: 迁移: defmodule App.Repo.Migrations.CreateItems do use Ecto.Migration def change do create table(:items) do add :published_at, :naive_datetime timestamps() end end end 测

Elixir 使用一个“创建”按钮创建两个模型

在创建联盟时我还试图创建一个名为UsersLeagues的加入关联。以下是我目前的尝试: def changeset(struct, params \\ %{}) do struct |> cast(params, [:name]) |> validate_required([:name]) |> put_assoc(:users_leagues,UsersLeagues.changeset(%UsersLeagues{}, user

Elixir 将变量与映射值匹配

我将一个变量设置为player\u id,它是一个随机uuid。但它匹配了17张不同地图中的1张。我希望能够将变量与其他映射进行匹配,并返回匹配的映射。我怎样才能在长生不老药中做到这一点 当前尝试和数据: 以下是17张地图中的3张: 播放器id设置为e8c0b33f-43b3-4490-865f-ed919d015bb2 查看其中一个id如何匹配玩家id?我如何将这两个匹配起来,并对其进行范围分析,使其返回以下内容: %{"abbr_name" => "R.Baker", "birth_p

Elixir 长生不老药:有强制重新编译的常规吗?

我在用EEx做邮件模板 我已将其集成到我的模块中,如下所示: defmodule Blackbox.ReportHandler do use GenServer import Swoosh.Email @email EEx.compile_file("web/templates/mail.html.eex") def init([actions: actions]) do {:ok, %{actions: actions, name: "none_yet", rep

如何在Elixir中将浮点转换为整数

给定一个浮点,比如(2.0),我想将其转换为整数类型。据我所知,Integer.parse似乎只适用于字符串 Integer.parse(2.0) (FunctionClauseError) no function clause matching in Integer.count_digits/2 使用trunc(2.0)或round(2.0)。这些是自动导入的,因为它们是的一部分,并且它们也可以在guard子句中使用。没错,Integer.parse/2函数需要一个二进制作为参数,如中所示。

使用elixir的Web应用程序框架选项?

elixir laguagem的web应用程序框架有哪些选项?最近我在学习Phoenix(),但我不确定这是最好的还是唯一的选择。对我来说,这是一个太多的一般性问题,你最好在Elixir论坛上获得关于Elixir Slack的有效回复,而不是在这里 这是长生不老药的最佳选择 为什么选择凤凰城 长生不老药核心团队的成员是凤凰核心团队的成员 它是所有Elixir web框架中最成熟的 它是贡献最大的Elixir web框架 它是最流行的Elixir web框架 你有最好的凤凰城资源-书籍,教程,视

Elixir 使用Maru框架在Post请求中获取主体

我不熟悉长生不老药。 我正在发送一个带有application/json正文的POST请求。我用的是邮递员。当我发送带有POST请求的json正文负载时,我得到一个服务器错误。i、 e: %Plug.Parsers.ParseError{ exception: %UndefinedFunctionError{ arity: 1, exports: nil, function: :decode!, module: Poison, reason: nil

Elixir 长生不老药可视范围

例如,我为stackoverflow创建API客户端。我需要将access\u令牌传递到每个端点 我可以这样做: StackClient.answers(access_token, params) StackClient.badges(access_token, params) StackClient.start(access_token) StackClient.answers(params) StackClient.badges(params) 但我不希望将access\u token传

Phoenix中通配符路由的路径帮助器(Elixir)

我想为通配符路由使用路径帮助器,定义如下: get("/thing/*sub_path", ThingController, :index) 确实存在路径帮助器,但它确实不是我所需要的: iex(3)> MyAppWeb.Router.Helpers.thing_path(MyAppWeb.Endpoint, :index, sub_path: "test/thing") "/thing?sub_path=test%2Fthing" 相反,我需要的是: "/thing/test/thi

在elixir中使用validate_change函数会引发错误

所以我想验证elixir(phoenix框架)中的电子邮件输入字段 我得到这个错误 ** (BadArityError) &String.downcase/1 with arity 1 called with 2 arguments (:email, "HARRY@POTTER.com") (ecto) lib/ecto/changeset.ex:1573: Ecto.Changeset.validate_change/3 这是我的密码 |> validate

Elixir 如何使用hound获取文件中测试的状态?

ExUnit提供了一些获得测试结果的方法。我不知道如何使用它和它 我在一个文件中有多个测试。如何在最后生成测试名称和状态等结果 我正在用hound编写测试。 提前感谢。首先,你可以使用它来达到这个目的。最好的调优可能是在调用ExUnit.start()之前引入自己的格式化程序并将其传递给。有点像下面(根据您的需要进行调整。) defmodule MyApp.CLIFormatter do @模假 使用GenServer def init(opts),do:{:确定,opts} def handl

Elixir &引用;(算术错误)算术表达式中的错误参数“;当计算机别名具有连字符时尝试连接节点时

我正在学习一个教程,应该把节点连接在一起。我将使用以下工具启动总共四个终端窗口: iex --sname one (two, three etc) 然后我就跑 Node.connect(:two@DAL-SW-JH-LT) ** (ArithmeticError) bad argument in arithmetic expression: :two@DAL - SW :erlang.-(:two@DAL, SW) 错误显示: **(算术错误)算术表达式中的参数错误::two@DA

Elixir 如何使用Wallaby登录用户而不必经过常规登录过程?(设置cookie/会话)

我想知道如何在会话中登录用户,而不必在测试环境中创建工作循环路由或通过标准用户流登录用户。有没有办法设置cookie/会话,以便有一个当前用户 下面是一些关于它的讨论: 由于cookies可以通过Wallaby读取和设置,我想知道如何使用cookies设置当前用户并绕过手动登录流 理想情况下,我想要的是: test "visit dashboard", %{session: session} do {:ok, user} = MyApp.Accounts.create_user(

Elixir 自定义验证导致插入/4

我不明白为什么会出现这样的错误: Abc.Maps.Location.create_location(%{name: "USA", is_country: true}) ** (FunctionClauseError) no function clause matching in Ecto.Repo.Schema.insert/4 我知道没有insert/4,但我不明白为什么validate\u呈现\u parent/1的\u首先会产生问题。我犯了什么错 如果位置不是国家/地区,我想验证是否

Elixir 分配@categories在eex模板中不可用

我有两种型号,产品和类别。我可以添加/编辑具有所选类别的产品,但现在在设置Arc后,我遇到错误:当我尝试添加或编辑产品时,分配@categories在eex模板中不可用。有没有人知道我可能做错了什么,或者我的代码中缺少了什么?我正在使用Phoenix 1.4 我的模式: schema "products" do field :avdate, :date field :description, :string field :name, :string field

Elixir 从地图求和值-长生不老药

我已经成功地编写了看起来有效的代码,但我不知道为什么 上下文:一个项目有许多预算项目,这些项目与我正在展示的项目一起预加载 根据预算项目列表,我计算项目的全部预算如下: def总计\u预算预算\u要做的项目 Enum.reducebudget_项目,fn项目,acc-> %{金额单位:item.amount金额单位+acc.amount金额单位} 结束[:金额单位:美分] |>以欧元计价 终止 def值(单位:欧元)金额(单位:美分) 金额(单位:美分/100) |>:erlang.float_

Elixir 如何将新WebSocket连接请求记录到Phoenix?

我正在一个kubernetes集群上运行一个新的Phoenix Liveview应用程序,该集群提供给我使用,虽然HTTP工作正常,但我的websockets连接失败。即使请求的标题要求升级连接,我还是得到了一个426升级要求。我怀疑我的浏览器和Phoenix之间的部分线路正在删除升级标题,但我想知道是否确实如此 我已经尝试在我的端点中添加一个简单的插件来记录连接,它适用于常规HTTP请求,但不拦截websockets请求。是否需要在其他地方插入插件或添加一些日志来转储这些请求(特别是它们的头)

Elixir EXTO变更集中的空原子

为什么在一个EXTOchangeset方法中,您将参数设置为默认的:emptyatom?e、 g def changeset(user, params \\ :empty) do ... 这是否允许您使用nil为参数调用changeset方法?编程Phoenix中对此进行了解释: 克里斯说:如果没有指定参数,我们不能默认为空映射,因为这与提交空白表单没有区别。相反,我们将参数默认为atom:empty。按照惯例,Ecto将生成一个无效的变更集,参数为空 所以:empty被用作占位符,以便

Elixir 列表理解与长生不老药计数器

有没有办法在理解中添加循环计数器 例如,不带计数器的理解: for c <- ["a", "b"], do: c # => ["a", "b"] c[“a”,“b”] 我怎样才能加上计数器呢?大概是这样的: for c <- ["a", "b"], do: {counter, c} # => [{0, "a"}, {1, "b"}] 对于c[{0,“a”},{1,“b”}] 使用: iex(1)>用于{c,counter} iex(1)>

Elixir 访问连接或';分配';从视野内

我是新来凤凰城的,来自罗尔。看起来这些视图类似于Rails帮助程序,可能是放置帮助程序函数的地方 如果这是真的,我们如何从视图中访问连接或连接的分配 这是我的问题示例 该应用程序显示所有用户的列表。但我只想为当前登录的用户显示API令牌。因此,我认为UserView中的方法适合在模板中执行类似操作: <b><%= first_name(@user) %></b> (api_token: <%= display_token(@user) %>) 非

Elixir PHOENIX框架中控制器测试中的接收参数

我在测试控制器发送参数时遇到一些问题: 我正在发送以下地图: params = %{ "filter" => %{ "type" => "all", "conditions" => [ %{"column" => "price", "comparator" => "equals", "value" => "120", "type" => "number"} ] } } 在通话中: conn = get c

Elixir 如何从字符串中删除新行字符?

我要删除所有换行符: aaa = """ fdsfds fdsfds fdsfdsfds fdsfdsfds """ |> String.strip("\r\n") 我得到: argument error 这个怎么了 这个怎么了 String.strip仅支持删除一个字符。Elixir试图将“\r\n”转换为单个字符(),此时会引发该错误: 我怀疑这是你想要的,正如你所说的“我想删除一条新线的所有符号”。要删除所有\r和\n,您可以使用字符串。替换两次: iex(4)> aa

如何计算Elixir中查询结果的总和?

我有一张订单表格。此表的一列是总价 通过将订单项目和项目属性 当用户删除一个order\u项目时,我想让它删除所有与order\u项目相关的item\u属性。因此,在计算总价时,它应该扣除订单项目和项目属性的价格 为此,我编写了如下代码 order_item_total = Repo.one!(from p in Pos8.OrderItem, where: p.order_id == ^order_id, select: sum(p.item_total)) total_item_attrib

用Elixir中的令牌实例化应用程序

我是Elixir的新手,我想围绕API编写一个包装器来了解该语言,我正在考虑通过身份验证的人使用API的方式,他们显然需要一个令牌,但我如何才能对用户进行身份验证?例如,在许多语言中,您都可以使用:Api.Client.new(“token”)或类似的东西,我一直在Github中搜索一些Api包装器,以了解人们是如何实现这些功能的,一些人使用start\u link,另一些人说您应该使用export-Api\u-KEY=“Api-KEY”,其他人则将密钥放入config/config.ex文件中

Elixir phoenix存在获取/2覆盖

我希望能够在phoenix presence中通过:meta映射传递用户元数据,以便从JavaScript端访问它。更具体地说,我希望能够推送图像文件路径(字符串),并将它们与我的状态列表中的每个用户关联。文档给出了覆盖fetch/2函数以将用户模型数据添加到:meta映射中的示例: def fetch(_topic, entries) do query = from u in User, where: u.id in ^Map.keys(entries),

Elixir 在EXTO中,预加载聚合查询

假设我有帖子,评论和投票的表格 投票表有一个方向列,该列为1、0或-1 我想查询所有帖子,以及每个帖子的评论数,以及投票总数。方向 理想情况下,使用Post模型上的可组合查询,这是否可以作为EXTO中的子查询实现 目前我拥有的是: def count_comments(query) do from p in query, left_join: c in assoc(p, :comments), select: {p, count(c.id)}, group_by: p

Elixir 如何测试长生不老药GenStage消费者?

我找到了一些关于如何测试生产者的资源,但是我找不到任何可以显示如何测试消费者的资源 在producer中,我创建了一个虚拟消费者,一切正常,但在consumer中,我正在努力进行测试 defmodule DataProducer do use GenStage def start_link([]) do GenStage.start_link(__MODULE__, 0, name: __MODULE__) end # {:qu

Elixir 筛选发电机服务器终止日志(转换器检查选择?)

过滤GenServer终止事件日志输出的最佳方法是什么?似乎Elixir.Logger允许:translator\u inspect\u opts在这里提供一些配置,但我不清楚如何处理以下情况: Genserver终止时的默认日志输出包括接收到的最后一条消息和状态,如下所示: 10:06:00.165 [error] GenServer #PID<0.378.0> terminating ** (FunctionClauseError) no function clause matc

Elixir 长生不老药;清晰的;macOS上的命令使用系统

我有一个长生不老药生命游戏的实现,它将一个“棋盘”打印到STDOUT,我想在打印下一个版本的棋盘之前清除屏幕。我检查了,我想这就像调用System.cmd(“clear”,[])一样简单,但这似乎不起作用: iex(1)> System.cmd("clear", []) {"\e[H\e[2J", 0} 看起来好像返回了一些转义字符,但我不确定这是什么意思我的问题是为什么System.cmd(“clear”,[])不能工作?或者我认为它应该清除屏幕是错误的(为什么)? 显然,iex有一个

Elixir 是否可以合并两个单独的EXTO查询?

我想知道是否有可能在EXTO中将两个查询组合在一起 我想创建一个函数,它接受一个EXTO查询,并根据具体情况对其进行修改 例如,假设我们有一个users表,允许输入重复的用户名,用户创建以下查询 query = from(u in "users", select: u) select_all_unique_users(query) 我希望select_all_unique_users函数接受查询并添加到查询中,以便它只选择不同的用户名 这只是一个例子,我知道我可以在表上创建一个唯一的_索引,以

Elixir 使用“凤凰仙丹”中的渲染调用视图

在Phoenix/Elixir样板web应用程序中,我描述了典型的结构,其中简单的HelloController使用HelloView组件呈现hello/文件夹中的模板。这样行。 现在假设我想添加snake\u view.exview组件。此视图依赖于Phoenix,其行为与渲染模板的其他普通视图稍有不同,因为它具有render方法以及其他功能: defmodule HelloWeb.SnakeView do use Phoenix.LiveView # .. def rende

Elixir 现有系统的外部变更集添加关联

早上好!我已经到了挣扎的时刻。总而言之,我试图创建一个模式/模型,该模式/模型在关联的模式/模型已经存在的地方具有关联。我发现的每个示例都更像Rails嵌套属性。以下是我的各种代码: 具有以下关联的架构(&其变更集函数): schema "payor_procedure_mappings" do belongs_to :payor, Payor belongs_to :procedure, Procedure field :payor_procedure_name, :string

Elixir 添加对现有列和表的引用

以下是我的原始迁移: def change do create table(:clipboard_items) do add(:clipboard_id, :integer) timestamps() end end 在这次迁移过程中,我忘记为每个字段添加引用。应该是这样的: def change do create table(:clipboard_items) do add(:clipboard_id, references(:clipboards))

上一页 1 2 ...  82   83   84   85    86   87   88  ... 下一页 最后一页 共 125 页