如何在Elixir中使用嵌套数据结构

我正在尝试使用Elixir中的GoogleMaps地理编码API,虽然我对该语言有点陌生,但使用嵌套数据结构却让我难以理解 我使用HTTPotion从地理编码端点获取JSON,并使用JSEX将其解析为Elixir数据结构(一系列嵌套列表和元组) defmodule Geocode do def fetch do HTTPotion.start result = HTTPotion.get "http://maps.googleapis.com/maps/api/geocode

Elixir 管道贴图正在尝试调用原始函数

以下代码用于读取文件并为每行创建项记录: defmodule Ship do defrecord Item, product_code: 0, quantity: 0, destination: "" def load_data do File.read!("data") |> String.split |> Enum.map &(String.split &1, ",") |> Enum.map &am

Elixir 相当于IO.inspect函数,它只返回字符串而不是打印给定的列表、映射或关键字列表?

长生不老药新手。我一直在尝试将关键字列表转换为字符串。我可以这样做 IO.inspect([name: "John Doe"]) 但它会将字符串打印到控制台。是否有只返回字符串的函数 inspect([name: "John Doe"]) 它是由内核模块定义的,因此会自动导入。请注意,iim,IO.inspect默认情况下会打印。默认情况下,Kernel.inspect不会。因此,要在终端上获得相当于IO.inspect,您需要IO.puts(inspect(,pretty:true))。另

Elixir 在phoenix项目中,在何处放置辅助函数?

在phoenix/elixir项目中:什么是放置辅助函数的好地方。例如:我使用来处理日期,但我必须对返回的结构进行一些转换,以便将其与我的DB驱动程序一起使用(一个使用键:min,另一个使用键:min,等等)。我不想在每个模型中重复这段代码,我将编写一个简单的函数来实现这一点。放这个的好地方是什么?是否仅在/lib文件夹中的模块中?关于如何组织这项工作,有什么指导方针吗?我认为还没有指导方针。您可以创建按主题分组的模块,如MyApp.TimexHelpers,然后在实际需要使用帮助程序的位置导入

Elixir 如何从elixr phoenix framework应用程序中的另一个节点访问驻留在节点中的状态?

从另一个节点访问节点状态的最佳方式是什么? 我有一个用Phoenix框架(elixir Phoenix)开发的应用程序。我想在多个节点上运行这个应用程序来管理流量。我正在利用phoenix提供的套接字的功能,因此该应用程序创建了许多套接字 我们的应用程序需要存储用户的状态信息。在他的帮助下,我创建了一个监视程序,在监视程序的状态下维护状态信息。我必须通过访问状态信息来检查用户是否在线 当我进行多节点设置时,用户可能连接到任何节点。在这种情况下,要检查用户的在线状态,我需要从所有节点访问状态信息。

Elixir 混合应用程序作为OTP应用程序的配置文件

