如何测试多数据库Elixir(Phoenix,Exto)应用程序

运行访问多个数据库的测试的正确方法是什么 我正在编写一个小API,它必须访问多个数据库 我定义了两个repo,每个repo包装一个不同的数据库: # config/dev.exs, config/test.exs, ... config :my_app, MyApp.DbStatusRepo, adapter: Ecto.Adapters.Postgres, .... config :my_app, MyApp.DbDefinitionRepo, adapter: Ecto.Ada

Elixir Phoenix框架下的随机路由器

我想随机路由传入请求 到目前为止,我只想到了这个: defmodule Test.PageController do use Test.Web, :controller plug :assign_random_number def index(%{assigns: %{random_number: random_number}} = conn, _params) when random_number > 0.1 do render conn, "index.

Elixir 在Erlang shell中禁用跳转光标

在IEx 1.2.4中键入()时,光标将“跳”到匹配的括号中1s并向后移动。虽然它不是真正的跳跃,但它的眼睛有点恼人。有没有办法在IEx中禁用此功能 编辑: 虽然问题最初与IEx有关,但实际问题(正如@tkowal在下面的评论中指出的)实际上是在IEx运行的Erlang Shell中。因此,我在这个问题中添加了erlang shell标记。光标跳跃发生在中(在erlang的stdlib中)。具体地说,它似乎发生在第205行到第213行,在这里,)、]和}似乎被捕获并转换为移动光标的指令(然后通过

Elixir 如何使用EXTO构建WHERE IN array子句?

如何在给定的ID列表中查找帖子 这不起作用: posts = Post |> where(id: [1, 2]) |> Repo.all Rails中的示例: Post.where({ id: [1, 2]}) # SELECT * FROM posts WHERE id IN (1, 2) 以下方面应起作用: posts = Post |> where([p], p.id in [1, 2]) |> Repo.all 接受的答案为我提供了未定义函数p/0,因此我得

Elixir Phoenix控制器唯一性测试不工作

我的Users表中的用户名和电子邮件都有一个标准的唯一性约束。现在,我正在测试我的UserController在用户创建期间是否存在重复,我的模型上的unique\u约束在单元测试期间似乎不起作用,但在手动测试中效果良好。我做错了什么 迁移: defmodule MyApi.Repo.Migrations.CreateUser do use Ecto.Migration def change do create table(:users) do add :usern

Elixir:嵌套的If语句

我有一段简单的代码,在大多数语言中都非常简单。我真的很想知道怎么做。我如何将其转换为长生不老药而不得到可怕的变量不安全警告 dc = 1 sd = 5 sdi = 6 calc = 1 bc = 1 dd = 10 if (dc == 1) csd = sd bd = sd p = sdi if (calc == 1 && bc != 1) do count = 1 else count =

调用时FunctionClauseError:wxFrame.new from Elixir

我只有两个问题:) 怎么了 我如何在不询问Stackoverflow的情况下了解问题所在 长生不老药代码: 导入WxConstants ... wx=:wx.new frame=:wxFrame.new(wx,wxID_ANY,“生命的游戏”,大小:{500500}) 输出: ** (FunctionClauseError) no function clause matching in :wxFrame.new/4 gen/wxFrame.erl:111: :wxFrame.new({

Elixir 在混合任务中使用EXTO

在Phoenix Framework应用程序中,我有一个型号产品,字段为名称。我想创建一个混合任务,列出所有产品名称 在Ruby on Rails中,这是解决问题的代码: namespace :list do desc "List all products" task products: :environment do Product.all.each do |product| puts product.name end end end 在凤凰城,我甚至

Elixir 凤凰城:牛仔制作失误

我们最近将phoenix应用程序部署到生产环境中,但有时会间歇性出现此错误 Error in process #PID<0.2328.0> on node :"competition@127.0.0.1" with exit value: {:function_clause, [{:cowboy_protocol, :parse_method, ["", {:state, #Port<0.5743>, :ranch_tcp, [:cowboy_router

Elixir Wallaby集成测试单独通过,一起运行时失败

我正在使用(0.17.0)对phantomjs(2.1.1)、最新的Elixir(1.4.5)和Erlang(20)进行验收测试。我已经写过,每一个单独运行时都通过了,但是当我一起运行时(通过混合测试测试/验收),它们失败了,因为页面上应该显示的内容没有通过。就好像所有的测试都在同一个浏览器中运行,即使Wallaby应该“为您管理多个浏览器” 我相信我已经根据设置好了一切,尽管我没有使用async:true运行测试,因为我的应用程序使用套接字和Phoenix.exto.SQL.Sandbox。要

Elixir “使用”的好处是什么;套用;超过;“正常”;模块函数调用?

我正在学习Elixir,我想知道使用apply调用模块函数的好处是什么: apply(Enum, :reverse, [[1, 2, 3]]) 而不是使用常规调用: Enum.reverse([1, 2, 3]) 什么时候第一个更好?当模块的名称、函数以及希望传递给它的参数的数量在编译时已知时,就不需要调用apply/3。如果在运行时选择了其中任何一个选项,apply/3是进行适当调用的唯一方法。在某种程度上,它就像“eval”函数的一个非常有限的子集:它允许您将模块和函数的名称以及要传递给

__信息/1与:Elixir 1.6中的导出

在Elixir 1.5中,我曾经使用\uuuu info\uuuu函数,并将:exports原子作为种类参数 在1.6中:导出已作为选项删除。我查看了1.6版本的变更日志,没有看到任何关于变更的内容 # Used to work MyModule.__info__(:exports) 现在怎么做 1.5文件: 1.6文档:您可以使用MyModule.module\u info(:exports),这是Erlang变体。闻起来像是清理了一些无用的复制品。1.5文档明确引用了Erlang模块文档

Elixir 如何习惯性地检查变量;是假的;或;“不正确”;长生不老药?

我正在Phoenix编写一个查询,我需要检查字段的位置false 例如where(查询[x],x不是真的) 令我惊讶的是,关于如何习惯性地检查elixir中的错误或不正确的信息并不多 为了更清楚起见,请使用一些psuedocode: iex(1)> x = nil or x = false iex(2)> x is not true #desired idiomatic expression > true 你可以这样做: x = false if x do "truth

Elixir 修改联接表以引用不同的表并重命名

我目前有一个名为leagues\u questions的表,但在开发过程中,我意识到该表应称为seasures\u questions,并引用seasure表,而不是question表。我正在努力理解做出这一改变的最佳方式。我的第一个想法是创建一个新的迁移来修改这个表。以下是我的尝试: 旧移民: 新移民: 我还需要更改表名,但我想我可以处理 我认为这不会奏效,我甚至还没有真正尝试过,因为我不知道如何更改引用部分。如何在迁移中修改表的references列?要重命名需要执行的列,请执行以下操作 r

如何在Elixir映射中提取值

假设我有这个 %{ “联系人全名”=>[“简”、“乔”、“工作”], “联系人手机号码”=>[“1234”、“5678”、“9012”], “联系人关系”=>[“兄弟姐妹”、“员工”、“员工”] } 我如何遍历该地图,获得 “简,1234,兄弟姐妹”,“琼斯,5678”,“东西”,等等 试用 Enum.each(联系人,fn{k,v}-> IO.puts(“{k}-->{v}”) (完) 但这产生了 联系人全名-->JaneJoeJob 联系人手机号码-->123456789012 联系人关

Elixir Enum.split_使用但仅使用结果元组的一侧

如何使用()访问Enum.split_之后的第一个列表 我只想使用[4,2,0]访问列表,并通过另一个Enum.filter()函数运行它 差不多 m = Enum.split_with([5, 4, 3, 2, 1, 0], fn x -> rem(x, 2) == 0 end) |> Enum.filter(fn -> ) //Filter only first list after split 尝试elem(元组,索引) 或者,您可以只使用Enum.filte

Elixir 是否有与Python';什么是长生不老药?

我希望有一个Elixir映射,其中任何键都有特定类型的默认值。使用或实现类似功能的最佳方法是什么?最简单的方法是使用Map。获取/3如下: iex(1)> map = %{foo: "bar"} %{foo: "bar"} iex(2)> Map.get map, :foo, "baz" "bar" iex(3)> Map.get map, :fiz, "baz" "baz" 如果不希望每次都指定默认值,可以创建“隐藏”默认值的函数: iex(4)> my_get =

Elixir &引用;Regex.match中没有函数子句匹配?/2“;运行外部迁移时

我正在开发我的第一个Phoenix应用程序,并尝试使用Exto迁移创建我的第一个DB表。但是,每当我尝试使用mix-exto.migrate-Repo运行迁移时,都会出现一个错误: (elixir) lib/regex.ex:157: Regex.match?(~r/^[^:\/?#\s]+:\/\//, nil) (ecto) lib/ecto/utils.ex:29: Ecto.Utils.parse_url/1 (ecto) lib/ecto/repo/backend.ex:16: Ect

Elixir 生产和开发的不同供应商文件

我正在使用Phoenix 0.14.0,并计划使用reactjs创建用户界面 我这样做的方式就是将react.min.js放在web/static/vendor文件夹中。 问题是,我希望在开发中使用react的非小型版本,因为它有调试代码 当我使用react.min.js时,缩小后的app.js的最终大小约为150K,如果我使用react.js时,最终大小为550K,我不认为这是一个可以忽略的差异 有没有一种方法可以在phoenix中使用不同的静态文件进行生产和开发?您可以将常规的react.j

Elixir Enum.reduce/2不';输出IO

我正在使用Enum.reduce,试图在reduce中添加一些调试输出,但它似乎没有在Enum.reduce/2中输出。在Enum.reduce/3中按预期工作 nodes = [%{"value" => "x"}] Enum.each(nodes, fn (node) -> IO.puts "Each" IO.inspect node["value"] end) Enum.reduce(nodes, fn (node, acc) -> IO.puts "Red

Elixir 在长生不老药中定义顺序

我已经在elixir中定义了一些结构,现在我想以我决定的方式比较这些结构 基本上我想写>,>=,不,这是不可能的。但是,您可以使用Enum.sort/2或Enum.sort\u by/2以任何方式进行排序。例如: iex> Enum.sort_by [%{name: "foo"}, %{name: "bar"}], fn data -> data.name end [%{name: "bar"}, %{name: "foo"}] 您也可以在模块中定义一个比较函数来进行适当的比较,类

Elixir 使一个领域在外太空中独一无二

如何在EXTO中使字段唯一 我认为它与Ruby中的活动记录相同,但它似乎不是您想要使用的。这与活动记录不同,因为它使用数据库来确保唯一性。活动记录将查询具有相同值的记录,如果返回任何记录,则将失败。这有一个竞争条件,如果在获取以检查唯一性和插入记录之间插入一个值,则最终会出现重复数据或引发错误(取决于是否在数据库上设置了索引。unique\u constraint/3没有此竞争条件 值得注意的是,由于在尝试插入之前不知道唯一性,因此唯一约束将在验证后发生。不可能同时显示验证和约束错误 您正在使用

Elixir 长生不老药列表串联

所以我一直在玩长生不老药,我有点困惑: iex> [ 1 | [ 2 ] ] // [ 1, 2] (expected) iex> [ 1 | 2 ] // [ 1 | 2 ] (huh?) 我的困惑在于为什么第二个版本会这么做。我知道2不是一个列表,所以它不能将“头”和“尾”连接起来,但是,在我看来,当尾不是列表时,它应该抛出一个错误。我一直在想一个有这种行为的用例,但都是空手而归。如果有人能解释为什么这是理想的行为,我会非常感激。谢谢 列表的尾部实际上可以是任何术语,而不仅仅是

Elixir 长生不老药外星2创造多对多联想

我怎样才能与星外2建立多对多关系?作为一个例子,我想 创建可以包含多个类别的帖子。这些类别已经存在。例如: [%Category{id: "1", name: "elixir"}, %Category{id: "2", name: "erlang"}] 我用的是外星2β0。示例项目称为ECOTO2 我定义了两个模型: defmodule Ecto2.Post do use Ecto2.Web, :model use Ecto.Schema schema "posts" do

Elixir 开始混合任务流程依赖项

对长生不老药还不熟悉,但到目前为止还很喜欢:) 我的许多混合任务都依赖于HTTPotion 我的mix.exs文件被声明为 def application do [ applications: [:logger, :cowboy, :plug, :httpotion, :poison], mod: {BiddingAgent, []} ] end 因此会自动调用HTTPotion.start。但是,当我运行需要调用http请求的任务(如mix c

Elixir:何时使用.ex和何时使用.exs文件

长生不老药的证明文件 除了Elixir文件扩展名.ex外,Elixir还支持 .exs文件,用于编写脚本。Elixir对这两个文件的处理完全相同 当然,唯一的区别在于意图。ex文件是指 编译的while.exs文件用于编写脚本,无需 汇编 但我仍然不确定何时使用哪种文件类型。.ex和.exs的缺点和用途是什么?.ex用于编译代码,.exs用于解释代码 例如,ExUnit测试位于.exs文件中,这样您就不必每次更改测试时都重新编译。如果您正在编写脚本或测试,请使用.exs文件。否则,只需使用.ex

Elixir 外部NoSQL适配器的最低要求

我们正在寻找一种最好的方法,将Elastic整合到我们的项目中,同时保留phoenix Exto提供的所有优点,即变更集验证和phoenix.HTML.Form兼容性 有了Ecto 2.0,这项任务似乎比以往任何时候都要容易 因此,问题是: 是否有NoSQL外部适配器的框架 初步要求是什么?陷阱 这种适配器处理EMBBED的最低要求是什么 Michal Muskala写了一篇关于为Exto创建NoSQL适配器的好文章: 这是三个实质性问题,每个问题都有各自的特点。也许你想从第一个问题开始,然后

Elixir 如何在总括项目的根目录下创建混合任务?

我有一个长生不老药伞形项目。此项目中的每个应用程序都可以使用mix-escript.build编译成可执行文件 我试图从伞形项目的根运行此命令,但出现以下错误 ** (RuntimeError) Trying to access Mix.Project.app_path for an umbrella project but umbrellas have no app 我明白为什么这行不通。因此,尝试在伞形项目的根目录下创建自定义混合任务。由于根目录没有lib目录,我添加了一个目录,并在其中创

Elixir System.cmd避免推送到日志

我通过以下方式在Ubuntu中运行bash命令: 不幸的是,系统输出太重,所以我不想看到它,尤其是在我的测试中。如何使System.cmd不出现在我的日志中?在测试中捕获(而不是显示)输出 为了演示,让我们首先执行一个System.cmd,而不捕获IO: iex(1)> hostfun = fn -> System.cmd("hostname", [], into: IO.stream(:stdio, :line)) end #Function<20.52032458/0 in

Elixir Arc:文件已上载和处理,但未存储在数据库中

我正在使用elixirs Arc和Ecto以及AmazonS3来存储我以前下载的文件。一切似乎都正常,它们最终在S3上运行。但我的数据库中没有存储任何内容。因此,如果我试图生成一个URL,我总是会得到默认的URL 这是我存储文件的方式: iex > user = Repo.get(User, 3) iex > Avatar.store({"/tmp/my_file.png", user}) {:ok, "my_file.png"} 但是user.avatar字段仍然为零 我的用户模

Elixir Phoenix IEx.pry未在代码中设置断点

我想在Phoenix中调试控制器,就像我以前对Rails所做的那样,只需将binding.pry放在任何我想放置断点的地方,因此,我使用IEx.pry对Phoenix进行了同样的尝试,如下所示:- defmodule Rumbl.UserController do use Rumbl.Web, :controller require IEx def index(conn, _params) do IEx.pry users = Repo.all(Rumbl.User

Elixir 如何管道化HTTPoison.Response.body

我正在尝试使用Elixir语言编写简单的应用程序HTTPoison.get返回HTTPoison.Response带有body键的结构。是否可以将此逻辑包含到管道中 Repo.one(Site).sitemap_url |> HTTPoison.get! |> ... |> Floki.find("sitemap loc") |> Enum.map(fn(element) -> Floki.text(element) end) 如前所述,结构只是映射。因此,

Elixir 为集合而不是成员创建嵌套路由

创建嵌套管线时,它会为成员创建嵌套管线 resources "/my_items", ItemController do get "/route123", Item.SubItemController, :route123 end 路线将为“/my_items/:id/route123”。如何为集合创建相同的嵌套管线 “/my_items/route123”资源中没有收集路线,但您始终可以这样做 get "/my_items/route123", Item.SubItemC

Elixir 有选择地在伞中开始使用长生不老药

对于我的特定用例,如何控制伞式项目中的哪些应用程序启动: 仅当某些应用程序尚未在群集中运行时才启动它们(例如单例应用程序) 仅根据节点名称启动某些应用程序(例如,某些应用程序可能使用具有IP地址限制的远程系统) 打开控制台时不要自动启动任何应用程序(例如iex-S mix) 谢谢您可以通过使用OTPs分布式应用程序功能来处理#1。您需要像这样配置内核应用程序: config :kernel, :distributed, [ {:app1, 5_000, [:"node1@<x.x.x.

Elixir GenStage:在GenServer更新时重试处理请求

如果我的GenStage的handle\u demand/2方法如下所示: def handle_demand(demand, _state) when demand > 0 do case Queue.dequeue do nil -> Logger.debug("Queue empty.") {:noreply, [], []} {job, updated_queue} -> {:noreply, job, updated_que

Elixir 在应用程序启动时加载证书文件

我需要在应用程序稍后开始使用加密验证时加载证书文件。我不想每次调用正在使用其内容的函数时都读取此文件,加载此文件一次并多次使用的最佳方法是什么?最终通过使用GenServer解决了这个问题,该GenServer的密钥加载在其init函数中并存储在其状态。不要忘记指定@external\u resource:看起来您需要它。

Elixir 能否使用'phx.gen.html'生成嵌套资源?

如果我的Phoenix/Elixir应用程序中已经有资源“供应商”,并且我想在其下面添加资源“设备”作为嵌套资源,那么如何使用mix phx.gen.html生成资源?我遇到的问题与路径函数的助手有关。即,当我想要的是供应商设备路径时,设备控制器具有设备路径功能 如果顶级生成器无法工作,我可以使用什么方法获得此功能?如果答案是手工编码,那就好了 更新为了澄清,我打了个电话mix phx.gen.html目录设备名称:字符串vendor\u id:references:vendors,其中Cata

在Elixir中使用xvfb运行shell命令

我想使用使用xvfb(虚拟X服务器)的节点脚本。我有这个命令: xvfb-run -a --server-args="-screen 0 1366x768x24" node something.js 在候机楼工作。但当我试图把它改写成长生不老药时: System.cmd“xvfb运行”、[“-a”、“--server args=\”-屏幕0 1366x768x24\“”、“节点”、“something.js”] 然后我的错误是,我需要xvfb。这与我运行node something.js时遇

Elixir 长生不老药:按名称对列表排序

是否允许我在Elixir中执行此操作,例如对命名列表排序 list = [9,1,2,3] Enum.sort(list) 产生 [1,2,3,9] 因为我不知道列表中的数字是什么,所以我无法具体输入它们。如果通过对命名列表进行排序,您想对其进行适当排序,我认为这是不可能的,因为在elixir中值是不可变的 但是,您可以重新绑定原始变量,使其指向新值: iex(1)> l = [9,1,2,3] [9, 1, 2, 3] iex(2)> l = Enum.sort(l) [1,

如何在Elixir中更改命令提示符的颜色?

比如说,我喜欢 var1 = %{someprop: 123} IO.inspect var1 我需要的行的背景是黄色和文本的颜色是黑色。如何操作?可以使用IO.ANSI中的函数更改文本或其背景的颜色。您可以定义自己的inspect函数,该函数将背景更改为黄色,文本更改为黑色,并打印检查的值: defmodule A do def my_inspect(term) do IO.puts IO.ANSI.format([:yellow_background, :black, insp

Elixir 如何导入在另一个文件中定义的自定义模块?

a、 exs: b、 exs: defmodule A do def greet, do: IO.puts "hello" end ~/elixir_programs$ tree . . ├── a.exs ├── app1.exs ├── b.exs .... 结果: defmodule B do import A def say_hello, do: greet end 因此,如何使用限定名调用另一个模块中定义的函数: b、 exs: defmodule A do d

如何将erlang模块(wxImage)常量/数组转换为Elixir中的列表?

我试图使用Erlang wxImage库操作Elixir中的“test.jpg”图像,但我得到了一个错误。我不知道如何将array/const输出转换为列表,以便在Elixir中使用它 我也不知道为什么在语法似乎正常的情况下会出现子句函数错误 defmodule Imedit2 do def readimg(image) do {:ok, _file} = File.open("happy737.txt", [:write]) IO.puts("hi there")

Elixir 运行一次长生不老药流程

我试图通过调用genServer模块“Cache”来创建“Cache warter”,以便在应用程序启动时运行一次 我创建了一些代码: GenServer“Cache warter”,用于在应用程序启动时处理单个异步调用,配置为[restart::temporary]。其主要思想是在cast之后返回{:stop,:normal,state},以关闭进程 defmodule TlgmBot.Application do ... def start(_type, _args) do

Elixir 如何在**所有**测试完成后清理测试数据库?

我有一个测试模块,一个接一个地运行同步测试。 我希望在所有测试完成后清除测试对数据库所做的所有更改,即我希望数据在一次测试与另一次测试之间保留在数据库中。 我的应用程序正在使用PostgreSQL数据库(MyRepo)。 当我在setup\u all函数中使用exto.Adapters.SQL.Sandbox.checkout(MyRepo)时,每次测试后都会清理数据库。 这是我的condig/test.exs文件: config :my_repo, MyRepo, pool: E

elixir中的多个条件修改变量

如何使用Elixir编写这个Ruby代码 value=0 如果条件为1,则值+=3 如果条件为2,则值+=2 如果条件为3,则值+=8 如果条件为4,则值-=3 如果要使用管道,可以创建助手函数 def add_if(总计、条件、值)do 如果是条件,则do:总计+值,否则:总计 结束 价值观= 0 |>如果(第1、3条)出现,则添加 |>添加_if(第2、2条) |>如果(第3条、第8条)添加 |>如果(条件4,-3),则添加 根据您正在做的事情,在修改数据的任何函数中设置条件/逻辑也是有意

使用Elixir中的Task.async_流将1K映像写入磁盘

我通过HTTP请求下载图像,通过该请求我获得一个二进制图像,并将其写入一个文件,如 File.write(image_with_dir, image, [:binary]) |> File.close 获取HTTP请求并将其写入磁盘的整个操作都是在中完成的 |> List.flatten() |> Enum.sort() |> Task.async_stream(&(inline_process.(&1, images_directory)), max_

Elixir 列出给定铁路模型上可能的列车路线

我想计算给定模型铁路上的可用路线 假设: 所有列车仅在定义的点(称为火车站)启动和停止 火车在旅途中不会相撞。不用担心 我们不必考虑火车的长度。我们假设它是一个火车头,占据了原子的空间 在一个火车站,只有一列火车可以停下来 一列火车可以在同一个火车站启动和停止 所有列车的起始位置和结束位置都存储在地图中。所有排列都存储在一个列表中。例如: iex(1)> Trains.list_routes(["ICE"], ["Hamburg", "

Elixir 如何在'mix test'命令上调用Web包

我正在编写一个小的测试应用程序,它只在运行测试时存在,否则就不存在。因此,我希望webpack在启动时执行资产复制 在package.json中,我添加了 "scripts": { "test_pack": "webpack --mode development" }, 现在我不知道如何正确地捆绑npm run test\u pack以在调用mix test时工作?在您的mix.exs中可以创建。可能已经有了test的别名

Elixir 计算视图中的总价

我是elixir的新手,我尝试做的是计算用户购物车中物品的总价格,并将其显示在购物车页面中。我写了一个函数,它是我在互联网上找到的函数的组合。我将感谢任何帮助 这是我购物车的index.html.eex <h1>Your Cart</h1> <%= if @books do %> <ul> <%= for book <- @books do %> <li>

上一页 1 2 ...  17   18   19   20    21   22   23  ... 下一页 最后一页 共 125 页