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编程技术网」

Can';不要在Elixir项目中获取环境变量

我定义了一个与相关的环境变量,my mix.exs是 然后我用iex-S mix或mix_ENV=dev iex-S mix开始项目,我想用:application.get_ENV(:basic,:foo),它变成:undefined;并使用:application.get_all_env(:basic),它返回[包含的应用程序:[],没有env变量。我的问题是如何获取环境值?使用env=:application.get_env(:example,Mix.env)。这将返回在mix.exs文件中

Elixir 字符串操作:用逗号连接

我如何才能得到下面的字符串作为结果,从我得到它现在在长生不老药 ['x1', 'x2'] 我尝试了enum.join,但没有获得所需的数据 到 如果我理解正确,您应该使用第二个参数来定义“joiner”。这应该起作用: arr = ['x1', 'x2'] Enum.join(arr, ",") # => "x1,x2" 如果希望结果为char list,可以使用以下方法将其转换为一: 另一个选项是显式使用和添加joiner: Enum.reduce(arr, &(&2

Elixir 仅当mix_ENV最初未设置为“时,加载标记为测试的混合依赖项”;测试“;

我希望在Elixir应用程序中以编程方式运行混合测试任务。这可以通过Mix.Tasks.Test.run/1完成,但如果不先设置Mix\u ENV环境变量而尝试执行此操作,则会导致任务拒绝运行 我们可以使用System.put_env/2设置env,但一旦应用程序找到对标记为test only的依赖性中定义的模块的引用,就会崩溃 在这种情况下,如何加载这些依赖项 我们可以使用System.put_env/2设置env,但是一旦应用程序找到对标记为test only的依赖性中定义的模块的引用,它就

Elixir Phoenix中的可选POST参数

我有一个phoenix route,我想向其发布一些表单数据,但是表单中大约有4个字段是可选的(表单由最终用户构建,因此这些字段可能不存在于POST有效负载中) 在路线的凤凰控制器中,您将如何处理此问题 例如: 我的表格有 Field1, Field2 Field3 (optional) Field4 (optional) Field5 (optional) 发布表单必须始终具有Field1和Field2,但可以具有其他字段的任意组合 到目前为止,我的控制器代码如下: def create(c

Elixir 在Phoenix控制器和/或模板中获取配置值时出现问题

我试图从控制器中的Phoenix配置文件中获取一个值 # config.exs use Mix.Config config :app_name, AppName.Endpoint, url: [host: "localhost"], debug_errors: false, root: Path.expand("..", __DIR__) 例如,Application.get\u env(:app\u name,:url)似乎什么也不返回 我遗漏了什么吗?正如您在中所看到的,c

Elixir 是否可以通过字符串或符号动态访问模块?

我试图编写一组宏,所有这些宏都必须依赖于关于同一模块的知识,因此,我试图避免将此模块显式地传递给每个函数(实际上我很乐意这样做,但在学习该语言时,我正在尝试探索所有的可能性!) 所以我在写(目标是访问SomeOtherModule,或者在生成的foo函数中调用SomeOtherModule.foo) 但这显然不适用于apply/3模块,而不是模块名称的字符串或符号表示 基本上,正如标题所说,我正在寻找某种方法来实现它,以便对于给定的字符串或符号,它可以访问相应的模块或调用该模块的函数 另外,我知

Elixir 从iex运行ESPE任务

对于文件查看器项目,我希望从iex运行 我想我能做到 Mix.Task.run "espec", [file_path] 这只起作用一次。我找到时间通过 Mix.Task.reenable "espec" 这似乎奏效了。但后来我遇到了一些奇怪的事情。假设我有file1\u spec.exs和file2\u spec.exs。无论我先运行哪个,都将在shell中运行 Mix.Task.reenable "espec" Mix.Task.run "espec", ["file1_spec.exs

Elixir Phoenix错误:模块未加载/不可用

我正在学习编程Phoenix的书,在这一部分工作,以实现对经过身份验证的用户的登录/注销,但收到一个错误,我不知道该如何处理: mix phoenix.server Compiled lib/rumbl.ex Compiled lib/rumbl/repo.ex Compiled web/channels/user_socket.ex Compiled web/web.ex Compiled web/models/user.ex == Compilation error on file web

地图查找是否在Elixir O(1)中?

基于哈希表的dict/map结构提供了O(1)查找时间。然而,我一直认为在长生不老药中,找到一个匹配的函数头比在地图上查找要快 例如,Elixir的String.Unicode,因此,通过查找upcase中预期为“ee”的函数头,可以回答“ee的upcase版本是什么”的问题 我不知道为什么这会比使用单个upcase函数头在地图中查找“é”更快或更高效 类似地,当在“元编程长生不老药”中演示如何构建I18n库时,Chris McCord为每个翻译键提供了自己的函数头,并说: “通过为每个转换映射

在Elixir应用程序中配置多个回购

我正在尝试使用在Elixir应用程序中配置两个回购。 我需要帮助来配置它们,这样它们都可以通过一对一策略独立地进行监督;我认为这是正确的,这意味着使用它们的进程将重新启动 回购A和回购B mix.exs设置: def application do [applications: [:logger, :tds, :tds_ecto, :ecto, :httpoison, :csvlixir], mod: {MyApp, []}] end MyApp\u app.ex 下面的片段: def

Elixir 测试服是否需要手动启动OTP应用程序

例如,我使用HTTPotion 它在mix.exs中如下所示: def application do [ applications: [:httpotion] end 我是否需要在test\u helper或setup宏中提供HTTPotion.start() 有时我的测试失败,因为HTTPotion没有启动,所以我在helper中添加了这一行。然而,过了一段时间,它可能会再次失败,所以我需要删除它,编译,然后再次添加它,再次编译,然后再次工作 我不明白问题出在这个领域还是别的

Elixir 如何将任何给定函数映射到值列表?

我正在拆分一个字符上的字符串,并希望修剪结果拆分中的所有项目。我希望以下各项能够继续发挥作用: 我收到一个UndefinedFunctionError指示函数字符串。trim/0不存在。通过将匿名函数传递到Enum.map,可以轻松实现我想要的功能: iex> "My delimited ! string of doom" |> String.split("!") |> Enum.map(fn (word) -> String.trim(word) end) ["My d

Elixir Phoenix:将内容\标记呈现为HTML?

在这篇文章之后,我最终得到了调用#content_标签的HTML信息的嵌套元组 {:safe, [60, "div", " class=\"form-group \"", 62, [[60, "label", " class=\"control-label\" for=\"_username\"", 62, "Username", 60, 47, "label", 62], [60, "textarea", " class=\"form-control\" id=\"

Elixir 原子上的模式匹配

我想对返回(atom,var | atom)元组的命令进行模式匹配 当返回{:error,:timeout}时,它抛出异常。为什么不:超时在模式匹配中被视为变量?怎么 如果出现{:error,data},我可以匹配任何原子吗?我想你应该研究一下如何使用\uu下划线字符。看看这个文档,@Chris,我知道。数据应该匹配:timeout。如果未注释,您的第三个分支将永远不会匹配,因为数据将匹配:超时。你能发一封信吗?如果run\u command()返回{:error,:timeout}@Dogbe

Elixir 如何在chageset管道中跳过验证

对于给定的简单变更集示例: def changeset(struct, params \\ %{}) do struct |> cast(params, [:email, :password]) |> validate_required([:email, :password]) |> validate_something end 如果前一个验证失败,那么跳过验证的最佳方法是什么 最明显的是将所有内容包装在if/else语句中,如: defp validate_

Elixir Genserver访问它';s自己的结构数据

我有一个elixir Genserver模块,它使用defstruct初始化,但我不知道如何在它自己的私有模块中访问来自该模块的数据 以下是初始化时使用的结构: defstruct info: "test_data" ... 这是部分代码。如果一个不同的进程想要从中获取信息,它需要知道它的pid。状态会自动传递 def get_info(pid), do: GenServer.call(pid, :get_info) ... def handle_call(:get_i

Elixir 将两个范围相乘-长生不老药

我试图解决Euler项目中的第四个问题,但遇到了一个问题。我需要将两个范围相乘,但我不知道如何使用长生不老药。以下是我的工作内容: def is_palindrome?(n) do Integer.to_string(n) == Integer.to_string(n)|> String.reverse end def multiply do range_1 = 100..999 range_2 = 100..999 for n <-

Elixir 在“中调用我自己的谓词”;其中;外胚层

我希望能够调用一个函数或我的谓词(在“where”中)。我正在尝试这个: items = where(Item, [x], Item.my_predicate?(x)) # items = where(Item, [x], Item.my_predicate?(x) == true) 它抛出一个异常: `Item.my_predicate?(x)` is not a valid query expression 如何修复它?我认为这是不可能的 作为一种方法,您可以创建一个单独的策略模块,该

Elixir 停止管道操作员中的链条

我有三个这样的函数 check_file(url) |>test |> foo with {:ok, file} <- check_file(url) do file |> foo |> foo else IO.puts "KO, debug and stop!" end 检查文件返回 {:ok,_} or {:error,_} 我有两个用于模式匹配的函数 def test({:ok,_}) do IO.puts "ok"; e

如何在Elixir的伞形应用程序下将别名和导入添加到我自己的混合中?

我有一把长生不老药的伞 它有两个应用程序。一个API控制器和视图,一个唯一的数据库(Ecto)以及所有与之配套的东西 我想做我自己的混合文件,这样我就可以把我的别名和进口在那里。在iex中,每当我必须在测试代码之前导入alias和imports的bucket负载时,这会变得非常烦人 我已经用.iex.exs创建了一个文件,并将其放在一个应用程序根目录下,运行iex-S mix 以下是我的混合文件的内容: db.iex.exs alias Db.{Repo,Document} 以下是文件夹结构:

Elixir 在“选择贴图”中设置值

我正试图把地图发到前端。如果我像下面的代码一样在键中放一个原子,它就可以正常工作 defp build_select(queryable, opts_select) do if opts_select == nil do queryable else Enum.reduce opts_select, queryable, fn ({k, v}, queryable) -> a = from q in queryable, select:

Elixir Postgrex需要一个布尔值,got;1“;

我试图将布尔值传递给隐藏的输入。但Postgrex似乎不明白我想传递什么 这是我的错误: 表格: %> 如果只是传入true我会得到这个错误:Postgrex需要一个布尔值,得到“值” 如何将布尔值传递给隐藏字段?我发现我做错了什么: 我的用户联盟模式设置如下: schema "users_leagues" do field :commissioner, :string end schema "users_leagues" do field :commissioner, :boole

Elixir 允许在变更集isn';行不通

我想要一个虚拟的assoc,这样我就可以进行多态assoc。所以我有一个与用户(和其他人)相关的图片模式。我将在回调中有一个位置,在那里我将多态类型/id分配给模式,但是为了这样做,需要将它分配给更改,但是我很难做到这一点。目前我有 defmodule App.Picture do schema "pictures" do ... field :pictureable, :map, virtual: true end @attrs [:picture, :pictu

Elixir 检查用户是否在Phoenix模板中经过身份验证

我正在开发phoenix应用程序。身份验证部分是用实现的 与典型的网站一样,该应用程序有页眉、页脚和侧边栏。这些是布局文件夹中的静态页面 树视图 -解放党 |-管理应用程序网页 |-模板 |-布局 |-app.html.eex |-header.html.eex |-sidebar.html.eex |-main.html.eex app.html.eex看起来像这样 <!DOCTYPE html> <html lang="en"> <head>

在Elixir/Phoenix中解析多部分/混合请求的json部分

我正在编写Elixir/Phoenix json API后端,希望端点在一个请求中接收多个图像文件以及一些json格式的属性。我使用了multipart/mixed内容类型,下面是我的cURL请求 curl -4 -H "Content-Type: multipart/mixed" \ -H "Authorization: FNRM8ISXiUujh+I2X" \ -F "meta={"registration": "face"}; type=application/json" \

如何在Elixir中将十六进制转换为整数?

尝试使用List.to\u integer iex(1)> List.to_integer("C5",16) ** (ArgumentError) argument error :erlang.list_to_integer("C5", 16) 这同样适用于erlang 3> list_to_integer("C5", 16). 197 引用很重要 List.to_整数('C5',16) #⇒ 197 在《长生不老药》中,应该用单引号引起来。双引号是为二进制文件保留的 如果要

Elixir Graphql查询测试不需要';在Phoenix中无法正确返回结果

大家好,我刚刚接触长生不老药,一般来说是FP的新手。因此,基本上我尝试学习Elixir,然后开始构建GraphQLAPI服务器 我阅读并遵循《苦艾酒灵丹妙药制作GraphQLAPI》一书,一直在测试GraphQL查询 这本书是这么说的: test "menuItems field returns menu items" do conn = build_conn() conn = get conn, "/api", query: @query assert json_response(

Elixir 运行“混合测试”时,函数A.B.c/1未定义或专用,但不在控制台中

这个问题的后续问题 我大概也遇到了同样的问题。函数被认为是未定义的或私有的 以上链接中的解决方案有效!在$iex-S mix phx.server中,我运行recompile(),函数不再是未定义的或私有的 我的问题是,它在我的测试套件中仍然是未定义的或私有的。 当我运行混合测试时,我再次得到未定义函数错误 我正在从项目的根目录运行测试。测试模块缺少名称作为test后缀。换句话说,被测试的模块被称为MyApp.MyModule,进行测试的模块也是如此 如果要测试的模块名为MyApp.MyMod

Elixir 什么';在Phoenix中,没有重定向的POST操作中响应错误页面的正确方法是什么?

我认为这是一个基本情况。我有一个POST操作,我想响应403状态并显示错误页面 def signup(conn, params) do ... conn |> Plug.Conn.send_resp(:forbidden, "Forbidden") |> Plug.Conn.halt() end 但是,它将返回403,但不会呈现错误页面。相反,它加载资源失败:服务器在浏览器中以403()状态响应,并下载一个奇怪的signup.dms文件 我有一个设计好的403.ht

Elixir 处理任务中引发的异常

我想在任务中运行一些代码,但它可能会抛出错误。我已经尝试过尝试/拯救,但没有发现错误 try do Supervisor.start_link([ {Task, fn -> raise "kaboom" end}], strategy: :one_for_one) rescue RuntimeError -> "Error!" end 我希望会有错误!无论我得到什么,都要打印出来- (RuntimeError) kaboom (stdlib) erl_eval.e

Elixir 获取要在where子句中使用的联接值架构

是否可以使用连接值架构来使用where子句 filtered = [name: "show", name: "comedy"] query = from s in Core.Serie, join: t in assoc(s, :tags), where: ^filtered 结果就是下一个 #Ecto.Query<from s in Core.Serie, join: t in assoc(s, :tags), where: s.name == ^"show" and s.name

Elixir 如何在Ecto模型中获得关联数据的安全性?

我有一个型号用户,它有一个订阅。现在我想获取相关订阅中的数据。用户可能没有订阅 这是我的代码: user = Repo.get(User, 1) |> Repo.preload(:subscription) hash = %{name: user.name, subscription_type: user.subscription.type} 因此,在这里,当我尝试获取subscription\u type时,如果订阅为零,我将得到一个错误 在Ruby中,我可以使用try方法user.

如何将LiveView添加到现有Elixir/Phoenix应用程序?

我想在我现有的Phoenix应用程序中更改一个表单以使用LiveView,这样我就可以利用上面描述的更好的图像上传功能。然而,我看到的文档只谈到运行mixphx.newmyu应用程序--live来设置它。如何将其添加到现有的应用程序中?实际上主要是关于如何将其添加到现有的Phoenix项目中(基本上除了第一段以外的所有内容): 如果您使用的是Phoenix的早期版本,或者您的应用程序已经存在,请继续阅读

Elixir With block in插件服务器抛出MatchError,而不是使用else块

以前,我会在Elixir Plug服务器中使用和块来解析请求中的参数,并在失败时返回正常响应。然而,这似乎不再有效(Elixir 1.11)。有人能指出发生了什么事吗 下面是一个最简单的插件服务器,它将显示问题所在 defmodule MatchTest.Router do 使用插头路由器 插头(:匹配) 插头(:调度) 得到“/”做 其他= 使用{:ok,{}:error 结束 连接插头连接发送响应(连接400,“参数不正确”) 结束 结束 相配 插头连接发送响应(连接404,“未找到”) 结

Elixir 如何将URL中的多个参数传递给插件

所以我尝试在一个URL中将多个参数传递给plug。这是我用于测试的URL: http://localhost:4000/uid=ToddFlanders&pwd=MyTestPword 这是代码: defmodule Sci do @userid "uid" @password "pwd" import Plug.Conn import Plug.Conn.Utils use Plug.Router plug :match p

Elixir 如何跳过特定页面的插件

我正在构建一个具有身份验证的Phoenix应用程序。在我的路由器中,我有如下功能: pipeline :browser do plug :accepts, ["html"] plug MyApp.Plugs.Authenticate end scope "/", MyApp do pipe_through :browser # Use the default browser stack get "/", HomeController, :show ge

Elixir 将列表分成两等份(±;1)

我知道我可以在elixir中将一个偶数列表分成两等份,方法如下: list = [1, 2, 3, 4, 5, 6] len = length(list)/2 |> round [a, b] = Enum.chunk(list, len) # => [[1, 2, 3], [4, 5, 6]] 但是,有没有一种内置的ruby风格的方法或者更有效的方法来处理奇数长度的列表呢?我不相信有任何“更惯用”的方法来实现这一点。我不知道有什么内置方法可以做到这

Elixir 3的协议枚举未实现

失败代码: Enum.map(1..30, &(&1 * 2)) |> Enum.map &(&1 + 1) |> Enum.sum ** (Protocol.UndefinedError) protocol Enumerable not implemented for 3 (elixir) lib/enum.ex:1: Enumerable.impl_for!/1 (elixir) lib/enum.ex:112: Enumerabl

Elixir 如何在针对EXTO的迁移中运行更新?

我在我的一个项目中使用和 我想在一个表中添加一列,我希望它是一个非空列。但我已经有一些现有数据,所以我决定添加列,将所有行更新为某个值,并将列修改为NOTNULL 我尝试了以下两种代码: # solution 1 def up do alter table(:channels) do add :type, :integer Exchat.Repo.update_all("channels", set: [type: 1]) modify :ty

Elixir Phoenix return 200 POST状态代码

My Phoenix API返回POST请求的200状态代码,而不是201。如果我没有设置状态代码,Phoenix默认使用200 下面是示例响应 conn |> json(%{created_at: response[:timestamp], notes: response[:notes], data: data}) 您可以使用Plug.Conn.put\u status/2手动设置状态代码: conn |> put_status(:created) |> json(%{cr

在Elixir中生成一个随机字节

这似乎是一个简单的问题,我可能遗漏了一些明显的东西,但我不知道如何在Elixir中创建一个返回随机字节的函数。我想要像这样的东西: def random_byte do <<0>>..<<255>> |> Enum.random() end def random_byte do .. |> Enum.random() 终止 但是你不能用二进制文件来确定范围。我可以手动键入所有256个字符的列表,但我希望有更好的方法。你是说一个有一个字

在Elixir上异常退出后,有没有办法用不同的配置重新启动GenServer?

几天前我开始学习长生不老药,我真的很喜欢它。尤其是使用主管进程作为助手来创建容错应用程序的想法 然而,有一种我认为很自然但到目前为止我找不到任何参考的情况,那就是在发生故障时用不同的配置重新启动子进程(GenServer) 我的用例如下所示: 我有一个从数据库中获取数据并在某种程度上使用它的过程。数据库连接对于进程生命周期至关重要。 如果进程异常退出,我希望能够使用不同的数据库连接(备份数据库),因为它无法连接到数据库或从数据库获取数据给定N次(而不是释放地狱并抛出进程因数据库连接而死亡的通知)

Elixir 在受监督的进程中异步执行函数

我试图同时监视几个API。目前我正在启动我的应用程序,这会导致我的主管启动,进而启动监控过程。我虚弱的大脑已经成功地达到了一个地步,我正在产生所有4个孩子的过程 我的APIMon.Monitor模块一团糟,我真的不知道如何修复它。我想让它们中的每一个都作为主管的子级开始,然后无限期地在自己的scan()循环中运行,同时将所有信息独立地输出到控制台 我已经玩了一段时间,试图浏览任务文档,但我似乎找不到一种方法来实现这一点,因为我没有在iex-S mix中完全阻塞控制台,我认为这意味着我完全阻塞了。

Elixir 我第一次使用Phoenix为什么会出现这个错误;申请表不可用;?

[信息]正在运行的滑头。使用 您已经在您的应用程序中配置了application:Slicker 配置文件,但应用程序不可用 这通常意味着: 您尚未将应用程序作为依赖项添加到mix.exs文件中 您正在配置一个实际不存在的应用程序 请确保:Slicker存在或删除配置 我的项目存在于此处-> 下面是mix.exs文件 defmodule Slicker.Mixfile do use Mix.Project def project do [app: :slicker,

Elixir Can';t运行任何mix命令-**(FunctionClauseError)IO.chardata\u to\u string/1中没有匹配的函数子句

我在本地mac上有完全相同的代码和版本,可以很好地运行mix命令。我拿出了一份我的项目的全新副本来确认。没有_build、deps或tmp目录。此错误没有提供有关问题的信息。可能会发生什么,或者我可以研究什么来解决这个问题 问题出在Ubuntu 18.04 LTS上。我已经尝试了多个erlang/elixir版本,所有的结果都是相同的 root@instance-1:/srv/zipbooks/phoenix-api# elixir -v Erlang/OTP 21 [erts-10.2.5]

Elixir 如何使用:emu_args向erlang vm发送标志?

我想向erlang vm发送参数,但是“-escript main parallel_tree_walk_escript”后面会出现“emu_args:+A32”,并且似乎会成为elixir程序的参数,而不会影响erlang vm 如果没有“emu_args:+A32”,则由“mix escript.build”创建的文件包含第三行 %%! -escript main parallel_tree_walk_escript 如果我用emacs(可以很好地处理非ascii内容)将该行更改为 但是,

如何在Elixir中处理POST和GET请求?

如何处理POST和GET请求? 有必要在Elixir上实现一个web应用程序,该应用程序处理两种类型的请求: POST/data\u in { "data": ["https://ya.ru", "https://ya.ru? q=123", "yandex.ru", "https://stackoverflow.com/questions/118282" ] } 及 GET/data_out?from=1545221231&to=154

如何在elixir中增加循环中的值

我试图计算从范围1到范围4的每个范围内的数字的次数。范围1为1-10,范围2为11-20,范围3为21-30,范围4为31-40。我有以下资料: range1=0 range2=0 range3=0 range4=0 arr=[1,11,2,22,33,23] Enum.each arr, fn(x) -> if x >=1 and x<=10 do range1=range1+1 end if x>=11 and x<=20 do ra

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