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 如何指示EXTO不创建自动增量id字段?

EXTO迁移会自动在表中按名称“id”创建一个自动递增字段 如何避免创建此字段 如何将表中的另一列设置为主键(非自动递增) 您可以使用主键:false选项退出自动生成的主键列,以表/2。您可以使用主键:true选项将另一列设置为主键添加/3: create table(:users, primary_key: false) do add :my_id, :integer, primary_key: true add :name, :string # ... end 有关更多信息,请

Elixir 混合在代理后不起作用

至少在两周前,我一直在使用代理后的mix。 然而我昨天发现,在代理之后,混合变得无法工作。 混合版本是1.1.1。 混合本地.hex运行。 但是mix deps.get会出现错误 $ mix deps.get Registry update failed (http_error) {:failed_connect, [{:to_address, {'s3.amazonaws.com', 443}}, {:inet, [:inet], :nxdomain}]} Running dependency

Elixir 如何从Phoenix控制器向频道广播消息?

有没有办法从频道外部向频道广播消息 可能类似于频道。广播主题、事件、数据 我看到了类似的内容,但最终版本的Phoenix.Channel.broadcast/3(从今天起)使用了一个套接字,表示频道和主题。您可以使用MyApp.Endpoint.broadcast(主题、事件、消息) 检查注意:如果您是从iex运行此应用程序,则需要使用iex-S mix phoenix.server启动应用程序才能运行。这可能是我自己应该发现的:-)。。。我很努力地在谷歌上搜索,但这件事没有出现。也许它现在在这

如何在elixir中以ISO 8601格式生成当前日期?

