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中测试异步代码

我想测试一个使用Task.async 为了使我的测试通过,我需要在断言之前让它休眠100毫秒,否则测试进程在异步任务执行之前被终止 有更好的办法吗 已编辑,正在添加代码示例: 我想测试的代码(大致): 以及我已经编写的测试(仅在调用睡眠时使用) 由于这个问题有点模糊,我将在这里给出一般性的回答。通常的技术是监视进程并等待停机消息。大概是这样的: task = Task.async(fn -> "foo" end) ref = Process.monitor(task.pid) asser

具有多个/动态配置文件的Elixir应用程序

我有一个elixir应用程序,一个应用服务器,它将从启动参数中受益。这个应用程序使用了一个EXTO存储库,所以我可以在那里存储应用服务器的配置,但是我仍然需要一个配置密钥来从数据库中检索什么 目前,我一直在为服务器应用程序使用config.exs(整个应用程序是一个伞形项目),但显然这只处理一个静态配置 我的问题是: 我可以使用mix指定要使用的配置文件吗?我知道Mix库中有几个函数,但据我所知,它们都是应用程序启动后可以使用的函数。 同样,我可以使用mix来加载任何子应用程序的配置文件吗 谢谢

Elixir 分布式长生不老药示例不';行不通

我有一个非常简单的Elixir代码示例,我想在不同的节点上运行 第一个节点在我的笔记本电脑上,第二个是Raspberry Pi,通过SSH访问 代码很简单: # node1@my-computer defmodule Hello do def world, do: IO.puts "hello world" end # node2@raspberrypi iex> Node.spawn_link :"node1@my-computer", fn -> Hello.world

Elixir Plug,使用在init传递的选项和Plug.Router语法

我正在使用插头,我想了解 我的代码如下所示: defmodule Numerino.Plug do 使用插头路由器 使用Plug.Debugger plug:put_resp_content_type,“application/json” 插头:匹配 插头:调度 definit选项做什么 IO.inspect选项 选择权 结束 得到“/”做 康涅狄格州 |>检查 |>发送响应(201,“世界”) 结束 相配 发送响应(conn,404,“未找到”) 结束 结束 在get中,我需要使用选项作为参

Elixir 具有外胚层的反向多态性

当前的EXTO文档仅解释了当多态的注释可以同时属于任务和Post时,如何构建属于多态关联类型的。但是相反的方向呢 例如,有一个列表,它可以有四种类型的属性之一:房间,公寓,维拉或办公室 考虑到一对一的关系,鉴于上述示例,这意味着应该有房间/房源,公寓/房源,维拉/房源和办公室/房源,这是不可能的,因为这将导致与列表相关联的所有其他表的重复 问题是如何建立这种关系的模型 我认为最简单的建模方法是翻转关联的两侧,然后将room\u id等字段添加到listings表中: defmodule List

Elixir 如何执行ActiveRecord的查询current_user.articles(与Ecto等效)?

在Rails中,AR可以运行如下查询: current_user.articles # fetch all articles from current_user SELECT * from articles where user_id = <user_id>; 有没有一种与“星外”相同的方法 articles = Repo.all(from a in assoc(current_user, :articles)) 或者将文章预加载到用户中 current_user = Repo.

Elixir Phoenix全局变量插头

我试图根据网站的域获取其标识符,但在为其编写了一个插件之后,我遇到了一个问题,系统中的所有链接都返回根url内容 lib/myapp/plugs/request\u var.ex defmodule Myapp.Plug.RequestVar do import Plug.Conn @doc false def init(default), do: default @doc false def call(conn, router) do host = conn.h

与Elixir/Erlang同步执行Shell命令

我想要执行一个(缓慢的)python脚本,我想要我的Elixir进程阻塞,直到它接收到脚本的所有输出 Elixir的System.cmd/3或Erlang的os:cmd/1是否保证同步?如果没有,是否有其他方法进行同步操作系统调用? 在目标操作系统的命令外壳中执行命令,捕获 命令的标准输出,并将此结果作为字符串返回。 此函数取代了以前的unix:cmd/1;在Unix上 它们是等价的 此命令是同步的。不确定。谢谢

Elixir EXTO架构字段名是否可以与列名不同?

