Elixir 插座赢得';t连接到端点

返回到“ws://localhost:4000/ws”的WebSocket连接失败:WebSocket握手期间出错:意外响应代码:404 但是我在/ws端点上有套接字,对吗 var socket = new Socket("localhost:4000") socket.connect() 它应该能够连接到该端点,但由于某种原因,它根本无法到达该端点 [info]运行Sapphire.Endpoint并打开Cowboyhttp://localhost:4000@JoséValim找到了解决方案

Elixir 回购预加载中的订单依据

我想了解在Repo.preload所做的查询中,为什么会有orderby子句 App.Repo.get(Sopitas.Continent, 1) |> App.Repo.preload(:countries) 执行的查询包括: [debug] QUERY OK source="continents" db=0.4ms SELECT c0.`id`, c0.`name`, c0.`sm_id`, c0.`inserted_at`, c0.`updated_at` FROM `cont

Elixir 预加载的数据在转换为JSON时丢失

在我的上下文中,我有以下预加载所有者和受让人,它们都属于用户 def list_tasks do Repo.all(Task) |> Repo.preload([:owner, :assignee]) end 在我的索引控制器中,我有如下内容: def index(conn, _params) do tasks = Issue.list_tasks() IO.inspect(tasks) render(conn, "index.json",

不使用端口80的Elixir插头牛仔

我有一个路由器插头 defmodule Rest do use Plug.Router import Plug.Conn plug :match plug :dispatch get "/hello" do send_resp(conn, 200, "Hello, world!") end match _ do send_resp(conn, 404, "oops") end def start do Plug.Adapters

Elixir 如何在文本上进行模式匹配?

假设我想对文本进行模式匹配。具体来说,我想在第一个字母上进行模式匹配 例如,如何创建一个匹配“about”和“analog”但不匹配“beta”的模式 我试过这个: defmodule MatchStick do def doMatch([head | tail]) when head == "a" do 1 end def doMatch([head | tail]) do 0 end end res = MatchStick.doMatch("abcd"); 我还尝试了角

Elixir 使用EXTO运行自定义sql查询

我在玩长生不老药和外星人的东西。我想创建自定义SQL查询,它使用一些特定于postgres的功能(在本例中:它搜索postgres数组) 以下是我想做的: iex(5)> query = from g in MyModel, where: "'sample_tag' = ANY(tags)", select: g #Ecto.Query<from g in MyModel, where: "'sample_tag' = ANY(tags)", select: g> iex

Elixir 在Phoenix框架中编写与ROR等效的测试用例

我们如何在测试数据库中预加载数据以进行集成测试,就像在RubyonRails中一样,我们有用于集成测试的装置。 在Phoenix中编写测试用例有什么好的文档吗?对于集成测试,您可能想看一看,它类似于Capybara for Elixir。他们有一些很好的例子让你开始学习 据我所知,在菲尼克斯并没有像在轨道上那样装载固定装置的标准方式。我个人的观点是,最好只对每个测试用例进行最小的设置,而不是复杂的全局装置。它使您更容易看到实际测试的内容,以及哪些装置与当前测试用例真正相关。我想说的是,最好花时间

Elixir 如何从管道函数链中捕获值?

假设我有一系列函数 %{key1: "value 1", key2: "value 2"} |> CustomModule.func1 |> CustomModule.func2 |> CustomModule.func3 如何将返回值分配给变量(如final\u result),然后在case语句中使用它或进一步测试它?您可以使用= final_result = %{key1: "value 1", key2: "value 2"} |> CustomModule.f

在phoenix/elixir中测试文件上载

我正在尝试测试一个控制器,它期望使用phoenix框架上传文件。我在phoenix guides()上遵循了指南,它可以在浏览器中运行,但是我在为它编写测试时遇到了问题。以下是我所做的: test“POST photo”do {:好的,raw_file}=file.read“1528_27.jpg” conn()|>post(“/api/v1/originals”,%{:image=>raw_file}) #做一些断言 结束 问题是,在控制器中,我的文件永远不会变成%Plug.Uploadst

Elixir 什么';在Phoenix框架中,“def”和“defp”的区别是什么?

我正在阅读凤凰城的编程书籍,我想知道def和defp之间的区别是什么 在我的控制器中有几个功能-其中大多数是这样的操作: def new (conn, _params) do ... end defp user_videos(user) do ... end 这本书让我在此控制器中创建了另一个函数,它不是一个典型的控制器操作,如下所示: def new (conn, _params) do ... end defp user_videos(user) do ... end 因此,我的问题

Elixir 函数将如何调用

我试图配置它,如何斐波那契工作,并有以下代码 defmodule FibSolver do def fib(n) do fib_calc(n) end defp fib_calc(0) do IO.puts "Zero" 0 end defp fib_calc(1) do IO.puts "One" 1 end defp fib_calc(n) do IO.puts n fib

Elixir 二进制字符码到易读字符串?

我对Elixir中的二进制文件和字符串感到困惑。我有一个功能。它返回表示字符串的二进制字符代码,但我不知道如何以易读的方式打印该字符串。我曾考虑将二进制文件转换为字符列表,然后枚举字符列表,并将每个字符转换为字符串,但这似乎需要大量的工作。有更好的办法吗?试试看 iex(1)>a=“你好”世界 iex(2)>String.chunk(a,:可打印) [“你好”,“世界”] 请粘贴问题中的代码。除了@Brandon的答案,请参阅我对类似问题的回答:最后我提到IO.inspect binary,[{

如何避免Elixir中的嵌套if语句?

有没有办法在Elixir中重构它,使它更具可读性 def validate(params) do Repo.start_link if validate_oauth_params(params) === true do oauth_client = Repo.get_by(OauthClient, random_id: params["client_id"], secret: params["secret"]) if oauth_client !=

Elixir 具有延迟间隔的长生不老药循环

我在elixir中有以下代码,我想在循环中调用函数-parseCsvFiles: def loopParseFiles do spawn(Parse_Csv,:parseCsvFiles,[self]) receive do {:parse_complete} -> loopParseFiles after 20000 -> loopParseFiles end end 在上面的代码中,我想设置一个延迟,使l

Elixir 多个控制器上的干复制代码

我在/users/:user_id/…下有几个嵌套路由,其中的控制器需要用户。在所有这些控制器中,我有以下代码。但我不想在所有这些控制器中都有相同的代码,而只是在一个地方。应该把它放在哪里?我怎样才能把它擦干 defmodule MyApp.XyzController do 使用MyApp.Web,:controller 插件:分配用户 [...] defp分配用户(连接,选择)do 凯斯康涅狄格州 %{“用户id”=>用户id}-> case Repo.get(MyApp.User,User_

Elixir 长生不老药在哪里';s文档描述了调用Erlang代码的方法吗?

您可以通过在Erlang模块中添加冒号来调用函数: :erlang.time() …但是,在中描述的符号在哪里 我之所以这么问是因为我更喜欢使用纯文档来掌握长生不老药,但我显然需要一些初始引导信息来理解关键位是如何组织的。我认为没有直接说明。每个Erlang模块的名称都是一个atom。在字符串前面加冒号表示该字符串是原子:模块。函数只解析为Erlang中模块中的特定函数 这些信息是众所周知的,但在参考文档中没有提到,因为在参考文档中,您有纯长生不老药专用的东西 只需检查一下屏幕。对您来说,最有效

Elixir 长生不老药药盒构造与装订

我正在学习长生不老药,但在一个概念上遇到了困难。考虑下面的代码: iex(3)> case 1 do ...(3)> x -> "x exists" ...(3)> _ -> "something exists" ...(3)> end "x exists" iex(4)> x ** (CompileError) iex:4: undefined function x/0 变量x尚未绑定到任何对象,那么第一个

Elixir 未重新启动受监控的GenServer?

我缩小了问题的范围,因为问题太大了。代码如下: defmodule MayRaiseGenServer do use GenServer def start_link do IO.puts "started MyServer, name is #{__MODULE__}" GenServer.start_link(__MODULE__, [], name: __MODULE__) end def maybe_will_raise do GenServ

Elixir 删除会话时链接到的错误(PHOENIX)

我有一个链接可以删除当前用户的会话 <%= link "Logout", to: session_path(@conn, :delete, current_user.id), method: :delete, class: "button alert" %> 由于某种原因,它无法工作,尽管当我将链接更改为按钮时,一切似乎都正常工作 <%= button "Logout", to: session_path(@conn, :delete, current_user.id),

Elixir Phoenix fixture json文件

如何在phoenix项目中加载JSON fixture文件 当我尝试类似Application.app\u dir(我的应用程序“priv”)的东西时,它会给我一个编译路径,我不能在测试中使用它 是否有其他方法从“test/support/somefile.json”加载夹具文件?您可以使用\uuuuuu DIR\uuuu和路径。展开/2。例如,如果您的测试在test/controllers/page\u controller\u test.exs中,则可以使用以下方法获取test/suppor

Elixir GenServer异步集成测试

试图学习使用elixir进行基本代码测试,但在测试异步函数(genserver的handle_info和cast)时遇到了困难 一种有效但感觉不正确的方法是在抛出异步函数后使用:timer.sleep(x) 例如,想象一下,handle\u cast正在处理来自state的项目列表,并将调用发送到另一个模块,该模块将从外部API获取数据,完成后,它将向同一个genserver发送消息(API数据) 最好的测试方法是什么?我可以在测试中监视genserver邮件/邮箱吗 编辑: 另一个例子是,在i

Elixir 不同名称空间/作用域中的类似控制器--如何区分它们?

我在不同的作用域/文件夹中有两个类似的控制器: MyApp.Controller1 MyApp.Namespace1.Controller1 及 如何在这些控制器中的url或路径帮助程序中引用:index 根据您的phoenix.routes,这些电话分别是: some_path(MyApp.Endpoint, :index) some_path(MyApp.Namespace1.Endpoint, :index) 详情请参见章节。根据您的phoenix.routes,这些电话分别是: so

Elixir Phoenix 1.0至1.2:环境开发的未检查依赖项

我正在将Phoenix从1.0更新到1.2 我按照步骤从1.0升级到1.1,然后从1.1.x升级到1.2.0 每当我尝试编译时,都会出现以下错误: Unchecked dependencies for environment dev: * phoenix_pubsub_redis (Hex package) the dependency does not match the requirement "~> 2.1", got "1.0.0" * phoenix_html (Hex pa

Elixir 学习长生不老药和混淆原子

我对原子以及如何使用原子感到困惑 老实说,我正在阅读文档,只是不理解原子:( 有人能提供一些例子或东西来解释这一点吗 谢谢你可能想得太多了。一个原子只是一个值。就像真和假都只是值一样,你现在可以用任何词作为值。事实上真,假和零都是隐藏的原子 您可以传递原子,而不是将字符串作为内部消息传递给应用程序。您可以使用原子,而不是将字符串用作映射或关键字列表的键 原子有一个非常大的警告,它们永远不会被垃圾收集,因此您永远不应该通过编程方式(从用户输入或其他方式)生成原子,否则,如果创建的原子太多,您就有溢

Elixir 如何在html.exx文件上获取查询字符串值?

我是新来的凤凰,长生不老药。我试图在new.html.exx的text_字段上获取params[:task_id],类似于下面的rails代码 <%= f.text_field :task_id, value: params[:task_id] %> 我尝试使用IEX.pry并得到以下结果,但我无法将其应用于文本输入值 pry(3)> conn.params["task_id"] "1" 也尝试了下面的代码,但没有运气 <%= text_input f, :task

Elixir 如何序列化EXTO record结构,使其在数据库中可存储为:map?

我想存储从Repo.get(MyModel,id)返回的exto.Schema结构 像\uuuu meta\uuuu,关联:之类的东西会阻止jsonification,所以我捕获了一个异常(这是合理的)。是否有任何exto本机函数仅获取记录列的映射,我可以将其序列化并存储在数据库中?由于我不知道任何用于此目的的exto本机函数,我想您应该使用: 筛选不需要的密钥: 并将结果设置为: 编辑:看起来您可以在查询中使用“map()”来返回映射,而不是结构:我的解决方案 defmodule MyA

Elixir 将二进制模式匹配存储在变量中

我有一个与某个二进制值匹配的函数: def parse(<<timestamp::binary-size(4)>>) do IO.inspect timestamp end def parse()do 检查时间戳 结束 不幸的是,我真正的“模式”比这长得多。是否可以存储该模式并在以后匹配 @pattern <<timestamp::binary-size(4)>> def parse(@pattern) do IO.insp

Elixir 如何从Phoenix应用程序中删除Ecto模型

我通过如下命令生成了一个模型: mix phoenix.gen.html Project projects title:string 我想撤消此操作(删除已创建的所有文件/数据库记录): 与手动删除所有文件相比,是否可以使用命令来执行此操作?如果是这样的话,这个命令是什么 例如:在Rails中,您可以执行Rails d scaffold…来撤消Rails g scaffold命令 另一个选择是使用我的版本控制系统(git)来实现这一点;但是,一个删除mix phoenix.gen.html生成

在Elixir mix应用程序中,我应该将模块放在哪里?

我有一个简单的项目,我已经开始调用测试。所以我做了: mix new test 我得到了通常的目录树。在lib目录中,是test.ex。但是我希望test.ex使用一个名为Mystuff的模块,但是我不知道把Mystuff.ex放在哪里,因为我得到了一个编译错误 下面是test.ex(在test/lib目录中): 下面是我在test/lib中也包含的mystuff.ex: defmodule Test.Mystuff do def bye do IO.puts "bye" en

Elixir r(模块名称)未在iex中重新加载@doc

我在iex>中更新我的@doc以测试它的外观。我遇到的问题是,我必须退出iex才能查看更新的@doc文档。使用r()时,是否有方法重新加载模块@doc变量 更新@doc以返回:none而不是:falls_town并保存文件 iex> r(Coordinate) iex> h Coordinate.island/1 # issue: still showing the old @doc example ## Examples iex> {:ok, coo

Elixir 体外循环中的三层深层关系——如何预加载

在我的项目中,我有相当多的模型层次关系。在控制器中,我有以下内容: var1 = Repo.get!(Model1, 123) |> Repo.preload([child_items1: :child_items2]) 这很好,但我必须更深一层 即每个子项2多个子项3。现在,如何为每个子项2预加载子项3?我通常使用作用域。例如,在我的模型(1)中,我将有一个with_model2函数预加载model2。因此,要连续加载3个关联,我会有如下内容: def with_model2(que

Elixir 长生不老药生产国

有一个生产者,由值列表初始化 defmodule GenstageExample.Producer do use GenStage require Logger def start_link(initial \\ 0) do GenStage.start_link(__MODULE__, initial, name: __MODULE__) end def init(el_list) do Logger.info "producer init #{insp

Elixir:在宏中是必需的

我写了一个宏,我想在其中使用Logger.info,所以我需要Logger。这样做的最佳实践是什么?强制客户机自己需要记录器,或者在那里添加using宏和require Logger。记录器调用是否需要在宏中?也许宏可以扩展为对模块的函数调用,然后进行日志记录 如果确实需要从宏扩展执行日志记录,那么我会使用宏添加一个\u,以要求依赖项和您的模块。最好的做法是不要突然从宏记录日志。作为宏的用户,我可能不希望日志被无关信息污染。另一方面,拥有这样一种选择加入的能力可能是一种重要的选择。也就是说,我将

Elixir &引用;滑动窗;在长生不老药清单上

我正在寻找一种方法,允许我在Elixir中的列表上创建一个滑动窗口,如下所示: [1,2,3,4,5,6] |> Enum.magic_function(2) --> [[1,2],[2,3],[3,4],[4,5],[5,6]] 类似于chunk\u every函数,但每次的移位为1。您可以使用的第三个参数指定在每个chunk之后要跳过多少个元素(此处为1),第四个参数告诉它,如果最后一个chunk小于指定的长度,则丢弃最后一个chunk iex(1)> [1, 2, 3,

Elixir `%`使用file.write或IO.write时文件末尾的字符

在执行以下代码之后: File.touch("testfile") file = File.open!("testfile", [:write, :utf8]) IO.write(file, "My pretty text") 在操作系统终端中读取文件时,我看到额外的%字符。 但是当我用文本编辑器打开一个文件时,我看不到这个字符。 有人能给我解释一下为什么我会看到这个角色吗 这是zsh告诉您在输出的末尾没有换行符 我不使用zsh,但您可能可以使用echo-n“test” IO.write(fi

Elixir 枚举映射时,如何编写传递给Enum.map的函数?

以下内容会引发错误 iex(121)> val_map = %{"pri" => %{"tit" => "name1"}} iex(122)> fp = fn (new_map) -> Map.get(new_map, "pri") end 当您在地图上迭代时,它会将其转换为关键字列表(即使用元组): 在您的情况下,需要匹配元组的键部分: Enum.each %{a: 1, b: 2, c: 3}, fn {key, value} -> IO.put

Elixir 如何在一个.exs脚本中运行多个mix phx.gen.html命令

我试图从脚本中混合使用许多phx.gen.html命令,但只执行第一个命令。我尝试了不同的方法,其中一些方法如下,但没有任何效果: Mix.Task.run "phx.gen.html", Parser.parse "Contacts Skype skypes user_id:references:users skype --parent user" Mix.Task.run "phx.gen.html", Parser.parse "Contacts Phone phones user_id:

Elixir 在配置文件中调用Project.Endpoint.static\u url()

我需要配置OAuth协议,这样做的逻辑位置在/config/dev.exs中,不是吗 就在上面,我配置了端点。因此,在我的应用程序中,我可以编写Project.Endpoint.static\u url()并获取例如http://localhost:4000 在配置中获取此值的干燥方式是什么 config :project, Project.Endpoint, http: [port: 4000], url: [scheme: "http", host: "localhost", por

Elixir 如何在设备上复制crt文件

我想复制ca文件以建立ssl连接。我正在将ca放入lib lib/ mymodule.ex #using the ca path here mycrt.crt 然后使用mix firmware我给出了如下的相对路径 def getPath() do {path,0} = System.cmd("pwd",[]) String.replace(path,"\n","/lib/mycrt.crt") end 但是我们在主机上运行时使用的是iex-smix,所以

Elixir Repo.insert_all/2和唯一约束

我今天有一个相当有趣的问题。我正试图使用EXTO函数Repo.insert_all/2将CSV文件批量插入到我的数据库中。然而,有一件事困扰着我 在我的上下文中,问题在于以下代码: defmodule AppName.Roles do def bulk_insert(array_of_maps) do try do Repo.insert_all(Role, array_of_maps) rescue exception in Postgrex.Er

Elixir 无法将Argon2或Bcrypt与Comeonin一起使用,接收到冲突错误

我正在使用Comeonin的5.1.2版来散列密码。声明说bcrypt_elixir或argon2都是兼容的哈希库。我遇到的问题发生在这两个方面 如果我尝试使用文档推荐的Argon2.hash\u pwd\u salt,我会得到以下错误: ** (UndefinedFunctionError) function Comeonin.Argon2.hash_pwd_salt/1 is undefined or private. Did you mean one of: * hashpwsalt

Elixir 更新结构列表的最佳方法

假设我有一个结构列表,其中一个键是id: users = [ %User{id: 1, attempts: 5}, %User{id: 2, attempts: 12}, %User{id: 3, attempts: 2} ] 使用id==2将用户的尝试次数更新到99次以获得新用户列表的最佳方法(最有效的方法)是什么: updated_users = [ %User{id: 1, attempts: 5}, %User{id: 2, attempts: 99}, %Us

Elixir 如何找出哪个Atom包将我的文件权限更改为可执行文件?

我使用Atom作为项目的代码编辑器,它不断更改我的文件保存权限。具体地说,它增加了执行权限 这是Phoenix Elixir web项目,Atom在Windows上运行,但我使用WSL执行gitting并运行本地服务器 我分别检查了Atom设置和已安装的社区Atom软件包的设置,但没有发现影响权限的内容 在我的Atom上安装的社区软件包:Atom beautify、Atom elixir、Atom elixir formatter、language elixir这可能是一些兼容性方面的解决办法

Elixir |如何将变量分配给一系列数字并创建多个if语句

我试图找到奇数、偶数和可被1-100中的3个数字整除的数,但我找不到一种方法将enum.list_分配到1100以使其在50处停止显示 这就是我要做的。我只是分配变量,以便在变量后面创建一个场景 num = (Enum.to_list 1..100) [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37、3

Elixir 什么是;找不到#PID<;的迁移运行程序进程;0.94.0>&引用;是指对混合异位迁移的反应?

我正在阅读有关Phoenix contexts()的指南,在您运行的部分 mix-exto.gen.migration将作者id添加到页面 然后在迁移中添加一些内容。以下是完整的输出: $mix-exto.migrate **(RuntimeError)找不到#PID的迁移运行程序进程 (exto_sql 3.5.3)lib/exto/migration/runner.ex:100:exto.migration.runner.prefix/0 (exto_sql3.5.3)lib/exto/m

在phoenix elixir中处理模式匹配异常

我有多个控制器方法,其中我与即将到来的参数进行模式匹配,其中一个是 def index(conn, %{ "id" => camera_exid, "from" => from, "to" => to, "limit" => "3600", "page" => _p

Elixir 如何使用phoenix向一个套接字_id广播

在文档中有此示例,但它仅适用于断开连接 使用Phoenix.Socket 频道“房间:”,MyAppWeb.RoomChannel def connect(参数、套接字、连接信息)do {:好的,分配(套接字,:user_id,params[“user_id”])} 结束 def id(socket),do:“users_socket:#{socket.assigns.user_id}” 结束 #断开所有用户的套接字连接及其多路复用通道 MyAppWeb.Endpoint.broadcast(“

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