Elixir-GenServer,初始状态为其他几个GenServer PID

我在自动启动监督树时遇到了死锁问题。一个GenServer的初始状态是树中另一个主管的子worker。代码如下: 主管和工人: defmodule Parallel.Worker.Supervisor do import Supervisor.Spec def start_link do # Start up a worker for each core schedulers = :erlang.system_info(:schedulers) children

Elixir 从列表中获取随机元素

我基本上是在寻找一种相当于Ruby的长生不老药。让我这样做的东西: list = [1,2,3,4,5,6,7] sample(list) #=> 4 sample(list, 3) #=> [6, 2, 5] 我在这两个列表中都没有找到任何内容。更新的答案 正如JoséValim在《Elixir 1.1》及以上版本中所说,您现在可以使用以下方法从列表中获取随机元素: -用于获取单个随机元素 -用于获取多个随机元素 示例: list |> Enum.shuffle |

Elixir 外部关系,不插入外键ID

副食品, 我正在学习EXTO,我正在尝试将关联的记录插入到另一个表中。这有点正常,因为正在插入记录,但外键字段为空 代码: 变更集的检查 %Ecto.Changeset{action: nil, changes: %{name: "Kategory 1"}, constraints: [], errors: [], filters: %{}, model: %{__meta__: #Ecto.Schema.Metadata<:built>, __struct__: Hangman

如何使用Elixir语言将一个模块加载到另一个模块中?

我很难用Elixir语言将一个模块加载到另一个模块中 例如,我有两个文件,如下所示: $elixir b.ex ** (CompileError) b.ex:2: module A is not loaded and could not be found a、 前 b、 前 我试图处决b.ex。然后我得到了如下所示的错误: $elixir b.ex ** (CompileError) b.ex:2: module A is not loaded and could not be found

elixir具有管道运算符的多个参数

我试图加载一个非常大的JSON文件并将其绑定到一个变量,下面是我失败的代码 deps = File.open("../DepMap.json") |> IO.read(:all) |> JSX.decode 我要回来了 ** (FunctionClauseError) no function clause matching in :io.request/2 (stdlib) io.erl:556: :io.request({:error, :enoent}, {:

Elixir 使用exto.Changeset.put\u assoc生成默认组

我有一个用户和一个组模型(用户有许多组)。创建新的用户时,我想为该用户构建三个默认的组。让我们称它们为x,y和z(这将是名称) 我想exto.Changeset.put\u assoc是这项工作的合适工具。对的如何使用它在create功能中创建组 web/controllers/user\u controller.ex […] def create(conn,%%{“user”=>user_params})do changeset=User.changeset(%User{},User_参数)

验证Phoenix/Elixir中的单个字段?

在我的phoenix应用程序中,我需要通过名称验证单个字段。我之所以需要这个,是因为我有一个通过ajax机制进行更新的机制,在这个机制中,我一次只编辑/更新一个字段 我该怎么做?也就是说,给定一个字段名,我如何验证该字段以及仅验证单个字段?请注意,根据我的验证逻辑,即使字段为空,该字段的值也可能有效。我想我正确理解了您的问题 假设您有一个用户模型,其中包含字段名称、年龄、经验,并且无论何时更新/编辑,您都会发送一个用户id和更改 在更新方法中,我们将按用户id获取用户,并放置此更改并验证更改集(

Elixir 该应用程序未在observer中列出

虽然phenix服务器正常启动,但我无法在observer的应用程序列表中看到它 我所做的是: elixir -S mix phoenix.server 而且,它是另一个终端: iMac:~ Apple$ iex Erlang/OTP 18 [erts-7.3] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] [dtrace] Interactive Elixir (1.2.4) - pres

Elixir Phoenix Presence通过交替元模式跨多个通道跟踪用户

我正在构建一个whatsapp克隆,但我很难找到一些关于存在的东西 我有两个频道: channel "chats:*", Typi.ChatChannel channel "users:*", Typi.UserChannel 用户始终连接到用户:…频道,如果他在应用程序中,在加入时,我开始跟踪他的状态: def join("users:" <> user_id, _payload, socket) do send self(), :after_join

Elixir 在控制器中呈现静态html页面

是否有方法读取和呈现位于以下位置的静态html文件: 控制器中服务器上的另一部分?我不希望重定向或通过静态页面功能提供此页面 您可以使用该函数发送自定义html内容。使用读取文件并将内容发送到客户端 def index(conn, _params) do html(conn, File.read!("path/to/file.html")) end 希望这有帮助。您应该使用它。与将整个文件读入内存,然后使用Phoenix.Controller.html/2将其发送相比,此函数将更有效地发送

Elixir 卫报-“;“记住我”;使用刷新令牌

我正试图实现@hassox在以下GitHub问题中给出的建议: 用户登录后,我将生成一个令牌并将其存储在具有ttl的cookie中: claims = Guardian.Claims.app_claims |> Guardian.Claims.ttl({30, :days}) {:ok, token, full_claims } = Guardian.encode_and_sign(user, :remember, claims) thirty_days = 86400 * 30

Elixir 在控制器内启动进程

考虑这样的模块: defmodule Sampple do def start(nick, password, state \\ %State{}) do {:ok, client} = ExIrc.start_client! GenServer.start(__MODULE__, [%{state | client: client, nick: nick, pass: password }] ) e

如何在服务器上用Phoenix/Elixir填充数据库?

我用的是肝脏。如何在服务器上的Phoenix/Elixir中插入种子(填充数据库)?我知道有一种方法是运行Phoenix控制台。应该是这样的吗? 我不想要一个你认为有效的方法,但是很久以前没有尝试过或尝试过的方法 如果有另一种不涉及肝水肿的方法,也可以 混合运行priv/repo/seeds.exs在服务器上不起作用。检查文件/priv/repo/seeds.exs。 您可以在其中编写任何您想要的内容,并使用 mix run priv/repo/seeds.exs 编辑:对于edeliver

Elixir 为什么动态定义的函数没有定义?

我正在尝试使用模块的\u1/1宏在\uuu中动态定义一些函数。这些函数的名称将由opts参数定义,opts参数将使用\u\u/1宏提供给\u\u。大概是这样的: defmodule MyModule do defmacro __using__(opts) do names = Keyword.get(opts, :names) Enum.each(names, fn(name) -> quote bind_quoted: [name: name] do

Elixir 如何转换身体后的反应以获得元素?

我正在使用Elixir中的HTTPoison发出web请求: HTTPpoison.post "http://localhost:3000/mymodels"," {\"param1\": \"#{value1}\" , \"param2\":\"#{value2}\"} ", [{"Content-Type", "application/json"}] 这是我得到的答复: {:ok, %HTTPoison.Response{body: "{\"id\":46,\"result\":18

Elixir 通过ajax调用.ex或.exs

我想在凤凰城做些类似的事情 function checkFile() { $.ajax({ type: 'POST', url: '/check.ex', data: {'filename':'file.png'}, error : function(){ s

Elixir Assert conn在凤凰城被重定向

请im写一个测试,将检查用户是否重定向到一个特定的URL,如果他们登录并试图访问某些URL #auth.ex def authenticated_user(conn,_opts) do if conn.assigns.current_user do conn |> redirect(to: Helpers.user_path(conn,:dashboard)) |> halt() end conn end # router.ex pipe_thr

Elixir 重新转换现有的化身

我用于将化身图像附加到用户模型: defmodule Abc.User do use Abc.Web, :model use Arc.Ecto.Schema schema "users" do field :first_name, :string field :last_name, :string field :avatar, Abc.Avatar.Type [...] 我从我想要为现有用户更改的化身转换缩略图。我更改了转换规则,需要重新转换它们

Elixir 外星:我现在可以将外星从2.1.6更新到2.2.2吗?如何更新?

目前,我已经用Phoenix 1.3框架安装了Ecto 2.1.6。但我发现,Ecto有一个2.2.2版,它支持:忽略变更集的操作类型,例如,如果没有变更,它允许丢弃它们。这个特性是我的项目所需要的,但不幸的是我无法更新Ecto。我试着混合deps.update-exto,混合deps.unlock-exto,混合deps.update-exto——等等 那么怎么做呢?而且也可能是这不安全?虽然在2.2发布页面上,我看到它专门用于修复bug,所以不应该有破坏性的更改,但谁知道呢 编辑: mix.

Elixir 将左外部联接查询转换为EXTO

我不知道如何将SQL语句翻译成EXTO 凤凰城设置 SQL语句 选择days.date\u值,periods.name FROM days 左侧外部联接插槽打开(days.id=slots.day\u id) 左外连接周期打开(slots.period\u id=periods.id和 (periods.country_id=1或 期间(联邦(州(id=5)) 其中days.date_值>='2017-01-01'和 days.date\u值Aleft\u连接默认情况下执行left-OUTER连

Elixir 长生不老药:尝试捕捉出口信号

虽然Elixir鼓励我们不要使用try/catch块,但有时需要它们。在我编写的一个应用程序中,我使用了以下try/catch方法 try do message = GenServer.call(via, :get_messages) {:ok, message} catch :exit, _ -> {:error, "Process uuid no longer exists"} end 在catch部分,我将:exit,-改为{:exit,{u}认为它们是同一个东西,

Elixir 遍历枚举并提取值

需要将上述枚举中的所有值提取到一个列表中这里有一种方法可以使用模式匹配、for和list进行此操作。keyfind/3: list_of_comboboxes=[ {"option", [{"value", ""}, {"selected", "selected"}], ["Select Color"]}, {"option", [{"value", "White"}, {"data", "White"}], ["White"]}, {"option", [{"value", "Red"},

Elixir 长字体规格的代码样式

对于长度超过80个字符的长typespec,哪种代码样式 @spec function(list() | map(), list() | map(), list() | map(), list() | nil) :: map() 下面是来自Enum模块的示例。你可能想做类似的事情 运行mixformat,它将根据代码样式对其进行格式化。 @spec chunk_while( t, acc, (element, acc -> {:

Elixir 如何利用phoenix实现两类参数的模式匹配

我想匹配两种参数集。 如果参数来自IndexController,则仅接收主id。 但如果参数来自与index\u路径(@conn,:index,main\u id)相同的页面,请选择框值 IndexController.ex index.html.eex 似乎您需要处理可选参数,这就是我要做的: defmodule IndexController do def index(conn, %{"main_id" => main_id} = params) do # retriev

Elixir 如何基于属性组织结构列表

如何根据这些结构的一个数字参数来组织这个团队列表 defmodule Seeder do def start() do team1 = %Team{name: "Team ", points: "10"} team2 = %Team{name: "Team 2", points: "5"} team3 = %Team{name: "Team 3", points: "4"} team4 = %Team{name: "Team

Elixir,仅限Ecto回滚时间戳

在其中一个创建的表中,我必须在创建表之后添加时间戳。我当前的迁移脚本看起来像 defmodule Database.Repo.Migrations.UpdateSubscriptionTableInsertedAt do use Ecto.Migration def up do alter table(:subscriptions) do timestamps() end end def down do alter table(:subscr

Elixir 如何解析子字段,以便向HTTP查询添加可选参数?

注意:这是一个大大简化的示例,但问题是相同的 我试图用GraphQL接口包装一个现有的HTTP服务,/blog posts。只有我传入查询参数,extra data=true,服务才会在响应中返回一些额外数据。所以 GET/blog posts:获取ID和标题 GET/blog posts?extra data=true:获取ID、标题和extra data字段 我有一个类似于以下的苦艾酒模式: query do field :blog_posts, non_null(list_of(n

Elixir 长生不老药

我有一份地图清单: [%{~D[2019-02-11] => 7}, %{~D[2019-02-12] => 1}, %{~D[2019-02-15] => 1}] 我正试图通过以下方式将其变成一幅大地图: my_map |> Enum.map_reduce(%{}, fn x, acc -> Map.merge(x, acc) end ) 但是,唉,这并不完全正确。做这件事的正确方法是什么?你根本不需要,用普通的古董: [%{~D[2019-02-1

Elixir HTTPoison手动关闭连接

这是一个非常简单的模块,它不断检查请求者的IP。我使用反向连接代理,这意味着它在每个http请求上都会获得新的IP defmodule Test do def go() do Enum.each(1..1, fn x -> Task.Supervisor.async_nolink(Scraper.TaskSupervisor, fn -> r = HTTPoison.get("https://api.ipify.org?format=json", []

Elixir Rumbl.Repo的数据库无法';不能被创造:被杀死

我使用mixphx.new rumbl创建了一个新项目,效果很好。 然后我使用cdrumbl进入项目文件夹。之后,我尝试运行mix-exto.create,这导致了以下错误消息: D:\Elixir\Projects\rumbl>mix ecto.create 10:35:16.370 [error] GenServer #PID<0.212.0> terminating ** (DBConnection.ConnectionError) tcp connect (local

Elixir IEx截断错误stackstrace,不考虑配置

我的配置~/.iex.exs是: IEx.configure(inspect: [limit: :infinity, printable_limit: :infinity, pretty: true , safe: false] ) 在IEx中,字符串、列表不会被截断,但尽管进行了配置,我还是有一些错误,如: 19:35:15.338 [error] #PID<0.404.0> running HTTP (cowboy_protocol) terminated Server: lo

Elixir 实时视图重新加载后消失选择

我的LiveView渲染中出现了一个奇怪的问题。以下是作为流发生的情况: 我从第一次选择中选择任何非默认选项,保留第二次选择默认->我将搜索表单提交到LiveView->在重新加载的屏幕上,我再次选择第一次选择的默认选项,保留第二次选择默认->我将搜索表单提交到LiveView->第二次选择消失 我从第二次选择中选择任何非默认选项,保留第一次选择默认->我将搜索表单提交到LiveView->在重新加载的屏幕上,我再次选择第二次选择的默认选项,保留第一次选择默认->我将搜索表单提交到LiveVie

Elixir 为什么进程ID返回为未定义?

我有Supervisor及其子Genserver,代码如下: defmodule MyApp.StatisticSupervisor do use DynamicSupervisor def start_link(_) do DynamicSupervisor.start_link(__MODULE__, [], name: {:global, __MODULE__}) end def start_statistic(team_id) do DynamicSu

运行测试套件时出现Phoenix(Elixir)错误

我继承了一个web项目,其后端使用Phoenix框架用Elixir编写。我是一名Python(Django)开发人员,是Elixir的新手。这个项目的测试覆盖率为0,所以我认为这将是一个很好的开始,并熟悉Elixir和Phoenix的地方。但在我开始之前,我在运行混合测试时收到一条错误消息 16:27:35.818[info]应用程序tzdata开始于:nonode@nohost **(Mix)无法启动应用程序cowboy:已在::application.cowboy中退出({:descript

Elixir Phoenix服务器主索引页在会话过期后未正确重定向

我对长生不老药和凤凰城还不熟悉,这是我的第一个项目 在我的应用程序中,我实现了一个简单的用户名/密码身份验证,其中一些路由需要经过身份验证的访问 一切似乎都很顺利,除了我休息一下,第二天再次启动开发服务器。当我尝试访问主页时,浏览器显示“页面未正确重定向”。因此,我打开了开发工具,开发服务器似乎返回了302 Found和Location://,导致无限重定向 在dev服务器终端上,每个请求都会显示以下错误(因为重定向) [error]Ranch listener DemoWeb.Endpoint

Elixir 如何抑制来自普罗米修斯图书馆的警告?

我们在代码库中使用一个外部库,它在Elixir 1.11中生成警告。通常,这不会是一个问题,但我们在编译代码库时将警告视为错误,以确保代码质量。有没有一种方法可以抑制此宏中的警告 使用{:prometheus_插头,“1.1.5”}和Elixir 1.11.2的示例: defmodule Company.Api.PrometheusExporter do use Prometheus.PlugPipelineInstrumenter end 给出此输出: ==> api Compil

Phoenix/Elixir测试视图帮助程序

我已经创建了一个助手,用于在向视图显示数字之前进行一些计算: defmodule FourtyWeb.CalculationHelpers do use Phoenix.HTML def value_in_euro(amount_in_cents) when is_binary(amount_in_cents) do cond do # some code end end end 这东西有用。我现在正在尝试测试它: defmodule Fourty

Elixir 长生不老药:何时使用';编号';以及何时使用';整数';

这些例子似乎包括“数字”和“整数”。应该在哪些情况下使用它们 编辑:下面是每种方法的一个示例 @type bar :: %{atom => [{binary, integer}]} def foo(x) when is_number(x), do: x Number是一种更通用的类型,它同时引用浮点数和整数。如果您想检查一个值是否是数字,但不关心它是浮点还是整数,请使用数字。如果要强制执行特定类型,请使用整数/浮点。在上面的示例中,如果需要更具体的说明,可以使用is_integer(x

Elixir`ListDict`已被弃用,那么当密钥是二进制的时候,我应该如何从列表中`get`一个值呢

我刚刚将Elixir版本更新到v0.13.2,发现ListDict已被弃用,我应该如何处理这些DictAPI,就像我想获得[{foo',bar}]键“foo”的值一样。在Elixirv0.13或之前的版本中,我可以使用Dict.get([{foo',bar}],“foo”)来获取值,现在我不能这样做,否则它在Keyword.get/3中抛出没有匹配的函数子句,或者我应该只使用List.keyfind/3(可以获取正确的键值对),但我认为这不是一种方便的方式 您可以非常轻松地将这些列表转换为Has

Elixir 协议与协议的区别;长生不老药

行为定义回调,协议定义没有签名的方法。实现协议的模块应该定义所有这些方法。对于使用行为的模块也是如此。语义上的区别是什么 我能想到的一个区别是,协议只能为单一类型实现一次,因为我们可以根据需求多次为模块实现行为。我很清楚什么时候用什么。除此之外还有其他区别吗?协议是基于类型/数据的多态性。当我调用Enum.each(foo,…)时,具体的枚举由foo的类型决定 行为是一种无类型的插件机制。当我调用GenServer.start(MyModule)时,我显式地将MyModule作为插件传递,并且G

如何在elixir模块中创建全局变量

我在elixir中有以下代码: def get_trackerid(imei) do client = get_new_client() {:ok, result} = :cqerl.run_query(client, "SELECT * FROM trackers_by_imei where imei = \'#{imei}\';") row = :cqerl.all_rows(result) end 现在,许多函数都在调用get_trackerid函数,每次调用该函数时,都会调

Elixir:从另一个模块快捷访问方法/宏

所以,我有一个混合项目,有moduleUploader.Server和moduleUploader.Utility Uploader.Utility定义request宏。问题是我不能像这样在Uploader.Server中访问它,我只能调用Uploader.Utility.request,这是非常不协调的,因为服务器模块提供shell接口,request将是命令的常见参数 我可以把这个宏放在Uploader.Server模块中,但逻辑上它不属于那里 我是否可以通过内部名称而不是外部名称(如ali

Elixir 在测试中尝试Fernet.EXTO.String.dump时出错

我正试图用这种方式加密字符串 defp encrypt_password(changeset) do case changeset do %Ecto.Changeset{valid?: true, changes: %{password: password}} -> put_change(changeset, :password_hash, Fernet.Ecto.String.dump(password)) _ -> changeset

如何在Elixir中创建循环中的贴图

我正在创建一个2d贴图,并希望从预填充空值开始 我知道下面这些在长生不老药中是行不通的,但这正是我要做的 def empty_map(size_x, size_y) do map = %{} for x <- 1..size_x do for y <- 1..size_y do map = Map.put(map, {x, y}, " ") end end end 我曾经尝试过将其作为2D数组来使用,但我认为使用坐标图作为关键点的平面贴图将

Elixir 消除长生不老药中不必要的浮动精度的简单方法?

我有像这样的长生不老药: 0.15300000000000002 5.140000000000005 0.0033000000000000004 但我只想展示: 0.153 5.14 0.0033 我熟悉使用 :erlang.float_to_binary …指定小数精度和舍入选项。问题是我不知道精确到小数点后几位 有没有简单的方法可以做到这一点?由于浮点错误的性质,我认为没有一种通用的方法可以在不选择精度的情况下做到这一点 :compact选项到float\u to\u binary可以

Elixir 伞式编译期间未定义的函数警告

我在伞式应用程序结构中遇到了一个奇怪的问题。当我在运行mixclean命令后编译整个项目时,我从应用程序\u a收到以下警告消息: function ApplicationB.ModuleName.function_name/0 is undefined (module ApplicationB.ModuleName is not available) lib/file_name.ex:13` 问题是模块就在那里,ApplicationB.ModuleName.function\u na

Elixir Dialyxir错误订单\u by不返回EXTO.Query.t

我有这个方法 @spec modify_query(Ecto.Query.t) :: Ecto.Query.t def modify_query(query) do # modifies a Ecto.Query.t end 然后我用一个查询链接该方法: Item |> where([active: true]) |> order_by([desc: :start]) |> modify_query 代码工作正常,但显然,透析器订购方没有返回异位查询.t,因为它抱怨:

Elixir doctest可以解析带有默认参数的函数吗?

对于我编写的函数,doctest失败。我收到的错误消息说,生成操作数/0未定义。我的意图是在doctest中使用generate\u operans/6的默认参数——这可能吗?做我想做的事是明智的还是故意的 函数如下所示: @doc """ Generate the operands for arithmetic practice problems. ## Examples iex> operands = generate_operands() iex> lengt

在Elixir中迭代数组

我有一个表单数组: [ [~N[2019-02-08 00:00:00.000000], 1], [~N[2019-02-02 00:00:00.000000], 8], [~N[2019-02-05 00:00:00.000000], 2] ] 比如说,我想把所有的日期时间转换成字符串。最好的方法是什么?当您需要使用可枚举项时,可以在Enum模块中查看。map将enumerable(本例中的列表)作为其第一个参数,将transforming函数作为其第二个参数 [ [~N[2

上一页 1 2 ...  24   25   26   27    28   29   30  ... 下一页 最后一页 共 125 页