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的ExUnit中测试模块中的私有函数?

由defp定义的函数未导出,因此我无法在模块中以外的位置执行它们。否,无法通过ExUnit测试它们 我个人避免测试私有函数,因为通常您会测试实现而不是行为,并且一旦您需要更改代码,这些测试就会失败。相反,我通过公共函数测试预期的行为,将它们分成小的、一致的块。在模块定义中,您可以使用@compile指令仅在测试环境中导出私有函数 defmodule Foo do @compile if Mix.env == :test, do: :export_all # This will be e

将Elixir字符串转换为整数或浮点

我需要将字符串转换为浮点值或整数。没有这样的方法, string_to_integer 您可以将其转换为字符列表,然后使用Erlang转换为\u integer/1或转换为\u float/1 例如 除了Jose建议的Integer.parse/1和Float.parse/1函数之外,还可以检查String.to_Integer/1和String.to_Float/1 提示:有关其他转换,请参见到_atom/1,到_char\u list/1,到_现有的_atom/1。谢谢本页的朋友,这里只需

Elixir如何将映射结构转换为记录结构

我有一个记录结构和一个映射结构,如: defmodule Foo.Bar do defstruct boo: nil, baz: nil end defmodule Foo do require Record Record.defrecord :bar, Foo.Bar, [boo: nil, baz: nil] end 我可以像这样将记录转换为地图: defp update_map({k, v}, map), do: Map.update!(map, k, fn(_) ->

如何安排代码在Elixir或Phoenix框架中每隔几个小时运行一次?

比如说,我想每4小时发送一堆电子邮件或重新创建一个网站地图或其他任何东西,我会如何在凤凰城或仅仅使用长生不老药 你可以用它。你用它就像 job = {{:weekly, :thu, {2, :am}}, {:io, :fwrite, ["It's 2 Thursday morning~n"]}} :erlcron.cron(job) 作业是一个两元素元组。第一个元素是表示作业计划的元组,第二个元素是函数或MFA(模块、函数、Arity)。在上面的示例中,我们每周四凌晨2点运行一次:io.

Postgres-Phoenix/Elixir安装错误

我遵循这个教程 但我有一个问题,我不知道如何解决。我认为这与博士后有关 我做到了: $ mix ecto.create $ mix ecto.migrate C:\Users\999\Documents\elixir_files\blog>mix ecto.create ** (RuntimeError) could not find executable `psql` in path, please guarantee it is available before runnin

Elixir 将表示日期的字符串传递给EXTO中的postgres查询

正在尝试执行此postgres查询: select date('2015-10-05') from posts; 我正在以字符串形式传递日期: Ecto.Adapters.SQL.query!( Repo, "select date('$1') from posts", ["2015-10-05"]) 但获取日期时间格式无效的错误 ** (Postgrex.Error) ERROR (invalid_datetime_format): invalid input syntax

Elixir 执行命令和流结果

我想执行一个系统命令(git clone),并通过Phoenix中的一个通道将输出流传输给用户 我是否可以让System.cmd流式处理结果,而不是等到它完成 或者,我可以将输出写入一个文件,并在附加内容时从该文件流式传输内容吗?可以使用以下内容覆盖输出: System.cmd "git", ["clone", "YOUR_GIT"], into: IO.stream(:stdio, :line) 结果: 克隆到“你的歌”。。。远程:计数对象:1665,完成。 远程:压缩对象:0%(1/979

如何在controller-elixir phoenix中进行mysql查询

我对Phoenix-Elixir非常陌生,我想在控制器中进行mysql查询 mysql查询:从学生中选择*,其中first_name=abc 假设您正在使用和,您可以使用模块中提供的函数从任何地方进行查询。宏已在web.ex中为您导入 对于更复杂的查询,您可能希望将查询移动到模型中,但不移动对回购的调用。如中所述。如果您提供详细信息,则在询问问题时会帮助我们为您提供更好的答案。iex14>query=from s in Chatty.Student,…14>其中:s.id>0,…14>选择:s

Elixir 如何创建XML Http请求?

在phoenixframework中,我需要创建一个post请求,将参数发送到另一台服务器 由于我是长生不老药的新手,我想知道我该怎么做?有专门的图书馆吗?或者,是否可以在不安装新库的情况下启动post请求?如何使用?您可以使用诸如的库从任何elixir代码发出http请求 请注意,XMLHttpRequest是一个用于发出http请求的浏览器api(很长一段时间以来它根本不是XML专用的)——一般来说,这些请求没有什么“特殊”之处。许多js库(包括Jquery、prototype等)都添加了一

Elixir 如何在将外部变更集插入回购之前对其进行修改?

我对菲尼克斯/长生不老药真的很陌生,我正试着把我的头脑集中在变化上 我知道它包含一组用于创建或更新模型的更改 我想知道的是,在将更改推送到数据库之前,是否可以修改更改,以及如何修改更改 我的用例如下所示: 我有一个表单,允许人们在数据库中创建新的艺术家 这种形式有一个专业领域 在创建艺术家之前,我想用“,”分割专业字段,将其存储为字符串数组 由于不变性约束,我甚至不确定直接修改变更集是否可行,但我可能会创建另一个变更集插入到repo中 欢迎任何建议,请毫不犹豫地指出我可能正在做的不好的做法或

Elixir 更新长生不老药地图

拥有它: [%{"id" => "1", "name" => "foo"}, %{"id" => "2","name" => "bar"}] 如何将其转换为以下内容: [%"foo" => %{"id" => "1","name" => "foo"}, %"bar" => {"id" => "2","name" => "bar"}] 假设您想要一个带有String键的Map,您可以使用for和进入:如下: iex(1)>

Elixir 表中交替的奇数行

我只想将纯表奇数添加到每个奇数表行。在RubyonRails中,我会使用cycle来实现这一点。在凤凰城实现这一目标的最佳方式是什么,它占用的CPU电量最少 <%= for group <- @groups do %> <tr class="pure-table-odd"> <td><%= group.name %></td> </tr> <% end %> 一个简单的方法是将索引与组一起

Elixir 测试Phoenix-如果存在';这是一个外键约束,是否仍要使用@valid\u attrs?

在大多数模型测试中,您可以访问@valid_attrs,这允许简单地创建模型,而无需不断复制/键入参数 如果我有用户id约束(不能是随机数,因为id已验证) 是否仍然可以使用@valid\u attrs 现在,我正在我的setup块中创建一个用户,然后在需要时Map.put(@valid\u attrs,:User\u id,User.id)。像这样: defmodule ModelTest do # Not really valid without user_id @valid_att

Elixir 检查值是否为关键字列表

Elixir提供了一些is功能,可用于检查某个项目是否为特定类型: is\u atom 是二进制的 是地图 等等 但如何检查值是否是Elixir中的关键字列表?我知道,在下面,关键字列表是一个2元素元组列表,第一个元素是原子,因此我当前的解决方法是: defmodule KList do def是_关键字?(list)什么时候是_list(list)do 全部?列表,fn项-> 案例项目做什么 {k,{}->is_原子(k) _->错误 结束 结束 结束 def是_关键字?(_),do:fa

Elixir 过滤空记录

我与两个模型用户和地址有一个嵌入式关联,我将它们连接为: defmodule App.Address do # ... def changeset(struct, params \\ %{}) do struct |> cast(params, [:address, :city]) end end 当我使用: inputs_for :addresses, [append: [App.Address{}]], fn address -> text

Elixir 将映射转换为结构

我正在尝试将贴图转换为结构,如下所示: 我有一张地图: iex(6)> user %{"basic_auth" => "Basic Ym1hOmphYnJhMTc=", "firstname" => "foo", "lastname" => "boo"} 该值应应用于结构: iex(7)> a = struct(UserInfo, user) %SapOdataService.Auth.UserInfo{basic_

Elixir 凤凰应用';职位';先展示最新的

在我的Phoenix应用程序中,我有一个名为“posts”的模型 以下是相关的控制器操作: def index(conn, _params) do posts = Repo.all(Post) render(conn, "index.html", posts: posts) end 问题是-这将显示所有以最旧的帖子开始的帖子。我想显示的是所有的帖子都以最新的开始(最老的出现在最后) 如何修改控制器以实现此目的 提前感谢。这是我从文档中提出的一个可行的解决方案。如果有人能

Elixir 在Phoenix中使用JQuery

我试图使用npm将jquery添加到Phoenix项目中,但不知何故fsevents无法在Win操作系统下运行。所以我只是下载jquery并将其放在/web/static/vendor文件夹下 我试图通过阅读这篇文章来理解需要做什么,但我就是无法理解 如何从模板页面访问此jquery?一个循序渐进的教程会很好,因为我真的不熟悉node.js或早午餐 谢谢:)我假设您默认使用的是brunch.js,并且您的jquery文件正在连接到app.js(您可以更改文件连接的顺序,请检查您的brunch c

Elixir中的HTTPoison.get()错误

我有以下网址 并且需要通过HTTPoison.get获取页面正文。 下面的方法给出了一个超时错误 case HTTPoison.get("https://www.michaelkors.com/four-in-one-logo-belt-box-set/_/R-US_39F6LBLY4B?color=0200", []) do {:ok, %HTTPoison.Response{body: body}} -> {:ok, body} {:error, %HTTP

Elixir 查询有很多关联-埃克托,菲尼克斯

我正试图在我的系统中查询属于某个特定用户的所有联盟 数据设置如下所示: 用户模型: 所以你可以看到,我有很多用户和联盟协会 我正在尝试获取一个用户附加到它的所有联盟的列表 在rails中,它看起来像这样:user.leagues,它将加载所有附加了当前用户id的联盟 我怎样才能用Ecto、Elixir和Phoenix做到这一点?您可以使用Repo.preload将leagues预加载到user中: user = user |> Repo.preload([:leagues]) # user

Elixir EXTO:在集合中订购预加载的数据与有许多关联

假设我有一个用于获取所有线程的工具: Thread |> Thread.ordered |> Repo.all |> Repo.preload([:posts]) 如何为:posts提供order_by子句?在文档中,我似乎找不到任何引用exto.Repo.preload/1的内容,因此提供的示例似乎都没有对正确使用此语法有所帮助 通过该模块,还可以很容易地将某些查询应用于预加载之类的事情 我们实现这一点的方法是将查询传递到preload函数中,然后将预加载的结果限制到该查询

Elixir-Exto:如何存储关于多对多关系的元信息

假设我有用户和组织模型,以及两者之间的多对多关系。我现在想补充关于两者之间关系的信息。例如时间戳和位置。我该怎么做?我该如何查询这些信息 我认为正确的方向是使用连接模式。以下是类似于以下内容的EXTO文档: defmodule UserOrganization do use Ecto.Schema @primary_key false schema "users_organizations" do field :position, :string # adding info

Elixir,Absince如何在与Absince约会后创建用户?

我试图获取在某个日期之前/之后创建的用户,但我收到了此错误 “消息”:“参数\“过滤器\”的值$filter无效。\n在字段\“insertedAfter\”中:应为类型\“NaiveDateTime\”,找到的是\“2018-05-13\” 这个错误是有道理的,因为“2018-05-13”不是NativeDateTime。。。然而,我认为NativeDateTime应该解析字符串“2018-05-13”。我正试图应用我从一本书中学到的东西,但却遇到了困难。我还创建了一个自定义日期标量,但基本上

Elixir Phoenix模块未实现EXTO查询

我正在学习编程Phoenix 1.4教程,遇到了一个问题,有人告诉我,给定模块没有实现EXTO Queryable,但我不知道为什么。还有一个类似的问题,但它有一个简单的答案,不适用于我的情况 我的lib/rumbl/accounts/user.ex文件中有此代码: defmodule Rumbl.Accounts.User do 使用exto.Schema 导入外部变更集 模式“用户”做什么 字段:名称,:字符串 字段:用户名,:字符串 时间戳() 结束 结束 这是我的lib/rumbl/a

Elixir 如何使用spawn/4?

我试图使用在远程Elixir节点上部署一个函数,但似乎无法管理它 我在iex中的模块hello中定义了有问题的函数hello world,并尝试使用Node.spawn进行部署:node2@remote,你好,:世界,[] 我希望spawn/4将模块Hello发送到远程节点,以便在尝试生成时在那里识别函数world/0。但是,我得到以下错误: [错误]节点上的进程PID中出现错误:node2@remote退出值:{:unde,[{Hello,:world,[],[]}} 你使用的术语让你很难理解

为什么elixir函数的类型规范末尾有()或括号?

例如,平面贴图的类型规格如下所示 平面映射(Enumerable.t(),(element()->Enumerable.t())::Enumerable.t() 在输入和输出数据类型的末尾有许多括号。为什么会有 在TypeScript、Haskell或Rust等其他语言中,数据类型只是没有()的类型 提前感谢。因为某些类型可以参数化,所以您可以指定一个整数列表,例如:list(integer) 以防有人需要它。 在规范中,我们可以选择在具有零arity和类型的函数上键入()或不键入()的两种方式

以编程方式确定Elixir Mix任务中的依赖项版本

有没有办法以编程方式在自定义混合任务中指定已安装依赖项的当前版本 我有一个包,其中包含一些运行一些生成器命令的自定义混合任务。我想确定hex包的用户正在运行的Phoenix版本,这样我就可以在生成器任务中有条件地执行一些逻辑 我的十六进制软件包依赖于Phoenix,但也支持Phoenix 1.3、1.4和新发布的1.5 我意识到我可以发布一个新版本的hex包,它有一个固定的phoenix 1.5依赖性要求,同时仍然可以将更改移植到我包的旧的主要版本;但我更愿意保留一个主线分支,目前支持尽可能多的

如何在Elixir中按模数筛选列表

假设我有一个数组 arr=[1,2,14,1,27] 我想制作一个名为arr1的新数组,它将存储arr的所有值,当你取它的模时,这些值将等于1。所以 arr2=[1,14,1,27] 因为1 mod 13、14 mod 13和27 mod 13都等于1。使用filter和modulorem(x,13)==1 输出: [1, 2, 14, 1, 27] [1, 14, 1, 27] 这种任务最好通过理解来完成,理解比枚举过滤器/2更强大 因为我能不能请你不要再问数组了,你在过去几天里问过的问

Elixir 《长生不老药》中的所有内容都是参考类型吗?

在阅读关于长生不老药不变性以及它如何尽可能避免内存复制的文章时,这似乎是唯一可能的解释,但我还没有在任何地方看到它的明确表述。 例如,在将新元素添加到列表时,描述了该操作只需n个步骤,n是列表的长度,但它只复制原始元素。所以我的假设是: 假设我们有一个列表[1,2,3,4]。它由4个节点组成,但节点本身不包含值。1、2、3、4存储在其他位置,每个节点都包含对相应值的引用,以及对下一个节点的引用。当我们将10添加到列表中时,不仅会创建一个新节点,实际上还会创建五个新节点,因为在原始列表中,编号4的

Elixir 具有可选键的模式匹配映射

我有一个函数,它接收带有多个键的地图,其中一些键是可选的。如何编写包含映射的函数签名,同时允许可选键默认为某个值 def handle_my_map(%%{text:text, 打印次数:打印次数,#我希望默认为2 颜色:颜色#我希望默认为“蓝色” })做 枚举每个(1..print_次,fn()->IO.puts[“(”,color,“):”,text]end) 结束 测试。处理我的地图(%{text:“here”,打印次数:5,颜色:“Red”}) #(红色):这里 #(红色):这里 #(红

Elixir中有splat操作员吗?

Elixir中是否有splat运算符等效项,如*opts? 是否有方法将多个选项(而不是选项列表)作为参数传递给exec函数 没有splat操作符。Elixir(和Erlang)中的函数由它们的名称和arity(String.downcase/1,Enum.member?/2)定义,而变量函数则与此相反 Erlang的一位作者Joe Armstrong在他的书《编程Erlang:并发世界的软件》中提到了这一点: 1) 函数的arity是其名称的一部分, 2) 没有可变函数 如果您想使用参数列表(

在Elixir中编译模块属性

@compile模块属性做什么?例如: @compile {:inline, some_function: 2} 我试着用谷歌搜索一些东西,但没有找到任何信息…来自: @编撰 定义传递给Erlang编译器的模块编译选项 接受原子、元组或原子和元组列表 有关支持的选项列表,请参阅 @compile的多次使用将累积,而不是覆盖以前的使用 文档现在说该选项也会影响Elixir编译器,并提供了一些示例。答案中的死链接已修复。如何使用@compile将源属性设置为与定义模块的文件不同的名称?我在defm

Elixir 如何使用Kernel.apply for宏函数

elixir的无法调用宏定义的函数 例如 defmodule Hoge1 do for fun_name <- [:foo, :bar] do defmacro unquote(fun_name)(arg) do apply(Hoge2, unquote(fun_name), [arg]) end end end defmodule Hoge2 do for fun_name <- [:foo, :bar] do defmacro u

Elixir 如何清除长生不老药外壳?

这不是一个最有见地的问题,但我真的希望能够按下Control-L并让shell iex清除屏幕。你知道怎么做吗,或者是否有另一个elixir shell与这个内置软件一起使用吗?清除控制台屏幕。你也可以使用命令来清除屏幕。+k你可以键入“clear”的风筝。你还应该指定你正在讨论的是哪个shell/控制台,因为这会有所不同。

命名Elixir GenServer进程与实现它们的模块不同

我有一个名为Tornado的模块,它实现了一个GenServer,我试图将它作为一个进程生成,并使用与模块本身不同的名称。 根据该方法,可以通过提供一个原子作为参数来注册GenServer进程 children = [ worker(Tornado, [[], [name: :tornado_server]]) ] 但是,当我尝试对其调用函数时,我得到一个错误: iex(2)> :tornado_server.send_requests ** (UndefinedFunctionE

无法在elixir中的循环中使用代理返回的值

所以我有一个elixir程序,它在循环中运行并执行某些操作。我已经声明了一个代理来创建一个zookeeper连接实例,然后在循环中使用相同的实例。以下是我的代码:- mix.exs def application do [ applications: [:logger, :zookeeper], mod: {ServiceMonitor, []} ] end defp deps do [ {:zookeeper, github: "vishnevskiy/zookeep

Elixir 张贴一张表格,上面写着“属于协会长生不老药”

我需要创建一个具有许多角色的用户,因此我遵循以下步骤: 我创建了两个模型,模式是: schema "roles" do field :name, :string belongs_to :user, Module.User timestamps() end schema "users" do field :name, :string field :cnpj, :string has_many :roles, Module.Role times

Elixir 按EXTO顺序排列的变量

我只是在学习长生不老药,我不知道如何在ORDERBY语句中使用变量。我有两个变量排序和方向。这是我正在处理的查询,我想按顺序替换desc和date。我尝试了[^direction:entry.^sort],但它抛出了一个错误。有没有办法按顺序使用变量 journal_entries = from entry in JournalEntry, preload: [ :journal_entry_lines, journal_entry_lines: :journal_entry

elixir-通过嵌套amp中的索引获取项

我有一个这样的结构: map = %{"a" => "foo", "b" => [%{"b1" => "bar", "b2" => "baz"}]} 简单地说,我想得到的是: map.b[0].b1 最简单的方法是什么? 有没有办法使用kernerl.get_in/2你会得到一个错误,因为你地图的键是字符串,而不是原子,并且没有list[index]语法 你可以把它弄到手 map["b"] |> Enum

在Elixir中将字符串转换为整数

例如,我写了一个简单的计算程序,但它不起作用 a = IO.gets"a = " a = String.to_integer(a) b = IO.gets"b = " b = String.to_integer(b) v = a + b IO.puts "Sum: #{v}" 如何更正此代码?IO.gets不会修剪尾随的换行符,这会使String.to\u integer即使只输入数字也会失败。您可以使用String.trim\u training/1将其删除: a = IO.gets("a

Elixir 使用mixin在模块中隐藏私有函数

假设我有一个长函数的mixin,如下所示: defmodule Mixin do @callback cb ... defmacro __using__(_) do quote do def long_function do #a lot of code cb(a, b, c) #even more code end end end end defmo

Elixir Phoenix framework EXTO为时间戳提供默认值

我想知道如何自动填充timestamp()生成的“updated_at”和“inserted_at”列 目标是不指定这些值,因为它必须是自动的。 我知道如何处理其他专栏 schema "users" do field :newsletter, :boolean, default: false timestamps(type: :utc_datetime) end 我试过了 schema "users" do field :newsletter, :boolean, default

Elixir 将埃克苏尼特的测试标记为待定

我正在寻找一种方法,将用ExUnit编写的测试标记为待定 我知道我可以通过标记跳过测试,但我正在寻找一种跳过测试的方法,这种方法可以使跳过这些测试变得非常透明,因为它们需要实现。其他测试框架,如RSpec或ESpec,会将它们标记为黄色,并在每次运行时突出显示 ExUnit中有这样的功能吗?作为一种解决方案,您可以利用以下功能: pcregrep -hM "@tag :to_be_implemented\s*test" ./test/**/*.exs | grep test 并可能创建自己的混

Elixir 用自定义值替换结构中的特定值

我从数据库返回了不同的结构,我想用一些自定义值替换值exto.Assoication.Notloaded,比如它们中的Notloaded 这是一个记录 unit = %{ __meta__: #Ecto.Schema.Metadata<:loaded, "units">, cdc_location_class_id: nil, description: "", facility: #Ecto.Association.NotLoaded<association

Elixir 模式匹配函数头中映射内的映射

我当前有一个params实例,如下所示: params: %{ "continent" => %{ "deleted_date" => nil, "name" => "Asia", "to_be_deleted" => true }, "id" => "16" }, 我正在尝试对to_be_deleted键进行模式匹配,以便如果它为真,将运行不同版本的update/2,同时还将大陆的内容分配给大陆

Elixir Enum.each/2返回:确定而不是列表

我使用的函数获取一些用html编写的表,并将其转换为6元组原子字符串对的列表(例如“…name:dave…”-->({:name,“dave”},{:lesson,“dave”},{……})。我使用Enum.each迭代每一行,并用正确的值替换它。该算法工作,但它没有返回它得到的答案,它只返回一个:ok原子,而不是实际的数据结构。可能是我对函数式语言缺乏理解 我已经读到最后一行是elixir将作为返回值的内容,但它显然没有这样做。当我在枚举器函数中打印行时,它将转换为正确的输出。但是如果我在枚举

如何在elixir中更新嵌套映射中的条目

我想更新重嵌套映射中的条目。例如,在下面的地图中,我想将城市更新为“诺伊达”。那个么,如何使用库提供的方法来实现这一点呢?我知道有一个方法get_in(map,[:key,…]),这是一个获取值的简单方法。有没有类似的更新方法 input = %{ name: "ashish", address: %{city: "delhi", country: "IN"} } expectation = %{ name: "

Elixir 1.10.2/Phoenix 1.5模板更改后,通常会得到;无法定义模块。。。因为它目前正在“中定义”;(2020年年中)

我仍然经常使用最新的elixir/phoenix出现此错误,因此这与elixir v1.0.3中修复的错误不同,如下所述: 在另一个终端中运行mix.compile会显示错误,在本例中,它是一个slime模板: ** (TokenMissingError) lib/tealdog_web/templates/workspace/_row_controls_center.html.sleex:30: missing terminator: " (for string starting a

上一页 1 2 ...  28   29   30   31    32   33   34  ... 下一页 最后一页 共 125 页