Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
 Elixir_IT技术博客_编程技术问答 - 「Fatal编程技术网」

Elixir 如何将原始sql与EXTO Repo结合使用

我有一个upsert需求,所以我需要调用postgres存储过程或使用公共表表达式。我还使用pgcrypto exgtension作为密码,并希望使用postgres函数(例如“crypt”来编码/解码密码) 但是我找不到一种方法让CTO部分或全部使用原始sql,是否打算让CTO只支持elixir dsl,而不允许在dsl不足时使用原始sql 我发现我可以通过适配器进行查询(Rocket是应用程序的名称) 但不确定如何将其应用到模型中。我是elixir的新手,似乎我应该能够使用exto.Mode

Elixir 当Phoenix服务器运行时,如何在控制器中登录?

当服务器运行时,我正在尝试从Phoenix应用程序中的一个控制器打印一些调试信息 defmodule PhoenixApp.TopicController do 使用PhoenixApp.Web,:controller def索引(conn,_参数)do 日志(“此文本”) # ... 结束 结束 好吧,事实证明这很简单。您需要在控制器中使用Loggerelixir模块,并调用其中一种方法来记录文本 defmodule PhoenixApp.TopicController do 需要记录器 d

使用Elixir HTTPoison库创建Github令牌

我想使用HTTPoison库在Elixir中创建一个Github令牌,但我就是不知道如何发送HTTPoison参数 当使用curl时,它将类似于 当我使用HTTPoison库时,我就是不知道如何发布它 url = "https://api.github.com/authorizations" HTTPoison.post!(url, [scopes: ["repo", "user"], note: "getting-started"], %{"X-GitHub-OTP" => "1234

Elixir 转换数据结构

我不熟悉Elixir和函数式编程,我正在尝试将数据从一个Ecto查询映射到一个映射中,以用作数据库的数据。这就是我到目前为止所做的: 外星查询: result = Repo.all( from s in SaleWithDays, group_by: [s.year, s.month], order_by: [s.year, s.month], select: %{ year: s.year, month: s.month, r

在elixir phoenix应用程序中创建后台作业的正确方法

在此控制器操作中,UserMailer.send\u welcome\u email是同步的,请求等待 我想让它异步,所以产生了一个像这样的过程 def create(conn, %{"data" => %{"attributes" => user_params}}) do changeset = User.changeset(%User{}, user_params) case Repo.insert(changeset) do {:ok, us

Elixir 使用WebSocket呈现模板

我想知道在通过WebSocket添加内容时是否有办法呈现phoenix模板?如果我想使用WebSocket添加一些复杂的html结构作为模板,而不在javascript代码中重复这种结构,该怎么办 我看到的唯一方法是在控制器中生成模板html,如下所示: def create(conn, params) do #some code Endpoint.broadcast!("user_room:123", "new_comment", %{comment_content: MyApp.Po

Elixir中的动态管理器规范

我创建了一个GameSupervisor监控模块,用于动态创建实例GameServer(GenServer)的子级。我可以看到GameServer的start_link方法在调用GameServisor.start函数时被调用,但它不会使pid保持活动状态。如果重新启动策略设置为临时,iex中的Process.alive?(pid)始终返回false。如果我将重启设置为暂时或永久,当我在该pid上调用GenServer.cast时,它会再次调用GameServer.start\u链接 调用sta

Elixir 应为截断的字节

当我传递2个大小的位时,如下所示: iex(11)> <<2 :: size(2)>> iex(11)> 我在iex中得到了as输出(我确定位的大小) 但当我在iex中写下以下内容时 iex(12)> <<3 :: size(2)>> iex(12)> 我有 <<3::size(2)>> 但预料 <<1::size(2)>> 到4点 iex(13)> <

Elixir 用长生不老药去盎司事件

我正在将一系列事件从MQ输入到我的Elixir消费者 在消费者中,我需要: 按事件的ID和 如果在3分钟内没有该ID的新数据,则向下游发送该ID的聚合数据 在我的例子中,数据集不是很大。每天可能有几百个ID和几千个更新 有什么办法可以用GenServer magic解决这个问题吗 谢谢大家! 我会这样做: 每当新事件发生时: 如果是具有该id的第一个事件,请使用进程创建计时器引用。在/3之后发送\u,超时时间为3分钟,并将事件和计时器存储在状态 如果它不是具有该id的第一个事件,请使用过程取消

Elixir 如何构建动态where子句?

我有字段名列表,例如[:type,:car_id]和变更集 我想从每个字段中获取数据作为作用域。 如何在从字段列表创建的每个表达式之间构建动态where子句,我可以插入先前创建的where表达式吗 非动态示例: def scoped_query(query, changeset, fields_names) do type_field = List.first(fields_names) car_id_field = List.last(fields_names) scope1 =

Elixir 如何在长生不老药中截断字符串?

我正在使用slugs for elixir,其思想是:我有一个字符串,其中包含由连字符分隔的[a-zA-Z0-9]单词。比如: string = "another-long-string-to-be-truncated-and-much-text-here" 我想确保最大字符串长度等于30,但我还想确保在达到最大长度时单词不会被减半。因此,string的前30个符号是另一个要trun的长字符串,但我想让另一个要的长字符串与单词一起被完全删除。我该怎么做呢?UPD 12/2018尤里·戈洛博科夫

Elixir 如何使自定义提示在iex启动时生效?

我有一个自定义提示,但当我启动iex时,会显示一个内置提示。在我点击回车键后,我的提示生效。当iex启动时,如何使提示生效 以下是我看到的: 这是我的.iex.exs文件: IEx.configure( colors: [ enabled: true], default_prompt: [ "\e[G", # move to column 1 "\e[35m", # magenta "MY %prefix(%counter)", "&

Elixir 有没有一种简单的方法可以在长生不老药中实现零模式匹配?

我有一个enum,我正在使用groupby与之一起使用 Enum.group\u by(我的列表,fn x->x.param end) 结果是它按param值对其进行分组。我想尽快进行模式匹配,因此我有: %{“a”=>a,“b”=>b,“c”=>c}=Enum.group\u by(my\u list,fn x->x.param end) 但当列表缺少“a”、“b”或“c”作为参数时,就会出现问题 请注意,我可以将其设置为一个变量,如果我访问它并且它不存在,则结果为nil: grouped =

Elixir EXTO变更集,未验证变更的必填字段

正在学习长生不老药/外星药,并且遇到了与变更集相关的障碍。不知道我做错了什么 我有一个“域模型”结构,它有一些必填字段。当我执行put\u change时,返回的变更集仍然表示变更集有错误(字段丢失),即使它就在变更中 cset = Activity.changeset(%Activity{}, %{details: "Played in the snow", child_id: child_id}) #Ecto.Changeset<action: nil, changes: %{c

Elixir 我是否应该在长生不老药中省略逻辑上隐含的保护条款?

给定一个保证获得一个数字作为输入的函数,我应该包括逻辑上隐含的保护子句,还是应该省略它们 def check(x) when x < 5, do: :ok def check(x) when x >= 5, do: :error #or def check(x) when x < 5, do: :ok def check(x), do: :error 第二个保护是冗余的,无论输入是否得到保证,它都会在非整数输入上产生更难识别的错误消息。而不是: def check(x)

Elixir 在长生不老药中获得非指数版本的浮点?

长生不老药输出:3.5e-4 我想显示:0.00035 有没有办法约束Elixir输出浮点的非指数版本?一般来说,如果想要精确控制输出,需要使用底层的erlang库io:format 虽然它在其他语言中或多或少像printf或sprintf一样工作,但它还是有点独特。如果您更熟悉这些函数,有一个长生不老药库可以为您翻译 Float.to_string函数是用于打印浮动的函数,据我所知,无法覆盖它使用的格式 你说的“输出”是什么意思?您是否正在考虑显示字符串,如“0.00035”?您可以尝试将

Elixir GenServer及其状态

我使用这个简单的genserver: def handle_info(:tick, items) do items2 = do_job(items) tick() {:noreply, items2} end 在“do_job”中,我需要a)遍历项目,b)发出可能需要很长时间的http请求,c)根据响应,更新数据库并通过从“项目”中删除当前项目或仅更新数据库来完成当前项目: def do_job(items) do Enum.each(items, fn(a) -> #

在Elixir中的函数规范中指定类型

如果可以是任何可以转换为字符串的类型,如何在函数规范中指定类型 @spec push(queue :: %MyQueue{}, data :: ??) :: {} 如果所说的“可以转换为字符串”,您是指to_string/1函数,该函数适用于实施了string.Chars协议的任何类型,您可以使用类型string.Chars.t: @spec push(queue :: %MyQueue{}, data :: String.Chars.t) :: {} IO模块中的许多函数在其规范中使用此类

Elixir Map.get无法使用字符串键检索值

我对Maps有一个奇怪的问题。下面是一个重现这种行为的小例子: defmodule Document do @expiration_presets_to_timeshift %{ "immediately": [seconds: 1], "1-minute": [minutes: 1], "1-hour": [hours: 1], "1-day": [days: 1], "1-week": [weeks: 1], "1-month": [mo

Elixir 检测Ecto DB查询超时

当Ecto(或postgrex?)遇到数据库查询超时时,我想返回一个特定的错误响应(带有自定义消息的HTTP 503) 发生超时时,引发的异常如下所示: ** (DBConnection.ConnectionError) tcp recv: closed (ecto) lib/ecto/adapters/postgres/connection.ex:86: Ecto.Adapters.Postgres.Connection.prepare_execute/5 (ecto) lib

如何配置phoenix/elixir应用程序以接受https请求

我创建了一些phoenix应用程序,默认情况下它们都不接受https请求。我得到的错误是:Cowboy返回400,并且连接中没有头。。Http请求按预期返回数据。我认为您需要在相关的config.exs中配置应用程序的端点,例如: config :my_app, MyApp.Endpoint, http: [port: {:system, "PORT"}], url: [scheme: "https", host: System.get_env("HOST"), port: 443],

Elixir 长生不老药方法的名称/编号是什么意思?

我一直在学习长生不老药,并了解了使用元组时可以使用的方法。这适用于所有方法,但方法名称旁边的/数字是什么意思?比如说 iex(1)> put_elem/3 这是一种用于元组的方法,但/3表示什么?我已经研究并发现/number表示函数需要的参数量 foo/2 foo需要2个参数。我已经调查并发现,/number表示函数需要的参数量 foo/2 foo需要两个参数。它是函数的一个Arity。Arity不是长生不老药,也不仅仅是针对CS的 发件人: 在逻辑、数学和计算机科学中,函数或运算

Elixir 已忽略Ecto Repo记录器配置

我尝试将ecto日志级别设置为:info,并根据以下内容在我的回购配置中添加了这些行: 然而,我在日志中看到的是: [debug] QUERY OK db=5.1ms INSERT INTO ... 很明显,它没有任何效果 我还尝试添加自定义模块: EXTO_inspector.ex: defmodule App.EctoInspector do def log(log) do IO.inspect(log) log end end config.exs: logge

生成elixir测试文件夹&;脚手架

是否可以从mix生成整个测试文件夹和结构,或者只能在您第一次创建项目时完成? 我需要在已经存在的项目上重新创建整个测试文件夹mix为测试文件夹生成非常有限的支架: * creating test * creating test/test_helper.exs * creating test/my_project_test.exs 也就是说,文件夹中有两个文件: test/test_helper.exs ExUnit.start() test/my\u project\u test.exs d

Elixir 413请求实体太大的长生不老药插头

我正在发送base64表单中的图像,然后使用它创建图像并将其发送到AWS 起初,我认为这是Nginx的问题。所以我将client\u max\u body\u size更改为max值,但它不起作用。我仍然得到413请求实体太大错误 只有在发送高分辨率图像的Base64字符串时才会发生这种情况。因为我们正在使用插件对请求进行身份验证。我刚刚知道。我创建的插件是: defmodule EvercamMediaWeb.AuthenticationPlug do import Plug.Conn

重试Elixir中失败的作业

拜托,我有个问题,我要用长生不老药代替预测拨号器。到目前为止,它已经超出了所有的预期。然而,我面临一个问题。假设所有第三方依赖项都按预期工作,那么这段代码运行良好 def perform(phonebook_contacts, ...) do alias FSModEvent.Connection, as: C for x <-Enum.chunk(phonebook_contacts, 100, 100, []), y <- x do unless Telep

运行混合文档时出现Elixir版本错误

请帮忙处理这件事。我有系统安装的Elixir版本1.3,我使用asdf 这是mix.exs文件 您可以降低混合文件中的elixir要求,然后再次尝试编译它。在mix.exs文件中,更改: ... version: "0.1.0", elixir: "~> 1.6", start_permanent: Mix.env() == :prod, ... 到 然后在终端中运行以下操作: mix do clean, deps.clean --all mix deps.get mix compile

Elixir 直接编辑项目依赖项

我想知道,我的应用程序中存储的deps在哪里 我是否有机会在我的应用程序中直接更改它们?您的依赖项将存储在名为deps的文件夹下,该文件夹位于您的应用程序目录中。虽然不建议在那里更改它们,但您肯定可以在Github上使用一个分支,并通过这种方式将它们加载。您的依赖项将存储在名为deps的文件夹下,该文件夹位于您的应用程序目录中。虽然不建议在那里更改它们,但您当然可以在Github上使用一个分支,并通过这种方式加载它们。正如马托夫在回答中提到的那样,依赖项存储在项目根目录下的deps/目录中,虽然

Elixir 按预加载的嵌套结构排序

是否可以按我在EXTO中使用preload获取的嵌套集合中的列进行排序 users = MyApp.User.find_by_id(1) |> Repo.preload(locations: [:address]) 我想按位置结构字段排序:Location.sort\u order预加载接受查询,如文档所示 您还可以将join/5与子查询或片段一起使用 locations = from(l in Locations, order_by: [asc: l.sort_order], sele

在Elixir/Phoenix中处理无效令牌上的websocket连接

我们使用Guardian生成令牌,然后在连接到Phoenix Channel的套接字时将其用于身份验证 最近,我们发现一些用户从未离开过某些页面,大约一个月后,令牌变为无效,这使Phoenix通道连接尝试无效 您如何在客户端处理此类案件?是否有一个特定的错误可以从凤凰城返回,让前端知道原因是什么?user\u socket.ex中的connect函数如下所示: def connect(%{"guardian_token" => token}, socket) do case Guard

Elixir EXTO |如何获取应用程序中的所有模式模块

我正在尝试为自动化创建一个混合任务—一些脚手架,我想得到应用程序中所有模块名称的列表,其中包含模式和嵌入模式实现。最后,我希望有一个包含字段定义的所有模式的列表,而不仅仅是模块名。 我们能得到它吗?如果是,那么如何提供这样的api 根据外部模式的文档 任何模式模块都将生成可用于模式运行时自省的\uuuuuuuuuu模式函数 您可以将此功能与Erlang和Elixir自己的自省功能结合使用,以过滤所有相关模块并整齐地检索任何已定义模式的详细信息,例如: {:ok,modules}=:applica

Elixir EXTO unique_约束未按预期工作

我想创建一个具有3个字段的唯一约束,并将其称为唯一用户产品商店。执行此操作时,我的数据库会抛出一个错误,表示尝试的插入不是唯一的: 错误: 18:04:18.830 [error] #PID<0.380.0> running Api.Router terminated Server: 192.168.1.12:4000 (http) Request: PUT /product/isinshop/?p_id=12&s_id=12&u_id=792200324272726

Elixir 解析器未读取/解析JSON正文

我正在编写一个Elixir(1.8)+Plug_Cowboy(2.0.2)+Jason(1.1.2)服务器。从文档中得到的信息来看,一旦通过了插件解析器,我应该在body_params中拥有所有内容。问题是在我的例子中访问conn.body_参数会返回%Plug.conn.Unfetched{aspect::body_参数}。检查以下代码: defmodule Test.Router do 使用插头路由器 需要记录器 插头:匹配 plug-plug.parser,解析器:[:json], 通过:

Elixir 指定嵌套表单字段的顺序

我正在设置一个带有嵌套字段的表单,如何指定字段的顺序,使它们不会分组在一起 我可以使用的inputs\u来显示嵌套字段,但是它会同时显示所有字段。我想以动态顺序显示它们 例如: <%= inputs_for f, :apples, fn fa -> %> <%= label fa, :name %> <%= text_input fa, :name %> <%= error_tag fa, :name %> <% end %

Elixir 通过“属于”关联进行的唯一外部查询?

我有两种型号Event和Customer。这种关系是一个事件属于一个客户,该客户可以有许多事件 现在,我需要通过事件的方式返回特定日期范围内的唯一客户数。Ecto是否有任何查询方法可以满足我的需要?我成功地做到了这一点,而无需预加载或将客户加入事件,因为我可以使用distinct:event.Customer\u id您想要返回什么数据还不是非常清楚。也许您需要一个关于客户id的群组?或者可能不同:真的吗?嗨@JoséValim,谢谢你的回复。我需要返回给定一组事件的唯一客户数。由于我可以使用d

在Elixir中将集合转换为地图

如果我有表格的集合: [{key, value}, {key, value2}, {key2, value3}] 如何将其转换为表单的映射 %{key => [value, value2], key2 => [value3]} ?使用以下方法减少压力是一个很好的选择: [{:key,:value},{:key,:value2},{:key2,:value3}] |>Enum.reduce(%{},fn{k,v},acc-> 地图更新(acc,k,[v],fn l->[v | l]

Elixir iex>;如何导入HTTPoison

我不熟悉长生不老药。我希望它与Python或R类似,在那里可以下载模块并保持最新,而无需花费太多精力 我已经创建了一个混合项目来使用HTTPoison,但我真的只想从解释器中试用HTTPoison $ iex Erlang/OTP 22 [erts-10.4.3] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe] [dtrace] Interactive Elixir (1.9.0) - press Ctrl+C

Elixir 改变外部控制结构的分配

我从长生不老药开始,很难理解为什么任务在控制结构之外会发生变化。澄清一下,这就是我的意思(.exs文件): 如果有人能解释我的遭遇,我将不胜感激。简而言之:这是一个范围问题。Elixir中的每个控制语句都声明了一个新的作用域。要使其按预期工作,请在顶层指定值: 新地图= 简而言之,如果新建映射[项目]:这是一个范围问题。Elixir中的每个控制语句都声明了一个新的作用域。要使其按预期工作,请在顶层指定值: 新地图= 如果是新地图[项目] defmodule Grocery do def ad

Elixir 要映射的字符串列表

您好,我想转换我从.txt文件拆分的这组列表 [“a:1”、“b:2”、“c:3”] 到 %{“a”=>“1”、“b”=>“2”、“c”=>“3”} 提前非常感谢。对于项目“1”}、%%{“b”=>“2”}、%%{“c”=>“3”} for item <- ["a: 1", "b: 2", "c: 3"], into: %{} do [k, v] = String.split(item, ": ") {k, v} end # %{"a" => "1"}, %{"b" =&

Elixir 使用Gigalixir部署phoenix应用程序时出现问题

我遵循了文档提供的教程,但我认为在尝试使用distillery部署phoenix应用程序时,我的节点版本有问题。 我得到以下错误: remote: Node 10.16.3 Will export the following config vars: APP_NAME DATABASE_URL LIBCLUSTER_KUBERNETES_NODE_BASENAME LIBCLUSTER_KUBERNETES_SELECTOR

在Elixir Phoenix中使用unix邮件发送电子邮件?

凤凰城指南建议使用SMTP提供商发送电子邮件 我想知道是否有一些Elixir库允许使用unix命令行实用程序邮件发送电子邮件?这似乎表明他们不希望您使用命令行邮件实用程序,而是建议您使用云smtp服务。我以前在其他项目中使用过mailgun免费层,所以我建议他们尝试一下,这显然是一个离题的话题。试试吧。我不知道有什么mail库,但如果你注册了类似mailgun的东西,你可能会发现它很有用。

Elixir 有没有办法搜索依赖于某个包的所有十六进制包?

我想搜索所有依赖于comeonin的十六进制软件包,这可能吗?简短回答:不 这是可能的,因为所有这些信息都是免费提供的,但据我所知,没有任何现有的工具允许您这样做。hex.pm包含一个用于包的依赖项的部分。如果我们查看该软件包,我们可以看到它目前有41个依赖软件包(右侧)在hex上注册。请澄清您的意思是通过web界面还是通过命令行。

Elixir 使用动态数量的where过滤器组成一个exto[v1]查询

这是一个理论问题,但假设数据结构不能改变,并且这就是我们想要进行查询的方式。这个问题更多的是为了更好地理解如何动态地组合过滤器,而不是希望从这样的查询中获得结果 假设一个数据库有一个Car表,其中每个Car都有一个manufacturer\u id列,其中包含一个id,如“BD324”或“GM512”,前缀为“BD”和“GM” 我们需要在car表上进行查找,这样当汽车的制造商id前缀与给定的一组前缀匹配时,就会返回汽车。因此,给定一个前缀列表: prefixes = ["BD", "GM", "

Elixir Ecto模型`未定义函数:`在iex中使用from宏***时***

我有这个问题与外星项目。所有查询都不起作用。 我做了一些谷歌搜索和github问题搜索。很少有,但与我的问题无关 这个问题是从这个问题开始的(主要与我的问题有关) 使用**(RuntimeError)未定义的函数:u/0启动。不仅是那个模型,还有其他模型。 我的DEP 目前,从数据库读取的所有数据都是通过psql完成的。它确实起作用,但很烦人。:) 供参考 defmodule Univer do use Ecto.Model import Ecto.Query s

Elixir 如何用字符串中的新值替换旧值列表

有一个新旧值的映射,用字符串中的新值替换旧值的惯用方法是什么 my_map = %{"old_value1": "new_value1", "old_value2": "new_value2"} str = "some string .......old_value1 fafdsfd old_value2 faaaaaaa" 由于长生不老药是不可变的,我不知道如何做到这一点。(我假设你的地图上有字符串键,而不是原子。) 如果可以逐个运行替换,只需使用Enum.reduce和String.rep

Elixir 长生不老药;Benchwarmer的结果截然不同

我正在尝试对快速排序算法与枚举排序算法进行基准测试。我从benchfella和benchwarmer得到了截然不同的结果 摘要: Benchfella Benchwarmer Enum.sort 8920.47 µs/op 2418767.00 μs/op QuickSort 16660.45 µs/op 15745.04 μs/op 详细信息: Benchfella

Elixir 使用所属对象的关联中出错

我有两个表,例如付款和退款,使用交易号作为退款的外键 defmodule Payments.Payment do use Payments.Web, :model schema "payment" do field :payment_id, :string field :captured_amount, :decimal field :transaction_id, :string timestamps()

Elixir 为什么Phoenix需要参数中的所有嵌套资源,使用cast\u assoc或put\u assoc

这种情况是一对多的,我想同时插入和更新嵌套资源 根据,cast_assoc要求我们使用参数中的所有关联更新/插入嵌套资源。如果我们没有包括所有关联,请为缺少的关联强制执行\u assoc invoke:on\u replace操作 我认为可以使用Phoenix模板生成的表单,因为表单每次都发送参数中的所有关联。但是如果这个函数与JS框架一起工作,我可以发送 在web浏览器上更改的关联。在这样的用例中,我可以在事务中重复更新,还是像模板一样进行更新 我觉得这种行为有点棘手。我觉得最好是将操作显式地

Elixir 如何将地图和列表与地图合并?(不推荐使用Dict)

因此,在我的phoenix应用程序中,我有一个警告: 警告:Dict.merge/2已弃用,请使用映射模块进行工作 使用地图或用于处理关键字列表的关键字模块 测试/支持/测试助手。示例:6 当我将其更改为Map.merge时,它会崩溃,因为attrs不是一个映射,它需要一个映射: 有没有其他方法可以让它工作?还是必须将属性强制转换为映射?您可以使用Enum.into/2合并两个枚举。如果希望关键字列表作为结果,则关键字列表应为第二个参数,如果希望映射作为结果,则映射应为第二个参数。我猜你想要一张

上一页 1 2 ...  12   13   14   15    16   17   18  ... 下一页 最后一页 共 125 页