Elixir 外星生物协会的最佳做法

处理带有关联的模型时,加载关联模型的最佳实践是什么:显式使用Repo.preload或指定在定义查询时应预加载的关联?它们是等效的,因此任何方法都可以。如果你想把所有东西都放在一个地方,就把它作为查询的一部分回购预加载/2在出于某种原因已执行查询时非常有用

Elixir &引用;透析器:分析失败,出现错误..”;(透析器错误?或地图类型使用错误?)

在我学习长生不老药的过程中,我做了一个非常简单的应用程序,在用透析器检查类型时遇到了一个小障碍。在我的代码上运行透析器会导致分析失败错误。。。到目前为止,当我违反类型规范时,透析器只给了我警告而没有错误,所以我不知道错误是关于什么的 为了缩小问题的范围,我制作了一个超简单的函数来执行令人不快的返回值 @spec blabla(integer) :: %{atom => any} def blabla(1) do %{:error => 'wrong input (US

Elixir 使用'获取错误;属于';在exto phoenix.gen.html中

我正在创建一个与我的用户模型相关的模型。以下是phoenix.gen.html中使用的内容,如下所示: W:runcible>mix phoenix.gen.html Ansible ansibles ansible_name:string ansible_description:text user:belongs_to 但是当我运行它时,我得到了以下信息 Compiled web/models/user.ex Compiled web/controllers/user_controll

Elixir 二进制匹配中的变量存在问题

鉴于此代码: defmodule MyModule do def my_func(<< part::binary-size(size), rest::binary >>, size) do IO.puts(part) end def my_func_2(size, << part::binary-size(size), rest::binary >>) do IO.puts(part) end def my_

Elixir 长生不老药:如何获取列表中的最后n项?

我有一份清单: a = [1,2,4,5,6,7,8,9,9,88,88] 在Python中,获取最后n项很简单: a[-n:] 什么是长生不老药的等效物?与负值一起使用: iex(1)> list = [1, 2, 4, 5, 6, 7, 8, 9, 9, 88, 88] iex(2)> Enum.take(list, -4) |> IO.inspect(charlists: :as_lists) [9, 9, 88, 88] 获取(可枚举,计数) […]count必须

Elixir PhoeniX框架

我有一个带有指令的模型。我试图从中获取所有值,并在json响应中显示它们: defmodule Heroico.Datacenter do use Heroico.Web, :model @derive {Poison.Encoder, only: [:id, :identifier, :city, :state, :country]} schema "datacenters" do field :identifier, :string

Elixir :mnesia disk_cope不适用于我的长生不老药

如果我这样做 > alias :mnesia, as: Mnesia > Mnesia.create_schema([node()]) > fields = [:id, :to, :from, :body, :format, :metadata] > Mnesia.create_table(:mail, [attributes: fields, disc_copies: [node()]] ) {:aborted, {:bad_type, :mail, :disc_co

Elixir 尝试构建数据库时出现Phoenix unique_约束错误

我正在关注Phoenix 1.4的书,当我试图通过终端将数据输入到数据库时,我进入了“使用存储库数据”部分,我遇到了一个错误 我的IEx会话: iex(1)> alias Rumbl.Repo Rumbl.Repo iex(2)> alias Rumbl.Accounts.User Rumbl.Accounts.User iex(3)> Repo.insert(%User{ ...(3)> name: "José", username: "josevalim" ...(3

Elixir 在EXTO中添加和删除具有多对多关系的记录

我有两个外星模式模型,它们之间有很多关系 schema "Users" do many_to_many :locations, Location, join_through: "locations_users" end schema "Locations" do many_to_many :users, User, join_through: "locations_users" end 因此,在我的User.ex架构模型文件中,我应该如何编写一个函数来添加和删除用户 def add

Elixir Sentry.io与长生不老药应用——限制噪音

我正在寻找一种方法来限制生产环境中出现的问题的数量。我们所看到的问题是,如此多的问题被提出,以至于我们经常达到每月事件报告的上限。然后我们要么完全关掉它,要么付更多的钱 我正在使用并将其配置为在:prod env中运行,配置为config/config.exs: config :sentry, dsn: "https://c601bb145dc74719865b0778565f7728@sentry.io/1240796", environment_name: Mix.env, en

Elixir 如何使用exto.Migration约束只强制一个字段

我有一个名为Accounts的表,该表必须有一个“拥有”它的用户或组织。我想强制执行一个约束,强制提供用户id或组织id,但不能同时提供或不提供。该表如下所示: def change do create table(:accounts, primary_key: false) do add(:id, :binary_id, primary_key: true) add(:user_id, references(:users, type: :binary_id)

了解elixir phoenix中是否正在创建或更新子变更集

我有一个我正在创建或更新的嵌套模型。你可以把它想象成一篇有多条评论的帖子,只是在这种情况下,它是一个有多个警报的设备。要使用正确的操作显示正确的表单,我在父(设备)模板中使用以下代码: <%= if @alarm.data.id do %> <%= render AppWeb.AlarmView, "form.html", changeset: @alarm, action: Routes.device_alarm_path(@conn, :update,

Elixir 如何指定自己的Phoenix Channel JSON序列化程序?

在我的端点中,我得到了如下结果: socket "/socket", MarsWeb.UserSocket, websocket: [transport: Phoenix.Transports.WebSocket, serializer: {MarsWeb.JsonCamelSerializer, "~>2.0"}], 我试图用自己的JSON序列化程序替换JSON序列化程序(对传出消息进行camelcase编码) 我知道这个语法不对;它应该看起来怎么样 更新: 因此,为了进行

Elixir Phoenix应用程序启动后在哪里执行任务? 背景

我正在尝试使用Phoenix LiveView创建桌面应用程序。现在,以一种用户友好的方式(至少是我所知道的唯一一种)实现这一点的唯一方法是在中启动我的Phoenix应用程序/服务器,然后在客户端机器中打开浏览器窗口 这就是诀窍。在客户端计算机中打开浏览器窗口 代码 通过查看其他强大的长生不老药程序员的一些github存储库,我能够获取一段代码来完成这项工作 demo/lib/demo/application.ex defmodule Demo.Application do @moduled

Elixir Phoenix/Exto中的混合范围和关联

在Rails中,如果我有以下设置: class PostMyApp.Repo.preload(:注释) 我甚至不知道从哪里开始使用MyApp.Comment中的approved范围。我认为当前版本的EXTO是不可能的。预加载不允许过滤。另一种方法是通过查询获取注释: (from comment in MyApp.Comment, where: comment.post_id == ^post_id and comment.approved == true, select: co

Elixir 如何删除Phoenix会话?

我要通过考试。它很好地解释了如何使用put\u session将数据绑定到会话,然后使用get\u session获取值,但它没有说明如何删除用户的会话 从指南中: defmodule hellophenix.PageController do 使用菲尼克斯控制器 def索引(conn,_参数)do conn=put_会话(conn,:message,“我们刚刚在会话中设置的新内容”) 消息=获取会话(连接:消息) 文本连接,消息 结束 结束 我想你要找的是: 在以下目录中找到它: 清除整个会

Elixir Iex pry一步一步走?

我想在我的长生不老药代码中使用IEx.pry,比如ruby中的byebug或Java中的debug point。我尝试在此处查看文档: 但是什么也没找到。有人能建议一种方法吗?这是不可能的,因为pry不是调试器。Pry只允许您与特定的上下文进行交互。我也希望通过IEx.Pry能够逐步完成Elixir代码,但这是不可能的。Erlang确实有一个调试器,可以用于Elixir代码 您可以通过运行以下命令启动调试器::debugger.start() 我在这里了解到:你可以添加多个IEx。撬动指令,检查

Elixir 凤凰/长生不老药中的范围响应流

如何在Phoenix上实现第一个答案中的流程?起初我认为我必须使用Conn.send\u chunked和Conn.chunk,但我开始意识到我将收到许多请求,而不是发送各种响应。如果有人感兴趣,这是我的解决方案。与视频播放器正确对话,并处理正常文件 [range_start, range_end] = if Enum.empty?(Conn.get_req_header(conn, "range")) do [0, file.content_length - 1]

如何使用mix(Elixir)将软件包安装到系统?

我只想运行IEx来要求这个包,我不想创建一个混合项目并将其放入deps中 例如,gem安装包 如何做到这一点?据我所知,mix archive.install对于安装将提供混合任务的归档非常有用。 您可以做的是将所有.beam文件放在一个存储库中,该存储库将在iex/elixir启动时指定(使用-pa$CUSTOMPATH选项)。 这将在elixir启动期间加载.beam文件 例如,在elixirshell脚本中,有以下行: exec“$ERL\u PATH”-pa“$SCRIPT\u PATH

Elixir 在Phoenix应用程序脚本(Rails.root)中查找文件

Phoenix是否有类似于Rails.root的。假设我想在Phoenix应用程序中使用配置文件。查找脚本中使用的文件和路径的约定是什么?对于Elixir,这并不像Ruby那么容易,因为您的应用程序是编译的——编译后的代码与源代码位于不同的位置 为Elixir/Erlang应用程序添加任何额外资源的传统位置是priv目录和lib。Mix知道如何处理它,并为编译后的代码公开它。 您可以在运行时使用:code.priv\u dir(my\u app)或Application.app\u dir(my

Elixir 如何处理流程';消息队列溢出?

我是长生不老药的新手,以前从未遇到过这个问题。我很好奇,处理这类问题的最佳或公认方式是什么 Ispawn从websocket接收数据,然后将该数据发送回父进程的进程。父进程运行一个递归的进程()函数,该函数从生成的进程中接收的数据 进程函数匹配数据,并且在大多数情况下运行回调函数。这个回调函数可能比较重,因为它处理数据 通过删除大量的Logger.info语句,我发现生成的进程从websocket接收数据,并将这些数据发送到父进程,但父进程实际上并没有处理邮箱 我使用alive?/1功能确定父进

Elixir 获取指定的索引对象时出错

我想从对象列表中获取第一个索引对象。以下是示例对象: [%VendorModel{__meta__: #Ecto.Schema.Metadata<:loaded>, cameras: #Ecto.Association.NotLoaded<association :cameras is not loaded>, config: %{"auth" => %{"basic" => %{"password" => "12345", "u

如何运行&x27;混合';发布版上的命令(elixir/exrm)?

使用Elixir/mix构建应用程序 我们有一系列实用函数(即:seed/clear Mnesia db),它们作为elixir mix foo运行 一旦构建了一个版本(使用mix+exrm)并部署到目标机器上(我们不希望在目标机器上有完整的构建链或完整的源代码),是否有一种实用的方法来访问这些命令?请参见 既然#286已经修复,我建议采用以下方法,这就是我们的做法: 构建一个escript,调用您希望在版本中可用的任务(使用exrm插件:)并从版本中调用它: rel/pssync/bin/ps

Elixir 在<;%%中使用gettext链接..%>;

我想使用gettext来i18n应用程序。我还不明白如何在链接中使用它。如何翻译“显示”链接文本和[确认:“确定吗?”]部分 <%= link "Show", to: user_path(@conn, :show, user), class: "btn btn-default btn-xs" %> <%= link "Edit", to: user_path(@conn, :edit, user), class: "btn btn-default btn-xs" %> &

Elixir 未为nil实现协议枚举(phoenix框架)

我在订单控制器中添加了一个函数“payment”,并为此添加了一个路由 def payment(conn, %{"id" => id}) do foods = Repo.all(Food) order = Repo.get!(assoc(conn.assigns[:table], :orders), id) |> Repo.preload(order_items: :food) order_item_changeset = order |&

在Elixir中模拟三元运算符

如何在Elixir中执行类似的条件单行检查 if (x > 0) ? x : nil 这是长生不老药世界中唯一的等价物吗 if true, do: 1, else: 2 是的,在长生不老药中没有比三元运算符更好的了。if的关键字版本可能是最接近的 if condition, do: true_expr, else: flase_expr 我在一个 对我来说,if相当于一个三元运算符,因为它的计算结果是一个值,而对于其他各种语言它并没有 因此x=如果为false,则执行:1,否则执行:

Elixir 列表的头尾细分不使用大写字母

我刚刚开始研究长生不老药,过去我做过一些计划和序言 我在玩弄iex,我只是想看看是否有可能像你在Scheme中所做的那样,在Elixir中分离列表的开头和结尾 所以我尝试了这个,这是我的头尾命名习惯: [H|T] = [2,4,6,8] 但是,它会抛出一个错误: ** (MatchError) no match of right hand side value: [9, 8, 4, 2] 然后我试着: [h|t] = [2,4,6,8] 这一切都如期而至 为什么会这样?以大写字母开头的变

Elixir 如何使用外星';s有很多和演员协会

我是新来的长生不老药和异位,我需要一些帮助与异位的有很多和演员协会。不能理解的基本知识,如我如何创建一个新的模式与协会之一 以下是我的Has_模型: defmodule Example.Has_Model do use Ecto.Schema import Ecto.Changeset alias Example.Repo alias Example.Has_Model schema "has_models" do has_many :belong_models,

在Elixir中获取主机名的推荐方法

我点着头跑 var os = require("os") os.hostname() 如何进入elixir?elixir的标准库中似乎没有用于此目的的函数,但Erlang有一个可以直接调用的函数: iex(1)> {:ok, hostname} = :inet.gethostname {:ok, 'dogbert'} iex(2)> hostname 'dogbert' 为了完整起见,您也可以这样做: {hostname, exit_status} = System.cmd

Elixir Phoenix模板中具有默认值的变量或/或

在凤凰/长生不老药中,哪种更优雅、更短的方式可以做到这一点 <title><%= @page_title %></title> 如果使用括号语法通过赋值映射访问变量,如果未设置变量,则不会出现错误;相反,您将得到nil,您可以使用|链接该值以提供默认值: <title><%= assigns[:page_title] || "my title" %></title> <title><%= assig

Phoenix framework/Elixir添加地理空间字段

我正在尝试使用包将地理空间字段添加到phoenix框架中。我想通过Ecto模型访问,因此我遵循了添加行的概述: Postgrex.Types.define( MyApp.PostgresTypes, [Geo.PostGIS.Extension] ++ Ecto.Adapters.Postgres.extensions(), json: Poison) types: MyApp.PostgresTypes 如自述文件中所述。问题是,它并没有确切地指定在哪里添加它,所以我

Elixir 长生不老药列表理解

我有一个元组列表: m=[{5, 3}, {6, 6}, {7, 10}] 现在我想创建第二个列表,这样对于m中的每个值元组,我将在first value>second value时插入“a”,在first3和7 我不知道怎么回事 编译器将完全忽略第一个if表达式,因为之后还有另一个表达式(如果在混合项目中编译此表达式,则会收到警告)。Elixir仅返回最后一个表达式的值,在本例中,它是“B”(当u“A” u“B” 结束 结束 请注意,如果u==v,第一个将返回“B”,如果u==v,第二个将

Elixir 如何验证具有$2y$前缀的Bcrypt密码?

假设我有一组使用Bcrypt和$2y$前缀的密码。现在我正在为我的网站移动到elixir。因此,当我使用以下函数Comeonin.Bcrypt.checkpw(“难以猜测”,存储的\u散列)检查我的旧密码时,我将其用作密码散列库,我得到了参数错误,如Comeonin Bcrypt不支持2y前缀,如何验证使用密码?

Elixir 在Phoenix Framework中将带有数据的模板添加到布局文件

我想在我的布局中添加一个模板,每个页面上都有相同的数据。例如,在每个页面的侧边栏中列出最近发表的文章。做这样的事情最好的方法是什么 我已经研究了部分,似乎您从当前使用的控制器向其提供数据。如果我不想对每个控制器都这样做,我是否只需在路由器管道中添加一个插头,以获取数据,然后将其馈送到一个部分?您可以为所需创建一个视图和一个模板,并将其添加到布局视图中 例如: #视图/侧栏_view.ex defmodule YourApp.SidebarView do 使用YourApp.Web,:查看 def

Elixir 如何在长生不老药中获得小数点后的数字?

这就是我在Python中的工作方式。。。用长生不老药有更优雅的方法吗 def get_digits_past_decimal(number): number_string = str(number) dig_past_decimal = abs(Decimal(number_string).as_tuple().exponent) return dig_past_decimal 我将浮点转换为字符串,并计算点后的字节数: 一艘班轮: float |> Float.

Elixir 从记录集中获取单个记录

简单请求: a1 = where(MyModel, [x], is_nil(x.some_foreign_id)) |> Repo.one() 例外情况: ** (exit) an exception was raised: ** (Ecto.MultipleResultsError) expected at most one result but got 6 in query: 是的,有几张唱片,没关系,

Elixir 如果有其他错误,请使用长生不老药

我不熟悉长生不老药 试着用基础知识学习 但if-else语句显示了一些异常行为 age = IO.gets ("age : ") |> String.trim agea=Integer.parse(age) if agea > 10 do IO.puts "greater than 10 " else IO.puts "les than 10 " end 使用键盘将年

Elixir 将聊天信息解析到其他聊天室时出错

我在向聊天室发送消息时收到错误消息 房间_channel.ex def join("room:" <> _user, _, socket) do send self(), :after_join {:ok, socket} end def handle_info(:after_join, socket) do {_, value} = Redix.command(:redix, ["GET", socket.assigns.user])

Elixir 如何';使用';一个模块,但省略一个函数?

我有两个模块,我都需要“使用”,但它们都定义了trace/3函数。如何在不出现“与本地函数冲突”错误的情况下使用它们除外不起作用 我不使用跟踪功能 注:这涉及到Phoenix.ConnCase和特斯拉模块。使用没有通用方法。模块需要明确支持排除导入的函数Phoenix.ConnTest(used byMyApp.ConnCase)似乎不支持,除了,这应该可以解决您的问题。只需添加,除了:[:trace]到使用特斯拉: use Tesla, except: [:trace] 使用特斯拉,除了:[

Elixir 获取配置的一部分,但没有与之关联的模块

我可以获取以下内容的配置: config :my_app, MyApp.Endpoint, url: [host: "localhost"], secret_key_base: "fdsfdsfd", # .............. 这边 cfg = Application.get_env(:my_app, MyApp.Endpoint) 如何获取此配置部分: config :my_app, a: 123, b: 456 # ....

Elixir 菲尼克斯路线不只是在生产中

我遇到了一个问题,在某些情况下,由于未知原因,一组路线在生产中不可用。我有 pipeline :browser do plug :accepts, ["html", "json"] plug :fetch_session plug :fetch_flash plug :put_secure_browser_headers end pipeline :auth do plug GroundedWarrior.Auth.AuthAccessPip

Elixir “的自定义名称”;404“;凤凰城的佩奇

在我的Phoenix应用程序中,我有: defmodule MyAppWeb.ErrorView do # ........... def render("not_found1234.html", assigns) do # ........... end 我如何告诉Phoenix,当找不到资源时,它应该呈现“not_found1234.html”而不是“404.html”?你不能 Phoenix将检测应用程序中的任何400或500状态级别错误,并使用ErrorVie

Elixir 使用DecorateX计算虚拟字段的值

我试图使用库来填充我的用户模型中的一些虚拟字段,但无法避免以下错误: no function clause matching in Decoratex.decorate/1 This functions just call the configured function to each field passing the model structure it self and it store the result in the virtual field. """ @spec

Base58在elixir中返回不正确的值

我想把十六进制编码成base58。它与js库一起工作base-x 带十六进制=1777c7ba65e23151ec09125011dd25c28998c70230e7b89ca6 预期的 base58=AShDKgLSuCjGZr8Fs5SRLSYvmcSV7S4zwX 得到了 base58=cAvfov2bvPACeGktuSEtz6G526UBfCwpia1354fp5bYJwP2rhhnxqYkRcwRoDrmgqZaG defmodule Base58 do @alphabet '1

Elixir 将牛仔升级为牛仔2时出现错误

我有长生不老药的应用程序,我正在使用插头(没有凤凰),我试图升级到牛仔2从牛仔。我正在使用VS代码进行开发,当我运行服务器时,我不断遇到以下错误 ** (Mix) Could not start application ok_api: exited in: OkApi.start(:normal, []) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matc

Elixir 对订阅应用筛选器

我正在尝试在订阅中应用筛选器,但在解析器文件中遇到了一些问题 absinth解析需要一个参数{:ok,params}o{:error,params},这样它才能执行,问题是y发送的所有内容都出现在我的订阅上,我想停止执行,这样就不会向我的订阅发送任何内容 这就是我尝试过的 def subscribe(item, args, %{context: %{current_token: _current_token}}) do filter_subscription(item, args)

Elixir 将sql查询转换为EXTO查询

我有一个sql查询,如下所示 select username, email, nickname, lastname, firstname, phone from a where NOT EXISTS ( select b.tip_team_id from b where b.season_id = 1 and b.round_id = 2 and a.id = b.user_id ); 我想把它转换成EXTO查询…有人能帮我吗?您可以使用底层的 请注意,exto.Adapte

在生产环境中停止或ping时发生GenServer错误 **(stop)错误的返回值:{:退出,{:未定义,[{:erts_内部,:中止_挂起的_连接,[:“我的_project@127.0.0.1“,{1,{Reference}],][},{:net_kernel,:pending_nodedown,5,[文件:'net_kernel.erl',行:1040]},{:net_kernel,:conn_own_exit,3,[文件:'net_kernel.erl',行:960]},{:net_kernel do_handle_exit,3,[文件:'net_kernel.erl',行:928]},{:net_kernel,:handle_exit,3,[文件:'net_kernel.erl',行:923]},{:gen_server,:try_dispatch,4,[文件:'gen_server.erl',行:637]},{:gen gen server.erl,:handle msg,6,[文件:'gen server.erl',行:711]},{:proc_库,:init p_dou apply,3,[文件:'proc_lib erl.erl',249]} 最后一条消息:{:退出,#PID,:关机} **(退出)退出::gen_server.call(:net_内核,{:连接,:隐藏,:“我的_project@127.0.0.1“},:无穷大) **(EXIT)返回值错误:{:EXIT,{:unde,[{:erts_internal,:中止_挂起的_连接,[:“我的_project@127.0.0.1“,{1,{Reference}],][},{:net_kernel,:pending_nodedown,5,[文件:'net_kernel.erl',行:1040]},{:net_kernel,:conn_own_exit,3,[文件:'net_kernel.erl',行:960]},{:net_kernel do_handle_exit,3,[文件:'net_kernel.erl',行:928]},{:net_kernel,:handle_exit,3,[文件:'net_kernel.erl',行:923]},{:gen_server,:try_dispatch,4,[文件:'gen_server.erl',行:637]},{:gen gen server.erl,:handle msg,6,[文件:'gen server.erl',行:711]},{:proc_库,:init p_dou apply,3,[文件:'proc_lib erl.erl',249]} (stdlib 3.12.1)gen_server.erl:223::gen_server.call/3 (distillery 2.1.1)lib/distillery/releases/runtime/control.ex:1006:distillery.releases.runtime.control.hidden_connect/1 (distillery 2.1.1)lib/distillery/releases/runtime/control.ex:438:distillery.releases.runtime.control.ping/2 (distillery 2.1.1)lib/entry.ex:47:distillery.Releases.Runtime.Control.main/1 (stdlib 3.12.1)erl_eval.erl:680::erl_eval.do_apply/6 (elixir 1.10.3)lib/code.ex:341:code.eval\u string\u带有错误处理/3

在prod环境中执行ping或stop后发生,发布过程不会通知任何错误 长生不老药版本:1.10.3 Erlang版本:22.3.3 您好,欢迎使用stackoverflow。目前很难回答此问题,因为它似乎没有足够的详细信息。请尝试生成一个演示此问题的小版本代码。另请参阅 ** (stop) bad return value: {:EXIT, {:undef, [{:erts_internal, :abort_pending_connection, [:"my_project@127

如何使Elixir/Phoenix LiveComponent向其自身而不是其父级发送消息?

我正在写一个ClockComponent来了解Phoenix LiveComponents。我几乎有了它,但它正在向它的父母发送:tick消息。我怎样才能让它自己发送那个信息呢?我想用imlf()代替self(),但显然那不是一件事 defmodule ClockComponent do use Phoenix.LiveComponent @impl true def mount(socket) do if connected?(socket), do: :timer.se

Elixir 长生不老药/EXTO无效FK';s在插入多对多表时

问题:多对多表的FK字段仍然为空 我有一个简单的多对多表来连接用户表和雇主表: schema "users" do field :email, :string field :first_name, :string field :hashed_password, :string, redact: true field :password, :string, virtual: true field :password_confirmat

上一页 1 2 ...  42   43   44   45    46   47   48  ... 下一页 最后一页 共 125 页