我需要生成一个与以下格式相同的当前时间字符串:20130524000000z 该示例是2013年5月24日星期五00:00:00 GMT的时间戳 我该怎么做?有没有一种方法可以在没有外部软件包的情况下完成这项工作?我已经成功地使用了以下代码: {{yy, mm, dd}, {hh, mi, ss}} = :calendar.universal_time "~.4.0w~.2.0w~.2.0wT~.2.0w~.2.0w~.2.0wZ" |> :io_lib.format([yy, mm, d

跨不同流程使用Elixir ETS

我试图围绕ETS实现一个非常简单的示例,但没有取得多大成功。我想让多个worker进程写入ETS表,然后让一个(不同的)读卡器进程定期检索值作为总和。我似乎无法在没有崩溃的情况下插入到表中,而读取器在执行时返回零…这是我的代码,非常感谢收到的任何帮助: 主管模块: defmodule Stackex do use Application @noOfWriters 1 def start(_type, _args) do import Supervisor.Spec, wa

Elixir 药剂插头:发送前注册

根据文档,Plug.Conn.register\u before\u send注册在发送请求之前调用的回调。以下代码仅打印“设置”消息,而不打印“清理” 我从医生那里漏掉了什么吗?为了使这项工作正常进行,设置是什么?提前谢谢 您是对的,但是您没有使用注册了before_send的conn(不要忘记变量在Elixir中是不可变的) 更改: Plug.Conn.register_before_send(conn, fn conn -> 致: 或者重写函数,以便在返回发送之前从寄存器返回的c

Elixir 长生不老药如何保存蓄电池

我在试着理解长生不老药流。 首先,我有一个列表,它遍历一个范围并乘以2 iex(5)> stream = 1..3 |> ...(5)> Enum.map(&IO.inspect(&1)) |> ...(5)> Enum.map(&(&1 * 2)) |> ...(5)> Enum.map(&IO.inspect(&1)) |> ...(5)> Enum.reduce(4,

Elixir 我可以为任何现有的arity导入函数吗?

假设我有一个函数的模块,它的头具有不同的算术性。是否有方法将此函数导入其他模块中,以获得所有可用的算术数(而不显式) 据我所知,长生不老药没有这样的功能 有关更多详细信息,请参阅 编辑: @tkowal在上面的评论中提出了一个很好的观点。如果您试图对变量整数列表求和,正确的方法是将参数作为整数列表传递,然后使用它。像这样: defmodule T do def plus(l) when is_list(l), do: plus(l,0) defp plus([], acc), do:

Elixir iex,如何有效地重新加载结构?

我找到了一个简单的例子,说明了我在学习长生不老药时遇到的一个问题 我写了一个脚本: defmodule P do defstruct a: 2 def geta(%P{a: a}), do: a end 使用iex“filename”启动iex会话,检查它是否与p.geta(%p{a:42})一起工作 然后我将文件更改为 defmodule P do defstruct a: 2, b: 4 def getb(%P{a: a, b: b}), do: b end 当我启动ie

Elixir ExUnit模拟序列

是否可以像meck在Erlang中提供此功能一样,使用ExUnit mock模拟返回值序列 ... meck:new(my_module), meck:sequence(my_module, method, 1, [Response1, Response2]), meck:unload(module), ... 如果没有,是否可以在同一个单元测试ExUnit Elixir模块中成功地结合meck和mock?中没有提到:meck.sequence,因此我猜这还不受支持 直接调用:meck函数应该

Elixir iex和phoenix webapi中的String.split差异行为

String.split在iex控制台上运行时返回数组。但在Phoenix上,它将从结果中删除拆分分隔符: iex控制台上的结果 err = "a,b,c,d" res = String.split(err,",") output:["a", "b", "c", "d"] 凤凰城的比赛结果 keys="a,b,c,d" arrkeys1 = String.split(keys,",") output:abcd 您在Phoenix中看到的是对IO.puts/1的隐

Elixir 使用管道操作符时,如何访问列表的各个元素?

我正在通过管道操作符发送一个列表,并希望对单个元素执行一些操作。但不知道如何访问每个元素。这里有一个例子 [1,[[2],3]] |> List.flatten |> how do I multiply each element with 2 [1,[[2],3]] |> List.flatten |> &(&1 * 2) #=> error...can only pipe into local calls 尝试了其他几种不起作用的变体。我错过了

Elixir 长生不老药当你想使用“when”但有几个条件时,什么是最佳实践?

我正在努力学习长生不老药,我想知道什么时候开始 如果我有一个结构,当sayis\u member为true且level大于10时,我想做些什么,我该如何处理 def allow_entry(%Player{ is_member: is_member, level: level }) when ((the conditions above)) 当用于任何类型的布尔表达式时,与Elixir中的任何其他模式匹配都没有区别 defmodule Player do defstruct is_me

Elixir 长生不老药&x2B;异位:如何在[array]中不存在的位置执行?

我试图查找所有用户在其匹配历史记录字段中没有特定字符串元素的用户。我猜是这样的: matched_user=user |>其中([u],^device_id不在u.match_历史记录中)|>limit(1)|>VideoChat.Repo.one 但它似乎在部分破裂,而不是在部分破裂。有办法吗?试试看 User |>其中([u],而不是u.match_历史中的^device_id) 适用于那些正在寻找“数组不包含任何”行为的人。 例如,“匹配_历史记录不包含设备_1设备_2、设备_3” 如果您

Elixir流程监控::退出vs:关闭

我通常会看到处理受监控流程出口的代码如下所示的流程监控示例: handle_info({:DOWN, ref, :process, pid}, state) 但我也看到过一些例子,它们匹配的是:EXIT,而不是:DOWN消息 到目前为止,在我自己的示例中,我只能触发:DOWN消息,其中包括标准的Process.exit和GenServer.stop消息,以及在监视的进程中引发异常 我什么时候会收到:EXIT消息?:EXIT被发送到另一个进程试图使用进程退出的进程。EXIT(原因不是:kill)

Elixir-如何按每3个字符将字符串拆分为一个列表

如果我有字符串“ugguguuauaaugguuu”如何将其转换为一个列表,每3个字符将其拆分为[“UGG”、“UGU”、“UAU”、“UAA”、“UGG”、“uu”] 我还想知道是否有更优雅的版本这可以使用Stream.unfold/2功能实现。在某种程度上,它与reduce相反-reduce允许我们将集合折叠为单个值,而“展开”是指将单个值扩展为集合 作为Stream.unfold/2的生成器,我们需要一个返回元组的函数——第一个元素是生成集合的下一个成员,第二个元素是要传递到下一次迭代的累

Elixir 我是否总是必须在更改配置后运行mixclean然后编译?

我对Elixir比较陌生,我注意到一些奇怪的事情,我有一个配置,config.exs 哪条线像 config :my_app, myname: "name" 当我更改myname键的值时,我的应用程序的行为就像该值仍然是“name”一样,但如果我确实混合清理然后编译我的应用程序,它会对新值作出反应,我环顾四周,查看配置文件是如何处理的,但我似乎找不到任何解释为什么我必须对我的应用程序进行清理才能对更改作出反应的方法 编辑:此应用程序是伞形项目的一部分,我正在更改应用程序的配置,而不是伞形配置.

Elixir获取每个列表中唯一的元素

我有两张单子 1=[%{name:“hi”},%{name:“hu”}] 2=[%{name:“hi”},%{name:“ha”}] 现在我想有两个列表,其中只包含列表1和列表2中唯一的元素 1_uniq=[%{name:“hu”}] 2_uniq=[%{name:“ha”}] 如何实现这一点?您可以为两个列表创建一组名称列表,将它们相交以查找通用名称,然后过滤掉所有通用名称。以下是如何使用Elixir中的MapSet模块执行此操作: l1 = [%{name: "hi"}, %{nam

Elixir 凤凰城的秘密情人

我在Phoenix应用程序控制器中执行以下操作: defmodule TattooBackend.Web.API.V1.TokenController do use TattooBackend.Web, :controller alias TattooBackend.Accounts.Account alias TattooBackend.Repo alias TattooBackend.Web.Endpoint alias Comeonin.Bcrypt alias

elixir phoenix pubsub通配符主题

当直接使用phoenix pubs时,是否有办法订阅部分匹配的主题,例如“用户:” 为了便于说明,以下代码: Phoenix.PubSub.subscribe("my_pubsub", "user:*") 应匹配所有以下事件: Phoenix.PubSub.broadcast("my_pubsub", "user:123", "banana") Phoenix.PubSub.broadcast("my_pubsub", "user:911", "apple") Phoenix.PubSub.b

Elixir元编程:将函数调用列表注入函数体

我有一个元组列表,格式为{:task,function\u name,description},我想生成一个函数,调用元组中定义的函数来覆盖一个值 我生成的函数应该如下所示: def run(val) do val = do_something(val) val = do_something_else(val) ... val end 这是我目前的代码: defmacro __before_compile__(env) do steps = Module.ge

Elixir 如何从多对多关系中的关联表中访问字段?

我有一个Phoenix应用程序,它有很多关联。在此应用程序中: 我有一个用户表: schema "users" do field :username, :string many_to_many :organizations, Organization, join_through: "memberships" end 和一个组织表: schema "organization" do field :org_name, :string many_to_many :members, U

Elixir 从deps加载模块';测试目录

我想在elixir应用程序的测试中使用一个依赖项的测试目录中的模块。我想知道是否有办法做到这一点。多谢各位 我尝试了导入,这给了我一个编译错误elixir模块未加载且找不到您可以将依赖项的测试文件夹的路径添加到elixirc\u路径配置中的mix.exs。由于您正在使用Phoenix,因此已经为elixirc_路径的test环境提供了一条自定义规则,如下所示: defp elixirc_paths(:test), do: ["lib", "test/support"] 您只需将依赖项的test

Elixir 未定义的开始链接代理

我正在关注phoenix的一本书,并构建了一个用于以上几个后端的代理: # Proxy defmodule Rumbl.InfoSys do # we will have several backends; wolfram, google search, google pictures, etc @backends [Rumbl.InfoSys.WolFram] defmodule Result do defstruct score: 0, text: nil, url:

连接到多个数据库elixir

在Rails中,我们可以动态连接多个数据库 ActiveRecord::Base.establish_connection( database: "db_name", username: "postgres") 但是在Elixir-Phoenix框架中,如何执行相同的过程。使用Mix.Config 配置:我的应用程序,MyApp.OneRepo, 适配器:exto.Adapters.MySQL, 数据库:“遗留数据库”, 用户名:“用户名”, 密码:“密码”, 主机名:“something

Elixir 访问列表中的原子并设置值

如果我有一个这样的原子列表 [:slug, :title] 如何将值分配给列表中的原子(如元组) [{:slug, "some"}, {:title, "title"}] 可能吗 谢谢 您必须遍历列表以查找和更新值。以下是使用for的方法: defmodule A do def assoc(xs, key, value) do for x <- xs, do: if(x == key, do: {x, value}, else: x) end end [:slug,

在测试之前运行terminal命令-Elixir

我正在用fakeS3测试S3连接,它工作得非常好。唯一的缺点是每次运行测试之前我都必须运行假的S3服务器,否则S3测试将明显中断 我想在测试运行之前找出运行此命令的方法: fakes3-r~/.s3bucket-p4567 理论上,这将启动Sinatra服务器,以便S3测试能够通过,但我不需要每次都启动单独的服务器 我已经试过了,但没有成功,原因是: MIX.exs 这不起作用,因为它不是混合任务 我也可能是想错了。如何在测试之前运行该命令?这是解决此问题的正确方法吗?只需使用: def fak

Elixir 测试Phoenix控制器但跳过插头

我目前正在尝试测试凤凰城项目中的控制器 我有一个相当复杂的身份验证插件(我单独测试)。我不想为所有控制器测试提供有效凭据 运行测试时是否有跳过某些插头的方法 我尝试了绕过(conn,MyAppWeb.Router,[]),但这似乎根本没有影响到控制器的功能。最简单的方法可能是在应用程序代码中这样做: if Mix.env != "test" do plug MyAuthenticationPlug end 然后在测试期间,您的插件将不会被编译。在测试中绕过身份验证逻辑的一个技巧是直接为连接

Elixir 在Phoenix/Exto中更改关联而不使用铸造关联

我正在尝试向Phoenix应用程序添加一个replicate函数,它接受一个Page对象和一个owner\u id,并创建一个新的页面,该页面具有相同的字段,但由其他人拥有。现在看起来是这样的: def duplicate(%Page{} = page, new_owner_id) when is_integer(new_owner_id) do page |> Page.changeset(%{owner_id: new_owner_id}) |> Re

Elixir 条纹长生不老药如何获得;“付款来源”;

我使用此软件包将Stripe整合到phoenix应用程序中: 我正在尝试创建一个订阅计划的客户 defmodule StripeTestWeb.PaymentController do use StripeTestWeb, :controller use Stripe.API def index(conn, %{"stripeEmail" => email} = _params) do {:ok, customer_data} = Stripe.Customer.

Elixir-在各种if子句中追加到元组,但元组一直被重置为空白

这段代码过去是有效的,能够根据不同的子句将自定义消息放入消息中,并将这些消息发送回前端 我更新了长生不老药。现在,消息在返回前端时总是{}。我现在需要做什么才能让这段旧代码将消息附加到messages?它会附加它们,我会马上检查,它们会在那里。但最后,里面什么都没有 我的所有其他代码仍然有效,只是消息不再向前端返回任何内容,因为它在函数结束时变为空。这就像iff中的变量范围不一样,它是一个完全不同的变量 defmodule Api.Controllers.PutProductIsVegan do

Elixir 函数nil.team_name/0未定义

我有两种疑问。两者使用相同的视图。 返回最新的游戏JSON。 另一个返回所有游戏 看法 它起作用了。并返回JSON def latest_game do query = from g in Game, order_by: [desc: g.game_date, desc: g.game_time], preload: [:away_team, :home_team] query |> first(:game_d

Elixir 解析config.exs中的整数和布尔可配置变量

我有一个配置,我想把布尔变量和整数变量作为env传递 BOOLEAN_VARIABLE=false INTEGER_VARIABLE=5000 如果找不到给定的env变量,我还需要设置默认配置。 这里我将boolean_变量的默认值设置为true,而integer_变量的默认值为2000 boolean_variable = case System.get_env("BOOLEAN_VARIABLE") do "false" -> fa

测试elixir控制器,该控制器在具有关联的模式上工作

我有一个在称为表单的模式上工作的控制器。此架构与用户有关联。 当我让测试运行时,我现在得到一个错误,即数据无法保存到数据库中,因为夹具中id为的用户不存在。 现在我在思考如何解决这个问题。我可以向数据库中写入一个用户,并确保始终存在一个有效的用户,或者模拟该用户,我猜。 这样做的“规范”方式是什么?如果我要在数据库中创建用户,我将不得不(几乎)为其他所有模式都这样做,那么如何才能使其干燥呢?视情况而定。如果您有很多查询要测试,并且关系复杂,那么就有。这样做的唯一缺点是您必须在每个测试用例上填充数

Elixir 调试长生不老药流

我是新的长生不老药,我想学习如何调试更好 在我工作的地方,对大型数据集执行操作是很常见的。这意味着在最后一次操作之前,流一直被大量使用,通常是Enum.sum() 但不幸的是,这意味着几个调用看起来无法识别,因为它们由几个未记录的Stream.map函数组成。(我们目前正在解决这个问题)。我希望看到数据从一个流传递到另一个流进行调试时的状态。这通常是如何实现的 例如: SomeModule.some_large_call_that_returns_a_stream() |> Stream.

如何将HashDicts保存到Elixir中的文件

任务是使用Elixir将结构的HashDict保存并从文件中加载。我计划迭代HashDict并在文件的每一行上写出一个结构。 然而,我在谷歌上找不到关于如何将结构或Dict保存到文件的任何信息。特别是,是否有一种内置的方式来序列化Dicts 我试着先转换成字符串。iex代码段:- iex(68)> {:ok,of} = File.open("ztest.txt", [:write, :utf8]) {:ok, #PID<0.232.0>} iex(69)> IO.writ

Elixir中的调试和调试工具?

我刚刚开始使用长生不老药,并且开始了一个凤凰城项目,我非常喜欢这个项目。 现在有了rails的背景,我习惯了被调试工具宠坏,比如“debugger”、“byebug”等等;我想知道有没有类似的长生不老药工具?你们是如何调试Elixir应用程序的 即使是一个相当于Rubys的提升我的对象。inspect,也会创造奇迹 谢谢您可以使用IEx require IEx value = {:some, :erlang, :value} IEx.pry 如果您使用例如iex-s program.exs(

Elixir 凤凰城-在哪里存储全球可访问的功能?

在我的Phoenix应用程序中,我有一个数据格式化功能,我希望我的所有控制器都可以访问该功能- def prettify({message, values}) do Enum.reduce values, message, fn {k, v}, acc -> String.replace(acc, "%{#{k}}", to_string(v)) end end Phoenix应用程序的文件结构中应该包括哪些全局可访问的功能,以及如何调用这些功能?我通常为

调试Elixir phoenix.server

我想要的是一些关于如何调试mix phoenix.server 当我运行命令时,没有输出,它挂起(没有完成并显示cmd提示符)。我试过: IEx -S mix phoenix.server 这开启了长生不老药治疗,但此时我不确定下一步该怎么做。我希望看到一些详细的东西,告诉我服务器启动的具体位置。我试过: mix phoenix.server --verbose 当然,这是行不通的。此时此刻,我正在努力找出正确的方法。尝试修改dev.exs文件,并将记录器级别设置为debug。在代码中,您

Elixir List.foldr或List.foldl了解长生不老药

我正在阅读长生不老药文档,我遇到了长生不老药列表模块的“foldr”函数。我真的很难理解它。医生说: 文件 所以这个应该返回-2。但是当我读到它的时候,我似乎认为它每次都在试图用0减去一个数字,如果是这样的话,我们怎么得到-2呢?我显然不懂蓄电池,有人能帮我把它拆了吗 使用函数从右侧折叠(减少)给定列表。需要一个累加器 这意味着列表是从右边迭代的,例如。G传递的函数按以下顺序调用4次: fn(4, 0) -> 4 - 0 end fn(3, 4) -> 3 - 4 end fn(2,

Elixir 从列表创建结构

我的模块中有以下结构列表: defmodule团队做什么 defstruct名称:nil,点:nil 结束 team1=%Team{name:“team1”,分数:“00”} team2=%Team{name:“team2”,分数:“50”} team3=%Team{name:“team3”,分数:“25”} team4=%Team{name:“team4”,分数:“12”} team5=%Team{name:“team5”,分数:“04”} team6=%Team{name:“Team 6”,

Elixir 预加载条件下的外部命令

因此,在使用preload函数进行查询时,使用order\u by时遇到问题 通常我使用order\u by就像在这个list\u成员函数中一样 列出成员 def list_members() do query = from( p in Member, select: p, order_by: [desc: p.inserted_at], # descending order preload: [:avatar] ) Repo.all(query) en

Elixir 在EXTO中自定义主键自动生成功能?

在EXTO模式中,可以使用@primary\u key属性指定自动生成的主键: @primary_key {:id, :binary_id, autogenerate: true} 有没有办法指定一个自定义函数来自动生成?我相信在这种情况下,它将使用exto.UUID.generate,而我希望使用v1 UUID。根据,您可以创建自己的自定义主键 下面是一个将name设置为主键的快速示例: 假设我们使用以下混合任务生成了一个Player表: mix phoenix.gen.json播放器名称:

Elixir 透析器关于Gettext模块上模式匹配的警告

我开始在基于Phoenix 1.4的伞形项目中使用透析器(dialyxir 1.0.0-rc.6) 当我第一次在上面运行混血透析器时,我得到了这个警告 apps/my_app/lib/my_app_web/gettext.ex:1:pattern_match_cov The pattern %{} can never match since previous clauses completely cover the type %{:count => _, _ => _} 以下是此

Ejabberd/elixir插件和外部依赖项

我们在docker中使用ejabberd,从docker的官方形象开始。此docker映像能够使用模块\源文件夹中的自定义插件。我改变了Dockerfile中的编译选项,加入了elixir,现在是简单的“Hallo world”插件 但是,我想包括外部依赖,具体来说,它管理向iOS/Android设备发送推送通知。我不知道,如何使它正确的方式。我试图将鸽子源代码复制到插件目录中的/deps文件夹,并下载所有依赖项(如mix deps.get)。然而,我不知道如何为鸽子提供配置,这通常是在Conf

Elixir-为什么这些重复的头没有编译器警告?

今天在浏览一些代码时,我遇到了以下两个函数头,并意识到,据我所知,它们应该是重复的。相同数量的参数,没有匹配项或保护,让我们绕过第一个。但是编译器没有警告我第二个永远不会匹配。有什么解释吗 def update_display_cache(context, text, line_no, position, text, adjusted_text, _) do def update_display_cache(context, display_line, line_no, position

Elixir 长生不老药原子及其不同形态

因此,作为Elixir lang的新手,我对变量两边的:(冒号)完全感到困惑 :status是一个原子,但我们也可以在映射或结构之类的东西中找到: %{ kkey: "success" } kkey是原子吗?如果是这样的话,这与声明atom的标准方式有什么不同 另一个说明这一点的示例: IO.inspect(some_variable, label: "value of some_variable") 在本例中,label:是否被视为atom

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