当我定义函数子句时应该有多严格
Elixir允许在一个范围内写入函数头,从检查类型无防护到验证范围内的值
例如,我不知道在这样的函数中使用什么样式:
def measure(args = %{times: times, path: path}) do ...
def measure(args = %{times: times, path: path}) when is_integer(times) and is_binary(path) do ...
def measure(args = %
当我通读时,外星似乎支持多态性关联及其相关问题
假设我需要一个关于任务和事件模型的注释模型关联。如果我对Ecto与自定义源的关联的理解是正确的,那么我们需要四个表和三个模型
桌子
任务
事件
任务和评论
活动和评论
模型
任务
事件
评论
任务和事件模型将与自定义源有许多关联,如下所示
defmodule ExampleApp.Task do
use ExampleApp.Web, :model
schema "tasks" do
field :title, :stri
而f()()不是:
iex(1)> quote do: f()()
{{:f, [], []}, [], []}
这很奇怪,因为f()()没有编译。因为第一个表达式可以是引号内的unquote:
iex(2)> quote do: f()()()
** (SyntaxError) iex:2: syntax error before: '('
这将生成一个带引号的表达式,该表达式调用hello(1,2,3)。这就是为什么我们只支持两个级别,因为这就是我们所需要的。如果我们将来需要
我想为我的替换添加一个数字,但是它似乎与替换模式冲突
前
我如何得到“249,00”而不是“249,0”?我目前的解决方案是再做一次替换,在这里我消耗空间。以下是解决方案:
"249,0" |> String.replace ~r/,(\d)$/, ",\\g{1}0"
如果您能向Elixir docs发送拉取请求,以便我们改进它,我将不胜感激。:) 谢谢你,何塞,我很乐意。:-)
"249,0" |> String.replace ~r/,(\d)$/, ",\\g{1}0"
假设我有两个文件,create.js.eex和post.html.eex,我想在create.js.eex模板中呈现post.html.eex模板的内容。大概是这样的:
$("#something").append("<%= safe_to_string render "post.html", post: @post %>");
$(“#某物”)。追加(“”);
上面的示例不起作用,因为我需要对返回的字符串中的引号和其他内容进行转义,但我找不到方法来执行此操作您可以使用rende
我有一个驱动程序频道,它向供应商频道广播他们的位置
defmodule MyApp.DriverChannel do
#...
def handle_in("transmit", payload, socket) do
MyApp.Endpoint.broadcast! "vendors:lobby", "track", payload
{:noreply, socket}
end
end
defmodule MyApp.DriverChann
标签: Elixir
phoenix-frameworkecto
我有一个帖子和评论模式。一篇文章有许多评论,一条评论属于一篇文章
当显示个人评论时,我如何访问它所属的帖子
i、 e.在Ruby on Rails中,您可以执行以下操作:
@comment = Comment.find(params[:id])
@post = @comment.post
我如何使用Phoenix Elixir框架实现这一点?我相信我已经正确设置了模型关联,但我不知道如何在视图或控制器中实际获取此查询。如果您阅读了文档,您将看到如何创建关联
defmodule MyApp.Co
假设我在Elixir中有一个谓词is_foo?/1
我想在一个以谓词为参数的函数中使用它,但是被否定了。
《长生不老药》中有什么简单的方法吗?&(!Is_foo?&1)应该这样做
或者如果您喜欢长格式,fn x->!是欧福吗?x端谢谢!到目前为止,我认为长生不老药在功能方面比JS更难,比Haskel更弱,我希望我错了,我会继续我的探索之旅。这取决于你想做什么。由于ErlangVM的强大功能,它比node.js或Ruby具有更高的可扩展性和容错性。它不像Haskel那样是强类型的,但我真的不知道你
我如何控制长生不老药
它给我的是白色上的黄色,我看不见
我在一个emacs外壳中运行它,我认为这是一个常见的用例?
您可以使用以下选项禁用着色:
IEx.configure([colors: [enabled: false]])
或者分别调整它们。要使其永久化,您可以使用文档在同一网站上创建.iex.exs。您可以通过以下方式禁用着色:
IEx.configure([colors: [enabled: false]])
或者分别调整它们。要使其永久化,您可以创建.iex.exs,该文档也在同
我有一个名为Auth.app\u id的函数,它首先尝试从应用程序的配置中读取app\u id,如果缺少,将查找系统环境
测试此类功能的最佳实践是什么?当然,预先使用应用程序.put_env和系统.put_env内部测试是非常糟糕的做法,因为我们使用全局变量操作,异步测试将是不可能的
test "getting config variables" do
Application.put_env(:appname, :app_id, "123")
assert Auth.app_id ===
我正在运行以下代码:
ExHubic.Request.request({:get, "/account", nil, :hubic}, ExHubic)
并获取以下错误:
** (Protocol.UndefinedError) protocol ExHubic.Request not implemented for {:get, "/account", nil, :hubic}
(ex_hubic) lib/request.ex:1: ExHubic.Request.impl_
标签: Elixir
phoenix-frameworkecto
今天,像往常一样,我尝试在我的Phoenix应用程序中制作mix-exto.migrate,意外地发现以下错误:
warning: could not find repositories for application :adah.
You can avoid this warning by passing the -r flag or by setting the
repositories managed by this application in your config files:
我已经构建了我的Elixir项目,并使用EXRM发布了一个版本。当我将它复制到目标服务器并启动它时,我很高兴地发现它已经在日志目录中的“erlang.log.1”之类的文件中捕获了控制台输出。它似乎让文件增长到10k,然后在五个文件之间旋转。有没有办法配置这些文件的允许大小和保留数量?该版本从一个名为的工具开始。您应该能够通过RUN\u ERL\u LOG\u GENERATIONS控制要保留多少文件,并通过RUN\u ERL\u LOG\u MAXSIZE环境变量控制文件大小
我在Phoenix应用程序中工作。这需要一个exrm版本。出于开发目的,我们希望使用相同的配置技术,但不需要在每次进行更改时生成版本。在运行mix phoenix.server时是否有一种使用Conform的方法?我相信其目的是使用Elixir的配置功能进行测试和开发,而Conform仅用于发行版。我们从未想出一种方法,所以我接受这个答案。
我在Elixir的%w(foo,bar)构造上
我在当前的文档中找不到它的任何引用,谷歌也没有帮助。
它是2013年语言的一部分
有没有人能给我指一下文档,或者给我举个例子?Elixir提供的。正如文档中所解释的,sigils是该语言提供的用于处理文本表示的机制之一
在v1之前,Elixir sigil语法与Ruby非常相似。具体而言,以下行:
%w( foo bar )
制作了一个
sigils的语法是,现在前缀是~,而不是%:
~w( foo bar )
长生不老药提供。正如文档中所解释
有关于如何使用HTTPoison.post上传本地文件的教程吗?
打开文件
{:ok, file} = File.open "README.md"
HTTPoison.post("#{url}", file, headers)
这是用于使用上载功能的dropbox集成
curl -X POST https://content.dropboxapi.com/2/files/upload \
--header "Authorization: Bearer " \
--header "Dropbox
我收到很多“无法检查Phoenix.Socket传输的来源”消息。这似乎表明有什么东西正在攻击我的服务器,但请求中的主机名与我配置的主机名不匹配。如何调试这个?我怎样才能知道这些请求来自何处,或者它们包含什么,或者它们请求了什么?“无法检查来源…”消息中没有告诉我这些。我也没有得到任何其他日志,告诉我更多。Phoenix是否在某个地方记录了它收到的所有请求,这样我就可以看到接下来会发生什么?我想这可能会对您有所帮助:
主机中已存在更多描述性错误消息:
我不确定在Phoenix中是否有一种简单的方
标签: Elixir
phoenix-frameworkecto
我正在做一个外部查询,并试图按q.U日期分组。此查询成功地按执行分组,但按秒执行。我试着按月分组
MYQUERY |> group_by([q], [q.created_date, q.id])
是否有类似于:
MYQUERY |> group_by([q], [month(q.created_date), q.id])
您可以使用fragment with提取PostgreSQL中的月份:fragmentdate_part'month',?,p.inserted_at
您正在使
用户访问以下路径:www.example.com/api/users/x,其中x是变量
如何获取x并创建具有动态响应的路由
自动翻译。在router.ex中,您需要编写以下内容-
get "/api/users/:x", SomeController, :actionName
现在,在控制器中,需要使用patten匹配从_params获取x的值,即:
def actionName(conn, %{"x" => x}) do
# now x is available here
e
我刚刚为第一次设置,它似乎工作正常,只是作业日志是空的
我试过:
谷歌搜索
查看Travis CI文档
玩.travis.yml配置文件
但是我完全不知道为什么日志是空的。这是和
My.travis.yml:
language: elixir
elixir:
- 1.3.0
otp_release:
- 18.0
sudo: false
services:
- postgresql
before_script:
- cp config/travis_ci.exs conf
为什么会失败:
%Partner{} |> cast(%{id: 123}, [:id]) |> delete
带有exto.NoPrimaryKeyValueError?我正在显式设置主键?对于变更集,原始结构(data)中的id由Repo使用。删除,而不是changes中的,并且cast仅将新的id放入变更。您可以将更改合并到原始结构中(数据):
或者手动将id放入%Partner{}:
%Partner{id: 123} |> delete
回答很好,新的长生不老药
学习长生不老药的基础知识我试过这个,它达到了我的预期
gg=%{:a => 1, 2 => :b, %{ :a => 5 } => 8}
gg[:a] # give 2
%{ :a => k } = gg # gives k = 2
gg[%{ :a => 5 }] # gives 8
但具体的问题是什么:
%{ %{ :a => 5 } => k } = gg
我得到的错误是
** (CompileError) hello.exs:4
标签: Elixir
phoenix-frameworkecto
我有一个DateTime格式:
{{2017, 2, 2}, {14, 43, 50, 0}}
我想将其转换为“2017年2月2日”或“2017年2月2日”或“2017年2月2日”,而不使用Timex或任何其他依赖项,除非需要exto.DateTime。我如何才能做到这一点?使用
使用
进一步修改:
"2017-02-02"
|> String.split("-")
|> Enum.reverse
|> Enum.join("/")
# => "02/02/201
我有两个模块
defmodule Mod1 do
@var1 123
end
defmodule Mod1.Mod2 do
def func1 do
@var1 * 10 # how ????
end
end
有没有办法访问@var1而不必在Mod1中为其创建特殊函数
defmodule Mod1 do
@var1 123
def var1_getter do # only for Mod2
@var1 123 # any o
在制作中,我有以下几点:
use Mix.Config
config :my_app, MyApp.Endpoint,
secret_key_base: System.get_env("MYAPP_SECRET_KEY_BASE")
该值是在/etc/environment中设置的,并且足够长,我是从“mix phoenix.gen.secret”创建的。但是,它仍然会抛出一个错误:
** (exit) an exception was raised:
** (Argum
标签: Elixir
phoenix-frameworkecto
我有一个Meetup模型有很多:rsvps,而Rsvp模型属于:user
这是我的终点:
def index(conn, _params) do
one_hour_ago = Timex.now
|> Timex.shift(hours: -1)
|> Timex.to_unix
meetups = from(m in Meetup, where: m.timestamp >= ^one_hour_ag
标签: Elixir
phoenix-frameworkecto
在我的EXTO模型中,我需要在字段中指定:user\u timestamp从unix\u time转换的时间。
迁移:
def change do
alter table(:operations) do
add :user_timestamp, :naive_datetime, null: false
end
end
我的手术
schema "operations" do
field :sum, :float
field :name, :
Phoenix自动生成帮助程序,以生成与路由器路由关联的URL
示例:
scope/,Zombie.App,as::App do
管道:浏览器
获取“/”,PageController,:home#app_page_path()
获取“/about”,僵尸控制器:about#app_zombie_path()
结束
如何知道我的应用程序中是否存在特定的路径帮助程序?这很简单,假设您想知道路径帮助程序app\u zombie\u path()是否存在,您可以执行以下操作:
path=:应用程序\
我有一个列表和一个列表
lists = [[3, 9, 1], [3, 9, 5], [4, 2], [8, 11], [9, 3, 5]]
source = [3, 5, 9]
如何在列表中找到包含源所有元素的所有子列表,而不考虑它们的顺序?列表中有两个这样的子列表:[3,9,5]和[9,3,5]。快速查看列表方法让我来到这里
lists = [[3, 9, 1], [3, 9, 5], [4, 2], [9, 3, 5]]
s = [9,3,5]
Enum.filter(lists, fn
我为一个API构建了一个包装器,该API一直在工作,但现在该公司决定为其端点实施不同的速率限制,因为这是一个游戏,他们有服务器,每个服务器都有不同的限制,例如,EUW服务器有一个限制,而北美有另一个限制,但他们为他们的玩家提供相同的信息。现在,我实现了一个GenServer,它负责处理这些不同的速率限制,但我无法找到一种方法来处理开发人员密钥的速率限制,这些密钥是20r/1s或100r/2m。默认情况下,我实现了第一个限制,每秒20个请求,但这并不总是正确的。我用Exrate来处理这些请求
我希
我已经用Python和Django开发了相当长的一段时间。我现在需要使用长生不老药凤凰框架。看起来不错,但我不得不承认我已经习惯了Django的做事方式。我需要做的一件非常重要的事情是找到一种自动创建用于开发和测试的假数据的方法。我现在尝试做的具体工作是基于一个名为User的简单域模型,它具有名字属性、姓氏属性和电子邮件地址。即使添加了Faker作为依赖项,我甚至不知道如何生成假数据。这可以在命令行中完成吗?使用。它有一个页面,其中包含有关特定功能的更多信息
这是原始的exto.Query
def by_id(user_id, company_id, asset_id) do
# section 1
from a in Asset,
# section 2
join: acl in AccessList, on: acl.asset_id == a.id,
join: c in Company, on: acl.company_id == c.id,
如果多个元素被认为是最大的,则返回找到的第一个元素。
我本以为这会返回{4,0},显然我遗漏了什么
谢谢你帮我澄清我的困惑:)那是因为在|>Enum.使用{u index,你的列表是[{4,0},{0,1},{4,2}]和{4,2}大于{4,0}当比较元组时,当第一个元素相等时,比较第二个(然后是第三个)元素
测试您要测试的内容的正确方法是使用Enum.max_by/2而不是这样:
iex(1)> [4, 0, 4] |> Enum.with_index |> Enum.ma
标签: Elixir
phoenix-frameworkecto
对于多租户电子商务应用程序,我给出了以下ER模式:
Order has_many OrderProduct belongs_to Product belongs_to Price
有了Ecto,通过订单的变更集功能中的cast\u assoc(:Order\u product)一次插入包含多个OrderProduct的订单将很容易
但由于将来可能会删除产品和价格,我想在OrderProducts中另外存储价格和数量的值(:Price,:quantity)
据我所知,我有以下几种选择:
在Ord
在Phoenix 1.3中,建议将所有业务逻辑放在上下文中,但一个上下文可以处理许多实体(我不知道正确的词,因为Phoenix 1.3中不再存在“model”),而且它增长非常快。将上下文拆分为多个文件的正确方法是什么
编辑
我有帐户上下文和两个实体:用户和凭据。即使有这两个实体,上下文看起来也有点复杂。我必须滚动浏览用户的功能才能访问凭证的功能。现在这并不是一个真正的问题,但我认为在一个上下文中可以有两个以上的实体,然后它可以是非常巨大的。还是我错了
这个例子来自phoenix的hexdocs
我使用Dgraph和Postgres作为我的数据库。我正在使用elixir和ecto来处理从前端到postgres db的graphql实现。我现在需要将graphql查询映射到dgraph版本的graphql graphql+——这样我就可以使用graphql的强大功能只获取我需要的数据。将graphql映射到graphql+的最佳方法是什么?您将如何实现这一点?还是有其他方法可以做到这一点。我曾尝试将graphql查询直接传递给dgraph,但正如您所想象的那样,这不起作用。还有别的方法我没
我如何在我的代码中实现多个if条件,如下所示
person = %Person{}
if x.name == "Test" do
person = %{person | name: "Test"}
end
if x.age == 50 do
person = %{person | age: 50}
end
这里的“x”是另一个对象,我试图验证数据,然后相应地更新person结构。
我已经像上面那样写了代码,但是得到了下面的警告
变量“person”是不安全的,因为它被设置在以下其
如何获得二进制文件的字节长度?这不是一根绳子。我不想要字符数。我只想知道它有多少字节长。您可以利用byte\u size实现文档中所述的目的
返回包含位字符串所需的字节数
也就是说,如果位字符串中的位数不能被8整除,则
产生的字节数将向上舍入(以超出的方式)。这
操作在固定时间内进行
允许在防护测试中使用。由编译器内联
示例
iex>字节大小()3
iex>字节大小()
byte\u size()在保护测试中允许!甚至更好。
我想在Phoenix Elixir中发布一对多与JSON的关联。网上有很多例子,但我没有看到一对多关联的例子。如何在控制器中传递触点的参数
customer的架构为
schema "customers" do
field :email, :string
field :name, :string
has_many :contacts, App.Customers.Contact
timestamps()
end
@doc false
def changeset(customer
我有一长串的表格:
[[X, A], [Y, B]]
我想重新排列它以获得:
[[X,Y], [A, B]]
我该怎么做呢?您不会重新排列它,因为它是不可变的。
但是,您可以使用模式匹配从旧列表中获取目标零件。
然后,您可以用这些零件构建一个新列表,该列表将具有您想要的形状
# Suppose l = [[X, A], [Y, B]]
[[X, A], [Y, B]] = l
l2 = [[X, Y], [A, B]]
那么l2正是您想要的
# Suppose l = [[X, A], [
我想在root mix.exs中定义版本。应用程序中的项目可以读取此版本。可以这样配置吗?rootmix.exs:
defmodule MyCoolUmbrellaApp.Mixfile do
use Mix.Project
def project do
[app: :my_cool_umbrella_app,
version: "1.0",
apps_path: "apps",
build_embedded: Mix.env == :prod,
我如何在EXTO中定义一个临时字段,即一个将不沿架构的其余部分持久化的字段
我搜索了所有地方,包括文档,找不到任何与此术语相关的内容。Ecto对瞬态字段使用了不同的术语,:virtual,定义如下:
Ecto对瞬态场使用不同的术语,:virtual,定义见:
离题:我从来都不明白冒号在长生不老药中的用法。有些地方在文本前面,有些地方在后面。@HrishikeshChoudhari冒号在原子前面,关键字列表有一种特殊的语法,[{:virtual,true}]也可以写成[virtual:true],
我的模型中有这个check_约束
def changeset(struct, params \\ %{}) do
struct
|> cast(params, @all_fields)
|> validate_required(@required_fields)
|> check_constraint(:stars, name: :stars_range, message: "stars must be between 1 and 5")
我试图找出如何组合select和join表,但遇到了一些问题
假设我有表A、表B和表C。表A有一些值,表B在表C中有许多项
我的问题是这样的:
query = from(
a in TableA,
select: %NewStruct{
a: a.value
}
)
from(
a in query,
join: b in TableB,
on: b.a_id == a.id,
join: c in TableC,
on: c.b_id == b.
我一直试图通过更改参数和id从我的主管模块启动同一模块的多个进程。但是,我看到子进程是以顺序方式生成的
当使用spawn或spawn-link时,它工作得很好,但是我没有调用worker方法,进程也不会受到监督。
主管模块中是否有允许同时执行此操作的其他方法
当使用or时,它可以正常工作,但我不会调用worker方法,并且不会对流程进行监督
这里有很多问题。首先,我们在中没有方法,我们有函数。已弃用,不应使用。我们应该使用
当然,您可以借助于来监督已启动的流程(这里是一个如何核心的示例),但这并
我的项目根目录中有一个Elixir project.formatter.exs文件,如下所示:
[
line_length: 120,
inputs: ["mix.exs", "config/*.exs"],
subdirectories: ["apps/*"]
]
但正如我所知,line\u length参数被忽略了
给定以下代码,最长的一行(长度为102个字符)总是被分成两行(当子句包装到新行时,):
相反,如果我将模块复制并粘贴到中,并将line length选项设置为120
我们公司从另一家公司得到了一个新项目,这个项目的版本非常旧
软件版本(仅限)
Git 2.17.1
节点10.16.3
纱线1.17.3
长生不老药1.7.4
PostgreSQL 11
Visual C++构建工具15
Erlang/OTP 20
我们正在考虑升级Elixir,我是一名java开发人员,我最近开始学习Elixir,但我们现在一定要升级。。请帮忙
最基本的是,我们需要估计一下是否可能,以及如何做到这一点
现在这个项目正在生产中 根据
新的向后兼容的次要版本每6个月发布一次
换句话
我正在开发一个简单的网站在长生不老药与凤凰城。我想添加一些在生成响应后运行的自定义中间件。例如,为了记录每个响应中的总字节数,我希望有这样一个插件
defmodule HelloWeb.Plugs.ByteLogger do
import Plug.Conn
require Logger
def init(default), do: default
def call(conn, default) do
log("bytes sent: #{String.le
标签: Elixir
phoenix-frameworkphoenix-live-view
我试过上面的代码。但是当我们执行IO.inspect(ff)时,它会给出[对象文件]。
我们如何获取文件的路径(作为struct/map/string)?Phoenix LiveView还不正式支持文件处理。这项工作目前正在进行中,您可以使用该分支中已准备好的内容,或者为此使用单独的套接字。您还可以在此处找到有用的信息:
<form phx-submit="ff">
<input type="file" name="ff
下面是教程
尝试使用脚手架生成模型
我在终点站试过这个
mix phx.gen.model Comment comments body:text post_id:references:posts
mix phoenix.gen.model Comment comments body:text post_id:references:posts
但我在终点站得到了以下信息:
** (Mix) The task "phx.gen.model" could not be fou
上一页 1 2 ...
61 62 63 64 65 66 67 ...
下一页 最后一页 共 125 页