我有一个OTP申请(实际上是ChicagBoss)。我正在尝试将Phoenix应用程序合并到它中(只是作为休闲OTP应用程序) 我认为大多数应用程序都会启动,但我得到了由于缺少配置文件而导致的错误。如何从外部为混合应用程序提供配置文件?特别是当我试着从rebar运行它时。如何提供目录?当使用Erlang project时,您不应该使用mix configs,而应该使用Erlang configs。在您的特定示例中,boss.config文件。在boss.config中,您有一个元组列表: [{a

Elixir 在Phoenix中使用插头执行特定操作

如何使用插件在phoenix上执行特定操作。如果想在特定操作中使用插件,或者相反,不想在特定操作中使用插件如文档中所述,我们可以使用保护子句 plug/2支持保护,允许开发人员将插件配置为仅在某些特定操作中运行 第一个插件仅在显示或编辑操作时运行。除索引操作外,第二个插件将始终运行 我在搜索了一下后发现了这个。这让我找到了医生。希望它能帮助别人 plug :log_message, "before show and edit" when action in [:show, :

函数中的Elixir关键字列表';s论点

给定一个函数: def foo(a, opts \\ []), do: opts 我可以这样调用此函数: foo 1, b: 2 我知道b:2与[b:2]相同, 但我不能在iex中这样做,例如: iex(1) a: 2, b: 2 ** (SyntaxError) iex:1: syntax error before: a 所以我想知道,为什么函数参数中的关键字列表是 不同的?TL;DR这是语法分析器的要求,函数调用中有一个语法糖,可以省略括号关键字s本身是相同的 关键字列表本身是相同的

Elixir “长生不老药”;“失去”;过程

如果我创建一个文件loop.exs: Enum.each(1..40000, fn (n) -> spawn fn -> IO.puts(n) end end) 然后运行它,计算输出行数: elixir loop.exs | wc -l 在随后的运行中,我可能会看到预期的40000行,但我可能会看到更少的行。在我的测试中,我看到了39752,39934,39673,等等。这对我来说意味着某些进程无法调用IO.puts,所以它们发生了什么,为什么我没有警告它们丢失了,我做错了什么导

如何在Elixir中测试多行输出?

如何测试以下代码 ["one", "two", "three"]) |> Enum.each(&IO.puts(&1)) one two three :ok 我的测试目前看起来是这样的,但是失败了,因为IO.put返回的是:ok,而不是字符串,并且可能不包括完整字符串中的换行符 assert ["one", "two", "three"]) |> Enum.each(&IO.puts(&1)) == """ one two three """ 对于

Elixir 为什么出错--未定义的函数defstruct

我在这些模块中尝试定义一个结构: defmodule A do defmodule B do defstruct :id, :name end end 为什么会出错 undefined function defstruct/2 为什么会出现此错误?Elixir将defstruct:id,:name解释为使用两个参数调用defstruct,这是未定义函数defstruct/2中的/2部分 您要做的是将单个参数传递给defstruct,即字段名列表: defmodule A do

Elixir会生成一个带有“?”的url&引用;而不是",/&引用;

我有这条路线: resources "/my_items", ItemController, only: [:index, :show] get "/pages/:page_number", ItemController, :page, param: "page_number" 我在ItemController中为页面设置了操作,这是一个简化版本: def index(conn, p) do # ..... def page(conn, %{"page_number"

Elixir 如果是当前请求,如果是AJAX请求,如果是';这是邮政局的

我在谷歌上搜索过,但什么也没找到。如果当前请求是ajax请求并且是POST请求,如何在控制器中签入操作?对于ajax,可以检查x-request-with头的值是否为XMLHttpRequest if "XMLHttpRequest" in get_req_header(conn, "x-requested-with") do ... end Plug.CSRFProtection 对于HTTP方法,您可以使用conn.method: if conn.method == "POST" do

Elixir 如何在长生不老药测试中使用常数?

我在我的主模块中定义了一个常量: @end_digits_adjusters [11, 12, 14, 21, 22, 23] 下面是我如何测试它的: defmodule PriceOptimizerTest do use ExUnit.Case doctest PriceOptimizer test "get_random_adjuster() randomizer" do adj_num = PriceOptimizer.get_random_adjuster()

Elixir Phoenix 1.3中的友好URL未定义错误

我正试图根据以下指南在我的应用程序中实现友好的URL。 正在db中根据帖子标题ok创建slug,但我无法在slug查找时显示帖子,并出现以下错误: function Driverless.Articles.get_by/2是未定义的或私有的 post_controller.ex ... def show(conn, %{"id" => id}) do post = Articles.get_by!(Post, slug: id) render(conn, "show.h

Elixir 如何重构替换参数模式匹配的函数

我有这个功能: def update(%Evento{} = evento, attrs, dataSchema) do evento |> dataSchema.changeset(attrs) |> Repo.update() end 它与%Evento{}结构绑定。 我想让它独立于结构,而是传递一个参数,这样在调用函数时,我可以传递%Evento{},%News{},%Contact{}或任何我想要的结构,同时保持相同的功能/模式匹配检查。您可以使用模

Elixir 获取当前环境名称

在Phoenix框架中,如何获取当前环境的名称 我已经尝试使用系统读取env变量。获取_env(“MIX_env”),但该值并不总是设置的。您可以使用: Mix.env()不适用于生产环境或其他使用已编译版本(使用Exrm/Distillery构建)的环境,或者当Mix不可用时 解决方案是在config/config.exs文件中指定它: config:your_应用程序,env:Mix.env() 然后,您可以在应用程序中获得环境atom,如下所示: Application.get_env

Elixir 在Ecto中添加关系(Phoenix 1.3)

我正在努力建立一对多的关系。用户可以创建任意数量的帖子。凤凰城1.3,星外2.2.1 #migrations defmodule MyApp.Repo.Migrations.CreateUsersPosts do use Ecto.Migration def change do create table(:users) do add :email, :string, null: false add :handle, :string, null: fals

Elixir Task.async|u stream |>;什么时候下车?

我有一条管道,看起来像 digits |> Task.async_stream(__MODULE__, :filter, [s, values], timeout: :infinity) |> Stream.drop_while(fn {_, k} -> k == :contradiction or k == [] end) |> Stream.take(1) 这里是否定义了任何顺序?或者只是返回不满足while条件的第一个过滤器的结果将被返回?Task.async\u

Elixir 凤凰城1.3.2/长生不老药1.6.5外星模式“;协议外部可查询未实现“&引用;给定模块不存在";

早上好 从Phoenix和Elixir开始,我们在Phoenix V1.3.2中使用Ecto时遇到了在线教程的问题 我们已使用以下内容设置应用程序 mix phx.newAPI--没有早午餐--没有html--数据库=mysql 在本教程之后,我们开始使用EXTO,但是我们已经了解到有一些突破性的变化,但无法找出下面错误的原因 **(退出)引发了一个异常: **(Protocol.UndefinedError)未为Api.User实现协议EXTO.Queryable,给定模块不存在。这 协议实现

Elixir:当应用程序关闭时停止外部系统进程

我们有一个依赖于Tomcat服务器的elixir应用程序。我们当前的策略是在应用程序启动时使用System.cmd调用启动.war文件。这是可行的,但是如果应用程序(或者更具体地说,运行startup命令的GenServer)退出,我们也希望关闭服务器。如何捕获GenServer的退出并在退出之前运行另一个System.cmd调用?您需要在那里执行回调 在这里,您甚至可以处理各种类型的终止原因,如:normal、:shutdown或其他自定义原因。您只需要以下内容: module MyServe

Elixir 比较EXTO中的十进制值

我有下面的EXTO模式和查询,我正在尝试找出比较十进制值的正确方法 模式: schema "products" do field(:price, :decimal) end from( p in Product, where: p.price <= ^max_price ) 查询: schema "products" do field(:price, :decimal) end from( p in Product, where: p.price <=

是否可以启动交互式elixir shell并立即调用函数?

在elixir中,您可以通过以下命令在应用程序的上下文中使用iexshell iex -S mix 这个命令非常方便,让我们可以在交互式shell中使用应用程序函数 我想知道是否可以用参数启动交互式shell,或者是否可以让应用程序在用户可以与shell交互之前调用一些函数 例如,假设我有一个名为MyApp的应用程序,我用iex-smix启动它。而不必手动将命令输入shell,例如 iex()>导入MyApp.Module iex()>别名MyApp.Module.OtheName iex()

Elixir 在凤凰城有类似于“彪马德夫”的词吗?

我想在自定义域和子域下运行我的开发服务器,例如:https://api.custom.local/。在Rails中,我会使用puma-dev,在Phoenix中是否有与此等效的工具?编辑您的配置/dev.exs文件。更改MyApp.Endpoint的配置。您需要添加或编辑:url键。您可以执行以下操作 url: [host: "api.custom.local", port: 4000] 然后你就可以像平常一样启动你的应用程序了。我跟踪了Justin,并对puma dev进行了一些研究 我们可

Elixir 在Rails上创建数据库的Ecto/Phoenix上的多态性

我很难在外胚层中实现多态性。我的主要问题是,我试图在Phoenix中处理多态关联,但数据来自我们的——let's be honnest——一个基于Rails的古老主应用程序使用和创建的数据库 其他模型都处理得很好,在Rails和Phoenix端读取或写入数据都没有问题 除了那些具有多态性的。我花了很多时间阅读了CTO的文档,我知道“rails方式”不是“正确的方式”,但我有点被困在这里,因为我的模型已经写在rails端(一些主题已经存储了数百万行) 因此,我在Rails中有一个抽象模型元素,它表

如何查询elixir中的空或零关联

我正试图通过office\u id获取可用的会议室列表,其中可用性取决于预订选择的开始时间和选择的结束时间 这是我的模式 defmodule MyApp.Context.Booking do schema "bookings" do field :start_time, :utc_datetime field :end_time, :utc_datetime belongs_to :meeting_room, MyApp.Context.MeetingRoom, fo

如果elixir中有错误,调用多个API并返回错误列表的好方法是什么?

我有一个elixir项目,我想实现一个函数,它将调用多个外部API并返回错误列表 假设我有几个调用api函数: 通过_api_a创建_ 通过_api_b创建_ 通过_api_c创建_ ... 每个api函数将返回:ok或error。我的主函数将返回[错误a,错误b,错误d,…] 目前我的解决方案是使用++连接每个API调用。我有一个case函数来控制返回 例如: def create_via_api_a do case API.create(xxx) do :ok -> []

Elixir 如何在目标进程不运行时捕获GenServer.call(目标,…)失败';不存在

在我的应用程序中,所有登录的用户都由GenServer表示,我称之为UserAgent,它基本上将每个用户的状态保存在内存中。所有这些进程都是基于一个唯一ID在集群的分布式注册表中注册的。每当用户执行某些操作时,客户端应用程序都会发送要与用户ID一起执行的操作。在服务器端,控制器检查参数(强制、可选、语法等),并最终调用UserAgent。The_action(…)函数只向服务器发送一条消息,其中包含要执行的操作:GenServer.call(通过\u tuple(id),{:The_actio

Elixir 不使用片段查询嵌入式模式

假设我们有模式: schema "organization" do embeds_one :details, Detail timestamps() end # Detail schema embedded schema do field :name, :string field :description, :string end details字段作为jsonb字段存储在数据库中 现在,假设我想通过名称查询一个组织,目前我唯一能做的就是使用片段: Or

Elixir 如何获取GenServer终止灵丹妙药

我有一个带有基本设置的DynamicSupervisor,我正在启动一个作为 Supervisor.start_child(Recording.WorkerStarter, %{ id: String.to_atom(detailed_camera.name), camera: detailed_camera, sleep: detailed_camera.sleep }) 并将其终止为 name |> Process.whereis() |> case do ni

Elixir 有没有办法在ExUnit中使用共享示例?

在中,可以使用shared\u examples创建测试并从多个位置引用它。它大大简化了开发人员的生活 有没有办法在ExUnit中使用共享示例?test宏做了一些簿记,但最终它们只是为测试定义了一个函数。ExUnit测试代码与任何其他Elixir代码一样,因此您可以使用所有通常用于消除重复的东西。您可以使用宏为自己定义类似于共享\u示例的公共测试,也可以使用函数提取在测试之间重复的公共代码 关于如何做到这一点,是否有相关的惯例?假设我有一些参数化测试和一组我想用于所有这些测试的参数集。我可以很容

Elixir 匹配字符列表的开头

在IRC中,要使连接保持活动状态,您必须使用PONGs回复PINGs,因此如果服务器向您发送PING:IRC.whater.com,您必须发回PONG:IRC.whater.com,否则服务器将关闭您的连接 我使用字符列表是因为(如果我错了,请纠正我),这就是我的TCP套接字返回的结果 因此,我对ping消息的检查的实现是,它试图返回我需要的用于pong的服务器: [?P、?I、?N、?G、?主机]=消息 这在case块中的子句中。在我看来,这个问号后面跟一个空格看起来非常狡猾,但它确实有效

无法在Exto/Elixir中正确连接

我有一个ParentModel,ChildModel1和ChildModel2。ParentModel有许多ChildModel1,ChildModel1有许多ChildModel2 data = ChildModel2 |> join(:left, [chmd2], chmd1 in assoc(chmd2, :child_model1)) |> where(ChildItem2, [a], a.child_model1.parent_mod

Phoenix Framework Elixir:如何在javascript中使用helper函数

我在视图中定义了一个助手函数: def usernames(id) do post = Repo.get(Post, id) |> Repo.preload(comments: :user) usernames = for comment <- post.comments do comment.user.username end end 那么在js.erb中应该是: data = <% @usernames %> $('#comment').doT

Elixir 模块EXTO.Query未加载,无法找到

我正试图通过ElixirShell导入exto.Query,下面是凤凰城编程书中的一个示例练习,它给了我这个错误 iex> import Ecto.Query ** (CompileError) iex:3: module Ecto.Query is not loaded and could not be found 有人知道这是不推荐使用的还是以其他方式导入的吗?iex默认情况下不会加载项目或其依赖项,即使您是从项目内的目录启动它。为了在iex中加载项目及其依赖项,您需要执行iex-

Elixir 将函数传递给dempl“;至于;选项

我有以下代码: defprotocol Reversible do @doc "Reverses data structure" def reverse(term) end defimpl Reversible, for: [List, Map] do def reverse(term), do: Enum.reverse(term) end 它工作得很好,但我想以某种方式列出所有可枚举类型,并在其他地方使用它们 所以我试着这样做: # constants.ex defmodul

Elixir 具有多个子句,并在一个或多个子句中定义默认值

我有一个函数confirm_user,可以用参数%user{}或nil调用它 def confirm_user(%User{} = user, attrs \\ %{}) do Repo.update(User.confirm_changeset(user, attrs)) end def confirm_user(nil, attrs \\ %{}) do {:error, :not_found} end 但根据这个定义,我得到了一个错误: def confirm_user

如何在Elixir Exto中使用Scrigener进行查询和分页

我正在使用Scrivener进行外部分页。 首先,我想在电话簿中为联系人分页。所以我喜欢这个 schema "orders" do field :counts, :integer field :status, :string embeds_many :line_items, LineItem, on_replace: :delete timestamps() end 在phonebook_controller.ex中 #显示联系人列表 def sho

具有相对路径的Elixir/Phoenix文件上载文件夹

我在URL提示下引用了 我有同样的问题。我想知道为什么我不能将上传的文件移动到dest文件夹。 在绝对路径的情况下,它工作。 如何设置相对路径设置 上传_controller.ex defmodule MyAppWeb.UploadController do use MyAppWeb, :controller def create(conn, %{"user" => user_params}) do IO.inspect user_params if uploa

Elixir 菲尼克斯:有没有办法在另一个视图中别名一个视图?

所以我尝试在另一个视图中为一个视图别名。但是我得到一个错误,我调用的json无法呈现 员工观点 edtr_视图 第二个参数应该是您试图调用的视图。您当前正在调用_MODULE _,它将扩展到从中调用的模块。在您的情况下,EmployeeView。您需要的是以下内容 render_one(employee.edtr, EdtrView, "edtr.json") def render("edtr.json", %{edtr: edtr}) do %{ id: edtr.id, m_in:

检查列表元素是否在另一个列表中-Elixir

如果我有两份清单: 第一个列表=>[1,2,3] 第二个列表=>[3,4,5] 我希望返回true,因为它们都包含3?如果将3替换为6,它将返回false,因为没有匹配的元素 当前尝试 Enum.member?(first_list, fn(x) -> x == second_list end) 外星查询: user_teams = from( t in MyApp.Team, left_join: a in assoc(t, :accounts), where: p.own

Elixir-在Mac上设置MIX_ENV会产生函数clauseError

我无法让我的Elixir应用程序从Mac上的本地环境读取MIX_ENV变量。例如,运行命令 $ MIX_ENV=prod iex -S mix 引发以下错误: ** (FunctionClauseError) no function clause matching in String.split/3 The following arguments were given to String.split/3: # 1 nil #

Elixir 如何在exs文件中定义一个混合任务,并且仍然运行它?

如果我在hello.ex中定义了下面这样的混合任务,那么它可以正常运行 defmodule Mix.Tasks.Hello do use Mix.Task def run(_), do: IO.puts "hello" end 但这在“hello.exs”类型的文件中似乎不可能?或者有没有一种方法可以在没有“.ex”扩展名的情况下执行混合任务。我不知道“没有编译”是什么意思。Elixir确实是一种编译语言,没有编译它无法执行任何操作 除了Elixir文件扩展名.ex,Elixir还支持

Elixir PostGIS数据存储不正确

所以我有一个很奇怪的问题。我将LatLong作为double从我的移动应用程序发送到我的phoenix后端。后端在迁移中已将类型定义为:geography。然后我将从前端获得的数据如下所示 %Ecto.Changeset{ valid?: true, changes: %{lat_long_object: %{latitude: latitude, longitude: longitude}} } -> point = %Geo.

Elixir 凤凰城:混合星。创建失败

我在凤凰城乞讨。我有一个PostgreSQL数据库,用户名为“postgres”,密码为“root”。 它们在config/dev.exs文件中被正确修改 但是,当我运行“mix-exto.create”命令时,出现以下错误: 16:10:29.607 [error] GenServer #PID<0.218.0> terminating ** (RuntimeError) Connect raised a FunctionClauseError error. The excepti

Elixir 如何搭配长生不老药信条中的两条线

因此,我正在进行一项自定义检查,旨在“识别缺少描述的graphql类型/字段定义” 代码如下所示 defmodule MockProject.MockModule do @moduledoc false node object1(:random_object) do @desc "random description" field :random_field, non_null(:random_name) do

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