我有一个遗留数据库,我正试图将其引入到EXTO中。其中有一个orders表,其中有一个order\u status\u id列顺序\状态\ id映射到旧系统中的一组常量 我希望MyApp.Orderstruct包含一个Order\u status字段,该字段具有一个自定义类型,可以将整数ID转换为有意义的原子。我已经使用了自定义类型,但我不知道如何将名为order\u status的字段映射到名为order\u status\u id的列 遗留系统仍然在线并使用数据库,因此更改DB模式不是一个选

Elixir 长生不老药睡眠/等待1秒

如何睡眠/等待一秒钟 我能找到的最好的东西是这样的(在iex中): 但我的两次PUT都不会延迟。计时器使用毫秒而不是秒,更新为: IO.puts "foo" ; :timer.sleep(1000); IO.puts "bar" Erlang文档中的计时器文档: 暂停调用此函数的进程的时间量 毫秒,然后返回ok,或者如果 时间是无限的原子。当然,此函数不会返回 马上 由于Elixir 1.3,您可以使用: Process.sleep(1000) 参数以毫秒为单位。计时器模块中有一些有用的帮助

Elixir 元组应该传递给宏吗?

元组的处理方式似乎不一致: defmodule A do defmacro a(x) do IO.inspect x quote do end end end A.A{:A,:b}按预期打印{:A,:b},但A.A{:A}打印{:{},[line:2],:A]}宏以引用表达式的形式接收参数,在Elixir中,长度为2的元组表示为它们自己,其余元组表示为{:{},[value1,value2,…]: iex(1)> Macro.escape {} {:{}, [],

Elixir,将二进制转换为字节数组

我的长生不老药有以下价值: 二进制文件似乎不可枚举。我需要把它转换成一个列表,这样我就可以逐字节地对它进行迭代,比如: [14014315319223725510]。我知道,如果所有字节都是有效的unicode字符,但它们不是,那么to_char_数组就可以了 刚刚开始使用Elixir,非常感谢任何关于将二进制文件转换为列表(字节数组)的建议。看看erlang的 :binary.bin\u to\u list() # [140, 143, 153, 192, 237, 255, 10] 我刚刚

Elixir 显示完整日志(它会被缩短为“…”)

我写过: Logger.info(payload|>inspect) 有效载荷以二进制格式出现,可能相当大 出于调试目的,我需要完整地编写它,但是,我得到: 15:04:31.269 [info] <<10, 36, 102, 102, 100, ...>> 15:04:31.269[信息] 像这样,但我缩短了行以适应(更大)。您需要提供truncate::infinity选项(或您需要的咬大小) 如果你知道答案,并且在发送问题后马上知道答案,那么创建问题有什

Elixir 将几个模型预加载到回购的结果中

我有一个来自第三方库的函数,它从数据库返回数据: cars = get_all_cars #third-party function 在内部,它执行类似于Repo.all(从车中的c)。我想预加载与模型车相关的2个模型。我能做到 `Repo.all(from c in Car, preload: [:driver, :driver_to_car])` 但是我没有访问权限,也不想更改get\u all\u cars的源代码。那我怎么做呢 请注意,汽车和驾驶员之间存在多对多关系。您可以将结构或

Elixir DateTime.now在长生不老药和异位剂中

我想在没有第三方库的情况下获得Phoenix/Elixir中的当前日期时间戳。或者简单地说,我想要类似于DateTime.now()的东西。我如何才能做到这一点?Ecto必须以UTC为单位获取当前时间: iex(1)> Ecto.DateTime.utc #Ecto.DateTime<2016-09-05 13:30:04> iex(2)> Ecto.DateTime.utc(:usec) # include microseconds #Ecto.DateTime<

Elixir 缺少Phoenix特定混合任务/生成器

我缺少Phoenix特定的混合任务,例如mix Phoenix.gen.html $mix help| grep-i phoenix mix local.phoenix#在本地更新phoenix mix phoenix.new#创建一个新的phoenix v1.2.1应用程序 $mix-v Erlang/OTP19[erts-8.1][source][64位][smp:8:8][async threads:10][hipe][kernel poll:false][dtrace] 混合料1.3.4

如何使用Elixir调试器进入函数并执行下一个命令?

Python的pdb允许您使用s单步执行要执行的函数,并使用n转到要执行的下一个函数。如何使用Elixir的调试器实现同样的效果 我在这里尝试的调试技术是IEx.pry。我愿意接受任何其他调试方法(包括使用Erlang)您可能会注意到我在关于Iex.Pry的评论中链接的博客文章中的这段话: 虽然它不是传统的调试器,因为您无法单步执行,但添加 断点等等,对于非生产性应用来说,它是一个很好的工具 调试 什么是长生不老药的调试器?好了,没有这样的东西。@michalmuskala在Elixir中有调试

Elixir Phoenix-连接套接字、连接通道、推送、接收来自其他应用程序的消息

出于学习目的,我创建了这个简单的TODO应用程序,它使用Phoenix频道而不是控制器来CRUD列表和TODO: 代码如下: 现在,我想继续这个实验,从不同的Phoenix(甚至只是Elixir)应用程序向现有的Heroku应用程序发送频道消息,比如创建一个新列表。但在这里我遇到了麻烦 连接Heroku插座的方式是什么(wss://chandothis.herokuapp.com/socket/websocket?token=undefined&vsn=1.0.0)并加入频道“列表” 更新1

Elixir 长生不老药

我是新来凤凰城的。处理一些示例代码。当我将此行添加到控制器时,仍然会通过以下方式发送空字符串: defmodule Rumbl.VideoController do use Rumbl.Web, :controller plug :scrub_params, "video" when action in [:create, :update] ... end 控制台上的输出与有无擦洗线相同: [debug] Processing by Rumbl.VideoContro

另一模块的Elixir/Phoenix端点广播

我有一个频道,当你连接到它时,它在后端做一些事情。一旦后端作业完成,我需要将响应发送回。 这是我的频道: def join("boot", _, socket) do Launcher.start() {:ok, socket} end def handle_in("boot:fetch", params, socket) do payload = %{total_reports: 5} {:reply, {:ok, payload}, socket

Elixir 验证多个日期晚于或等于另一个日期

我想验证结束日期是否总是晚于或与开始日期相同。但是我的自定义验证不起作用。编写此验证的正确方法是什么 defmodule Example.Calendar.VacationPeriod do use Ecto.Schema import Ecto.Changeset alias Example.Calendar.VacationPeriod schema "vacation_periods" do field :ends_on, :date field :nam

Elixir 如何为不同的控制器定义不同的文件上载限制?

我的Phoenix应用程序中有2个页面,它们需要不同的文件上传大小限制(一个页面可以使用默认的8MB限制,但第二个页面需要更高的限制) 从文档中,我可以增加MyApp.Endpoint模块中的限制,如下所示: plug Plug.Parsers, parsers: [:urlencoded, :multipart, :json], pass: ["*/*"], json_decoder: Poison, length: 15000000 但是这种设置是站点范围的。我尝试将整个解

Elixir 配置部分为空且非空

我有这个: defmodule SomeModule do @my_custom_config_section (Application.get_env(:my_app, :common)[:key1][:key2]) IO.puts("@my_custom_config_section debug1: #{Kernel.inspect(@my_custom_config_section)}") IO.puts("@my_custom_config_section

Elixir 集群中的全局动态管理器

我有一个独特的问题,我没有必要在elxir中解决 我需要使用dynamic supervisor在集群环境中动态启动(n)个孩子。我使用libcluster来管理集群,并使用全局进程注册表来查找动态管理器pid。。以下是正在发生的事情: global: Name conflict terminating {:packer_supervisor, #PID<31555.1430.0>} 问题似乎是在两个节点上都启动了监控程序。处理这个问题的最佳方法是什么?我真的需要主管是动态的,这样

Elixir 用HTTPoison插入路由器的POST请求失败

我正在尝试使用HTTPoison向一个插件路由器发出POST请求。我的GET请求成功了,只有帖子失败了。我不确定问题是插头还是HTTPoison: # server.ex defmodule MyServer do use Application use Plug.Router import Plug.Conn, only: [put_resp_header: 3, send_resp: 3] alias Plug.Adapters.Cowboy plug(:matc

Elixir Phoenix 1.4如何在插件中别名Routes.page_路径

我尝试了两次不同的迭代,但在编译时不断出现以下错误: Routes.session_path/2 is undefined (module Routes is not available) 我的代码: defmodule Blackbook.Plugs.RequireAuth do 进口插头 导入菲尼克斯控制器 别名Blackbook.Router.Helpers,as:Routes def init(_参数)do 终止 def呼叫(连接,参数)do 如果连接分配[:当前用户]执行 康涅狄格州

Elixir 如何按值对地图进行排序?

我定义了一个如下所示的地图: %{ "24fe6042-2673-4713-8052-5c06e5ddcce8" => %Parameter{ index: 1, name: "b", }, "28ab6e8b-95b8-4123-af5d-5e988071c383" => %Parameter{ index: 0, name: "a", } }, 如何根据值内的

Elixir 提供重复项的字符串的自定义自动递增字段

我目前正在开发一个应用程序,要求在系统中注册的每个学生在注册时都有一个唯一的注册号,该注册号在每次注册时自动递增。2019年注册的第一名学生的注册号应为01/19,第890名学生的注册号应为890/19,等等 注册数据是从工具上传的,因此它在非常短的时间间隔内到达我的端点,一次可以提交近200次 我意识到在1000份记录中有将近27份重复的注册号。这就是我实现注册号生成逻辑的方式 def registration_changeset(student, attrs) do student

Elixir 如何使用REPLACE_OS_VARS与蒸馏厂一起设置动态自定义vm.args? 背景

我正在尝试在几个elixir节点之间设置集群。我的理解是,我可以通过修改vm.args版本来设置它。我正在使用Diverery构建发行版,并遵循以下文档: 我的rel/vm.args文件如下: -name <%= release_name %>@${HOSTNAME} -setcookie <%= release.profile.cookie %> -smp auto -kernel inet_dist_listen_min 9100 inet_dist_listen_m

Elixir (ArgumentError)无法为<;协会>;

在嵌套表单上呈现变更集错误时遇到一些问题 表单呈现: def new(conn, _) do changeset = Organizations.Organization.create_organization_changeset(%Organization{workspace: %Workspace{}}) render(conn, "new.html", changeset: changeset) end 表单最初呈现为罚款: <%= form_for @changeset,

Elixir 为什么外星生物可以';t使用'预加载查询;分组依据';?

我正在和你聊天。 我有许多房间,这些房间里有会员。用户还可以加入多个房间,因此这是一种多对多关系。 我想要一个房间,预装它的成员,并为每个成员,计算他有多少未读的邮件 以下是我在ecto中尝试执行的请求: room_id = "general" members_preload = from u in User, join: ru in RoomUser, on: ru.user_id == u.id, join: r in

Elixir 截断字符串&x27;很好地';,到*字节数*

假设我有一个字符串,如s=“abcdé”,我想将其截断为若干字节,在本例中为五(5)。但是,因为最后一个“grapheme”由多个字节组成,我希望byte\u truncate\u(s,5)=“abcd”是正确的,因为使用二进制部分并拆分最终的grapheme似乎不明智。我认为没有内置的方法可以做到这一点,但您肯定可以手动完成 def take_bytes(str, limit) do str |> String.graphemes() |> Enum.r

Elixir Can';Don’不要将长生不老药凤凰作为混合发行版

我无法从混合版本启动项目。但是如果我运行mixphx.server 我可以通过执行以下操作从空项目中重新创建此问题: mix phx.new asdf--伞形--无外挂--无html--无网页 然后编辑mix.exs并添加发布部分: def项目做什么 [ 应用程序路径:“应用程序”, start_permanent:Mix.env()==:prod, deps:deps(), 版本:“0.1.0”, 发布:[ 超级雨伞:[ 应用程序:[ 永久的, mega_web::永久 ] ] ] ] 结束

Elixir Phoenix Live View路由您可以指定http谓词吗?

嘿,我正在处理这个位于: 尝试添加实时更新功能以制作新帖子时,我遇到了以下错误: no route found for POST /posts/new (ChirpWeb.Router) 发生这种情况的原因似乎相当明显:我没有POST:/posts/newroute中的mix phx.routes post_index_path GET /posts/new Phoenix.LiveView.Plug :new pos

Elixir Exto连接到现有数据库

在下面的链接中做了一些研究之后 我有点困惑如何在长生不老药中使用异位素 总是有一个声明为 defmodule Weather do use Ecto.Model schema "weather" do field :city, :string field :temp_lo, :integer field :temp_hi, :integer field :prcp, :float, default: 0.0 timestamps end e

Elixir 如何在没有Phoenix的情况下配置Plug.Static

我试图弄清楚如何在没有任何其他框架(Phoenix、Sugar等)的情况下配置Plug.Static;只有牛仔、塞子和长生不老药。我只是不知道如何把东西放在路由器里 plug :match plug Plug.Static, at: "/pub", from: :cerber plug :dispatch get "/" do Logger.info "GET /" send_resp(conn, 200, "Hello world\n") end Plu

Elixir Phoenix EXRM发行版WebSocket不工作

我已尝试使用EXRM发布我的应用程序。除了无法启动的WebSocket外,整个应用程序都在运行 这是浏览器中的错误(Chrome) 到“ws://localhost:4001/socket/WebSocket?token=undefined”的WebSocket连接失败:WebSocket握手期间出错:意外响应代码:403 变量标记似乎有问题。 当开始使用Mix phoenix.server时,一切都很好。但发布命令时: $ mix deps.get $ mix compile $ MIX_EN

Elixir OTP:在名为的主管下启动GenEvent

我试图创建一个具有特定名称的GenEvent进程(对于这个问题,我将使用{:global,:x})。如果我正常创建GenEvent,例如GenEvent.start_链接([name:{:global,:x}]),我可以访问该名称的GenEvent。那很好。但我还想在监督树下创建GenEvent。为此,我将genevent放入一个Supervision.SpecworkerSpec,然后事情就发生了 iex(1)> {:ok, sup} = Supervisor.start_link([]

Elixir 我如何通过一个值从列表中获取元组?

我有一个phoenixreq_headers列表,其中包含像{key,value}这样的元组。如何通过列表中的键获取元组的值?就像这样: [{"host", "localhost:4000"}, {"user-agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0"}, {"accept", "application/json, text/plain, */*"}, {"accep

Elixir 凤凰能称之为长生不老药应用程序吗?

我有一个Elixir应用程序在节点集群上运行(n1@127.0.0.1及n2@127.0.0.1),我们将其命名为Myapp.Server 在它里面,我有一个模块run(parameter),它的目标是联系Rest Web服务来获取一些数据(parameter是要获取的数据的数量),将其转换为XML,然后将其放入一个文件,最后将其传输到外部FTP 召唤 Myapp.Server.run(any_number) 因此给了我预期的结果 我刚刚开始学习长生不老药和凤凰,但有两个问题不断出现在我的脑海

Elixir 迁移以更改“引用”列上的“删除”选项

我和菲尼克斯一起踢球,有很多联系。我通常在_delete::delete _all上做,作为参考列的一个选项。但是,如果我改变主意,希望以后为nilify\u all更改它,有没有办法在迁移中实现这一点 用于创建表的迁移: def change do create table(:messages) do add :body, :text add :sender_id, references(:users, on_delete: :delete_all)

Elixir 凤凰城上市;如何显示外键名称而不是外键id 模板代码包括:

与其他数据访问库相反,Ecto非常明确。除非您直接请求,否则它不会为查询中的结果获取任何关联 要请求它们,您有两个选项:构建自己的查询或只需使用preload Preload也有两种版本-一种是在现有查询中附加此命令: Template code includes: <%= for shift <- @shifts do %> <tr> <td><%= shift.user_id %></td> <td>&

如何在Elixir中运行迁移文件?

我得到了文件2018042309126\u create\u reference\u book.exs defmodule Simula.Repo.Migrations.CreateReferenceBook do use Ecto.Migration def change do create table(:reference_books) do add(:owner_id, :integer, default: 0) add(:owner_entity

Elixir 使用ExUnit检查状态代码失败,但实际REST测试成功

我正在编写一个控制器函数,它将在呈现json对象或错误对象(如果失败)之前检查条件(关键字有效) 路由器.ex scope "/api", DongNghiaWeb do pipe_through :api scope "/tim_kiem" do get "/tu/:word" , APIWordController, :search_word [...] def search_word(conn, %{"word" => word}) do con

Elixir 无法加载缓存X模块

我正在尝试在我的phoenix/elixir web应用程序中使用cachex作为缓存层。当我打开交互式控制台iex并键入Cachex.get:my_cache,key 它表明 (UndefinedFunctionError) function Cachex.get/2 is undefined (module Cachex is not available) 我遵循了此处所示的所有步骤听起来您在打开控制台时没有运行应用程序cachex文档只是说iex。实际上,您应该使用iex-S mix启动

Elixir将更改为目录并运行shell脚本

在elixir代码中,我希望将位置更改为目录并在那里运行脚本 File.cd!("/opt/test/", System.cmd("./bin/myscript.sh", [])) File.cd的第二个参数!是一个函数,我认为System.cmd可以满足作为函数的要求,但是我使用的编辑器说这个语句永远不会工作 是否有更简单的方法来更改目录并执行shell脚本?如何 System.cmd("/opt/test/bin/myscript.sh&q

上一页 1 2 ...  34   35   36   37    38   39   40  ... 下一页 最后一页 共 125 页