我有以下两个文件:
# script.exs
Code.eval_file("module.ex");
import MyModule # Doesn't work
my_function() # What I want
运行elixir script.exs时,会出现以下错误消息:
**CompileError脚本。exs:3:未加载模块MyModule,无法找到该模块
但是,如果要编写MyModule.my_函数,则代码运行时不会出错
那么,是否有可能从动态加载的模块导入函数呢?Elix
我有一张台球桌的地图,如下所示:
ball_map = %{
"cue" => {"x":-15.0, "z": 0.0, "velocity_x": 0.0, "velocity_z": 0.0, "is_idle": true},
"ball_1" => {"x":15.0, "z":
下面的命令在生产模式下运行phoenix.server,并作为部署phoenix的命令提供
MIX_ENV=prod PORT=4001 iex -S mix phoenix.server
但是,上面的命令以交互方式运行服务器并关闭终端,将停止phoenix.server的运行。如何让phoenix.server在后台运行 这应该可以做到:
MIX_ENV=prod PORT=4001 elixir --erl "-detached" -S mix phx.server
查看elixir--
我第一次在实施一个主管,我遇到了从文档中找不到的问题。具体来说,当我尝试使用SlowRamp.flood启动进程时,我得到{:error,{:invalid\u child\u spec,[]}
这是一个非常简单的应用程序,使用mix new slow_ramp--sup制作
/lib/slow\u ramp.ex中的主文件是:
defmodule SlowRamp do
use Application
# See http://elixir-lang.org/docs/stable/
我有两个函数,具有相同的算术数。目前,如果我调用hfoo/1我只会得到第一个函数的文档(或函数签名)。有没有办法指定我感兴趣的foo/1?有没有一种方法可以将@doc注释添加到函数中,从而对此有所帮助?下面的示例代码非常愚蠢,没有任何@doc注释
def foo(bar) when is_binary(bar) do
.
.
.
end
def foo(bar) when is_number(bar) do
.
.
.
end
您可以在默认签名旁边定义文档,如下所示:
我看了一些长生不老药项目,看到了这样的代码:
value = Dict.get(options, :key)
有没有办法缩短时间并利用
调度/协议?似乎有这样的说法
导入,使用,需要长生不老药
因此,似乎应该可以编写简短的代码并让
编译器要确定它应该使用Dict.get还是String.get:
import Dict, String
# Getting :key from the Dict.
value = get options, :key
# Getting the second c
对于部署Elixir/Phoenix框架应用程序,是否有capistrano或mina(ruby on rails项目的部署工具)之类的工具?有一节介绍部署。似乎一旦使用生成了版本,就可以使用任何能够运行远程命令的自动化工具(例如Ansible等)来部署该版本。这取决于您需要什么。但是,使用exrm构建一个版本可以让您完全不同地考虑部署。有了发布版本,部署就简单多了,到目前为止,您通常不需要像capistrano或mina这样复杂的工具。
如果您只需要一种简单的方式来部署到服务器,那么当您生成一
标签: Elixir
phoenix-frameworkelixir-mixelixir-iex
按照中关于如何使用当前项目的依赖项加载iex的建议,我能够以非常高效的方式处理phoenix框架依赖项。然而,必须为每一件事提供Phoenix项目的名称空间,这有点单调乏味
我不想键入MyApp.Repo.all(MyApp.User)而是希望能够执行Repo.all(User)。我可以用别名MyApp.Repo分别为每件事加上别名,如:Repo,但有没有办法一次完成所有事情?你只需调用别名MyApp.Repo而不是MyApp.Repo,因为:Repo-它将使用模块名称的最后一部分
在Elixi
假设我有两个模型:父模型和子模型。
如果更新了子记录,是否有自动更新关联父记录时间戳的选项 有几种方法可以做到这一点。其中一个需要Ecto master(即将成为Ecto v2.0),只需直接更新父级即可:
# Assuming a child_changeset with the parent loaded
child_changset = Ecto.Changeset.put_assoc(child_changeset, :parent, %{updated_at: Ecto.DateTim
我想知道为什么Elixir没有数学模块
我知道我们可以使用Erlangmath:module:
alias :math, as: Math
但是,在我们的长生不老药代码中加入这一行是一种好的做法吗
在iex中它似乎起作用:
iex(1)> alias :math, as: Math
nil
iex(2)> Math.pi()
3.141592653589793
iex(3)> Math.pow(3, 2)
9.0
唉,很明显,我们无法以长生不老药的方式获取文档:
iex(4
我对长生不老药的学习非常陌生,我没有编程背景
有没有更好的方法,我可以写一个函数做一个计算器在长生不老药?另外,在不运行elixir add.exs的情况下,如何从命令行单独调用它们
defmodule Numbers do
defmodule Addition do
def add(a, b) do
a + b
end
end
defmodule Subtract do
def sub(a, b) do
a - b
end
下面是我得到的错误:
Wrong type. The password and hash need to be strings.
它指向我的web/controllers/auth.ex文件中的这一行:
user && checkpw(given_pass, user.password_hash) ->
此函数中的哪一行:
def login_by_email_and_pass(conn, email, given_pass, opts) do
repo =
我已经更新到ejabberd 16.03,并将其设置为Elixir项目依赖项(如:)。
然后,我设置了一个包含三个节点(node1、node2、node3)的集群,其中节点2和3运行:ejabberd_cluster.join“node1”
问题是,当我放下节点1和3,然后放下节点2并再次尝试运行节点2时,它不起作用
我读过:,但对于Ejabberd 14和Erlang,问题没有发生
我知道Mnesia的行为是这样的,但是,为什么它在升级之前工作?事实上,正如您所指出的,Mnesia的预期和预期
我在试着用长生不老药的包装。将文档从Erlang改编为Elixir我尝试了多次调用,但似乎都没有成功
:bbmustache.render("name: {{name}}", %{"name" => "hoge"})
# => "name: "
:bbmustache.render("name: {{name}}", %{name: "hoge"})
# => "name: "
:bbmustache.render("name: {{name}}", [{:name, "h
从docs on pipe操作符中,我看到“上面代码段中使用的|>符号是pipe操作符:它只是从左侧的表达式中获取输出,并将其作为第一个参数传递给右侧的函数调用。”
但是,如果我有一个拆分的字符串,然后将其合并,并希望将合并后的字符串馈送到下面的Regex.scan中,我该怎么做呢?当我尝试运行下面的程序时,我得到了一个未处理的编译错误&1在捕获之外……我认为这是因为我不了解如何捕获管道操作符输出并将其用作参数
string
|> String.split(" ")
## some o
我在elixir中有一个属性模块:
defmodule MyAwesomeModule do
@awesome_number 7
# other stuff...
end
我无法访问模块外部的@awesome\u number。我已尝试使用该方法,但它会引发以下错误:
iex(79)> Module.get_attribute(MyAwesomeModule, :awesome_number)
** (ArgumentError) could not call get_attr
偶尔,当我在我的Elixir代码中输入一个拼写错误,并且出现编译器错误时,Phoenix拒绝实时重新加载,即使我已经修复了所有内容,并且继续打印App.Endpoint.path/1未定义(App是我的应用程序)。当然,端点定义得非常好,只要我重新启动mix phoenix.server,它就会再次工作
据我所知,我掌握着所有事情的最新版本。由于我在网上找不到有关此错误的任何信息,我怀疑我对某些内容进行了错误配置,我非常感谢您就如何查找此错误根源提出的建议
[info] Sent 200 in
标签: Elixir
phoenix-frameworkecto
是否可以在EXTO中输出迁移生成的DDL?我可以想象这样一个命令:
mix-exto.migrate——详细
如果我们有一个create\u user迁移,它将输出如下内容:
创建表用户(
id int无符号自动递增主键,
用户名varchar(255)不为空
)
不幸的是,根据最新的数据,没有这样的选择。
考虑在../p>< p>中创建问题。现在可以输出迁移SQL,如:
mix ecto.migrate --log-sql > file.sql
我正在为测试生成一些数据
posts = for i <- 0..10 do
:timer.sleep 100
{:ok, post} = Post.changeset(%Post{},%{title: "Some Post #{i}"}) |> Repo.insert
post.title
end |> Enum.reverse
all_posts = Repo.all(from p in Post, order_by: [desc: :inserted_at])
我有两个模型:定位和发布
# Models
schema "locations" do
...
has_many :posts, App.Post
timestamps()
end
schema "posts" do
...
has_one :location, App.Location
end
我能够成功地进行插入
changeset =
location
|> build_assoc(:posts)
|> Post.changeset(para
我对长生不老药很陌生,这个简单的问题让我发疯
a = 0
if true do
a = 1 + 1
end
a = a + 1
IO.puts (a)
有趣的是,这给出了正确的值,但也给出了警告:
warning: the variable "a" is unsafe as it has been set inside a case/cond/receive/if/&&/||. Please explicitly return the variable value
我正在尝试将值列表传递给变更集,并使用以下方法:
架构和变更集方法:
defmodule Pubcus.Country do
use Pubcus.Web, :model
schema "countries" do
field :code, :string
field :en, :string
field :de, :string
field :it, :string
field :fr, :string
timestamps
标签: Elixir
phoenix-frameworkecto
(代码引用已匿名)
在我的phoenix模型中,我有一些冗余的方法,如以下基本方法:
def build(params) do
changeset(%__MODULE__{}, params)
end
因为我将它们放在模型模块中,所以它们工作得很好,但我希望避免代码重复,并且我希望通过以下帮助器模块将它们提供给我的所有模型:
defmodule MyApp.Helpers.Model do
defmodule Changeset do
defmacro __usin
当我发出命令Mix-exto.migrations时,Mix在哪里检索迁移
我以为它会引用priv/repo/migrations下的迁移文件列表,但它似乎还记得从该文件夹中删除的旧迁移
因为我正在使用另一个项目的迁移文件(并删除了一些不相关的迁移文件),所以数据库没有表(包括用于记录迁移历史的表)Ecto在数据库中创建了一个名为schema\u migrations的附加表,其中包含应用的迁移列表以及应用的日期和时间。我最近遇到了类似的问题。我假设它们被编译是因为运行了MIX\u ENV=te
我正在尝试获取一对匹配的括号之间的内容,这对括号可能有0对或多对嵌套括号。这是一个众所周知的问题。例如,当我将“Well”(这部分(应该)(在(结果)中),但是)不是这部分“作为输入,”这部分(应该)(在(结果)中),但是“应该是结果
下面的Elixir代码完成了这项工作。它遍历字符串,对匹配的括号对进行计数,然后返回正确的子字符串
问题是,它与我用命令式语言编写的代码完全相同。我想知道是否有一种不同的方法可以用一种不同的、更惯用的函数方式来编写这段代码。有人能帮我提高函数式编程的水平吗
def
我有一个简单的模块:
defmodule Issues.CLI do
@default_count 4
def run(argv) do
parse_args(argv)
end
def parse_args(argv) do
case OptionParser.parse(argv, switches: [help: :boolean], aliases: [h: :help]) do
{ _, [user, proj
我有这个
^A[A-Z0-9]*$
它匹配以“A”开头的字符串,并且只能包含数字和大写字母,但如果字符串出现在句子中,则不匹配
但是,我希望在一个字符串中获得某个特定模式的所有引用。字符串将始终包含14个数字字符,并且始终以大写字母“A”开头
例如,
这是一个与A1LN2K8771FZ7B匹配的字符串,使用randon ADSKEISKIDDSER执行A283GSDJESLEKS操作
我希望匹配并扩展该示例字符串中以A开头的所有3个大写字母
我尝试了一些似乎不符合我意愿的变化
请允许我使用除正则
在我的模块中,我有一个函数,其目的是生成一个带有一些默认值的映射,鉴于Elixir中的不变性,我找不到一个合适的方法来实现这一点:
defmodule Teams do
def past_matches() do
[
team1: %{team2: %{f: 0, a: 1}, team3: %{f: 1, a: 3}},
team2: %{team1: %{f: 3, a: 0}, team3: %{f: 2, a: 0}},
]
end
标签: Elixir
phoenix-frameworkecto
我试图找出什么是保存具有多对多关系的struct的最佳方法
假设我以以下方式创建了user和role模式:
迁移:
用户架构:
角色架构:
当涉及到将单个角色与用户关联时,关联没有问题。但是,当涉及到在一个请求中关联多个角色时,我只想到了以下解决方案:
更新用户端点:/api/users/{user\u id}
请求机构:
用户变更集:
这确实有效,关联将被更新。我担心的是,我必须迭代角色,并为每个角色执行DB请求。有没有其他方法可以达到相同的结果?您可以为关联创建一个模块/模式,指向用户\u角
我正在尝试解码websocket响应。如果它包含键“symbol”,我想打印出来
我已经做到了:
msg
|>Poison.decode!
下面是直接sql查询
insert into reports as rp (time_track, affiliate_manager_id)
values (#{time_track},#{revenue})
ON CONFLICT ON CONSTRAINT report_base_ids
DO UPDATE SET revenue = 1
它是如何用外胚层长生不老药书写的
我试过了
Report.upsert_by(:)
但它没有提供提及约束的选项您可以将冲突目标:作为{:cons
我是新来的长生不老药社区,并试图按照长生不老药的方式编码,所以我需要一个建议。如何以关键字格式获取两个日期之间的最低时间差。例如,如果时间差小于1分钟小于{:秒,10},如果时间差小于1小时,小于{:分钟,34},依此类推。所以我想出了解决办法
cmp = %{:seconds => 60, :minutes => 60, :hours => 24, :days => 365, :years => 100}
{_, d} = Timex.parse("2018-01
在exto.Query.Api中,我们使用select中的max来获取如下字段中的最大值:
from q in jobs,
select: max(q.cost)
它将返回字段中的max值
如果我想返回该最大值的完整记录。我必须使用where而不是选择
那么如何在where中使用max
因此,在我的理解中,我认为我必须在的where中使用片段
那么,最好的解决方案是什么
感谢虽然可以使用过度复杂的where子句构造片段,但真正的任务是在表按成本排序时获取最顶层的记录:
from q in jo
当节点加入或离开集群时,流程是否有接收消息的方法?知道离开的理由也很好 您可以使用它。只需从进程调用:net\u kernel.monitor\u nodes(true),现在每当节点连接或断开连接时,该进程都会收到一条消息
下面是一个演示:
$ iex --name foo@127.0.0.1
iex(foo@127.0.0.1)1> :net_kernel.monitor_nodes(true)
:ok
我用iex--name启动了一个新节点bar@127.0.0.1并运行节点。连接
我正在尝试这样做:
SELECT days.date, SUM(tes.duration) FROM (
SELECT
DATE_FORMAT(
now() - INTERVAL (@num := @num + 1) DAY,
'%Y-%m-%d'
) date
FROM time_entries, (SELECT @num:=-1) num
LIMIT 31
) AS days
LEFT JOIN (
SELEC
我想从外部API获取数据:当只更改一个参数(第页)时,这是一个类似的请求。我想让它并行处理,但在一个地方收集数据。
使用长生不老药的正确方法是什么?
我做了一些调查,目前只有一个解决方案:
使用Agent保存API调用的数据,使用Task保存调用API的数据。可能适合您的需要
(1..10)
|> Task.async_stream(fn n -> get_page(n) end, max_concurrency: 10, timeout: 30_000, ordered: tru
假设管道操作的结果是我想在布尔条件下检查的值
def isGreaterThanZero? do
num =
|> some pipe which returns a number
num > 0
end
我能否以某种方式将其重构为:
def isGreaterThanZero? do
some pipe which returns a number
|> Boolean.true(&1 > 0)
end
是一个泛型函数
因此,您可以使
在长生不老药中,我有这张地图
my_map = [%{ user_id: 1, user_name: "David", gamer_id: 100, gamer_name: "John" },
%{ user_id: 1, user_name: "David", gamer_id: 101, gamer_name: "Bil" },
%{ user_id: 1, user_name: "David", gamer_id: 103, gamer_name: "Ruk"
嗨,我是长生不老药的新手,甚至还没有运行过代码。但是我已经下载了它,在sublime上下载了相应的软件包,重新启动了sublime,但它不工作。当我保存一个.ex文件时,它不会得到一个徽标,而.py文件会得到python徽标。所以我不知道如果Sublime找不到长生不老药程序,是否应该将它添加到我的路径中?我不知道在这里该做什么,我希望能得到一些帮助,因为我坐在黑暗中,找不到太多的支持,因为长生不老药没有被广泛使用。我真的很依赖这个来获得工作机会。我感谢所有的帮助 我在Sublime中安装了以下
即使在使用Repo.preload()预加载之后,我仍然无法加载exto.Association.notload。我有一个存储模式,其中包含许多:书籍,当我尝试添加创建存储时,我遇到以下错误:
%App.Stores.Store{__meta__: #Ecto.Schema.Metadata<:loaded, "stores">,
name: "mystore", description: "book store", id: 13, inserted_at:
N[2018-10-
Elixir是否有类似Scheme的调用以及当前的延续?有没有办法捕获等待的堆栈帧并将其存储在变量中供以后使用?Erlang/Elixir没有类似Scheme语言中的经典调用/cc
不过,您可以用Elixir编写CPS样式的代码。您可以捕获函数中的当前闭包,并传递该闭包,然后以这种方式手动分割计算
编辑:我刚刚实现了CPS风格的ANF转换[1]。它可能会成为灵感
[1] Erlang/Elixir没有Scheme类语言中的经典call/cc
不过,您可以用Elixir编写CPS样式的代码。您可以
标签: Elixir
metaprogrammingphoenix-frameworkecto
我试图在elixir/phoenix中构建一个简单的身份验证系统,它可以作为任何phoenix应用程序的依赖项
我遵循了programming-phoenix-1.4一书中的步骤,很容易地建立了一个基本的身份验证系统
在本书中,他们讨论了将用户敏感和非敏感信息分离到应用程序和数据库中的不同位置。所有非敏感信息(用户名、姓名等)都放在用户表中,而敏感信息(电子邮件、密码等)则放在凭证表中
基于此,我想知道是否有可能将auth逻辑分离到自己的应用程序中
此身份验证模块需要:
在所需应用程序的数据库中
我有一些文件夹(静态资产),我可以从中获取一些图像组。一切都很好,但当我为制作而消化时出现了问题,然后我发现所有的图像都被复制了
如何选择一组(仅摘要)或另一组(未摘要)?假设摘要文件的名称的形式为app-8e93c8da27a19b82af2ba9d653edb2cb.js,而未摘要文件的名称为app.js,此代码将当前目录中的所有js/css文件拆分为两个摘要文件名和非摘要文件名列表:
Path.wildcard("*.{js,css}")
|> Enum.split_with(fn
我正在尝试使用Elixir和Phoenix与Heroku一起部署API。在某些使用情况下,我需要发送一封HTML电子邮件(这一切都已解决并正确发送),但是,电子邮件正文上使用的图像不会被发送。这些图像位于以下位置:priv/static/images
在我使用的电子邮件正文上:
src=”“
这在开发模式上起作用。发送到localhost:4000的电子邮件/发送的电子邮件以图像呈现。但在生产过程中,发送的电子邮件到达邮箱时没有它们
如果我查找localhost:4001/images/logo
什么是或?在长生不老药功能结束时的平均值是什么?这是语言的特殊之处,还是仅仅针对特定的包
ExAws.S3.list_buckets() |> ExAws.request!()
它是长生不老药
呼叫
尾随的bang(感叹号)表示函数或宏,其中失败案例引发异常
?呼叫
返回布尔值的函数的名称后面带有问号
这些字符实际上是函数名的一部分,这在大多数编程语言中是不常见的,因此它可能会引起人们的惊讶。。。
我想检查一个长的位字符串是否包含另一个位字符串。比如:
if MyBitstringModule.contains(<<1, 2, 3, 4, 5>>, <<2, 3, 4>>) do
# do stuff
end
[请注意,尽管标题大致相同,但实际上并不是重复的-链接的问题及其答案都只涉及二进制文件。]
编辑:我上面的测试用例不好,因为两个参数实际上都是二进制文件。更好的测试用例包括:
iex> contains(<<1,
我对长生不老药很陌生(但很好奇)。我想验证URL的两个方面:
它不应该是IP地址
路径不应包含/../
我有一个功能:
def validate_url(url) do
URI.parse(url)
|> validate_profile
end
在进行了一些模式匹配(排除其他情况)之后,我得出了两个(不满意的)解决方案:
第一:
defpvalidate_profile(%URI{scheme:“https”,path:path,host:host,userinfo:nil
我有这样一个问题,真的不知道如何正确地解决这个问题。我需要创建一个给定地图的路径列表。路径列表应该由元组组成,包括指向给定值和值本身的键列表,如下例所示
输入示例:
%{
foo: %{
bar: %{
value: "y"
},
car: %{
value: "x"
}
},
second: "level"
}
示例输出:
[
{ [:foo, :bar, :va
在Elixir中,是否有可能覆盖记录器功能,以始终在调用模块的地方预先加载该模块“[#{{}模块]”
像
Logger.debug(“获取交易所信息和交易规则…”)
在日志中变为:
[debug][Elixir.Binance.Futures.Rest.Client]请求交易所信息和交易规则…请求的功能已经存在。只需配置记录器,即可输出相应的元数据(:mfa),如中所述
config:logger,:console,
格式:“[$level][$metadata]$message\n”,
元数据
标签: Elixir
phoenix-frameworkecto
我试图输入一个日期时间,因为insert_all不会自动添加已创建的日期,而且我无法找出我做错了什么
currentTime = DateTime.utc_now
query = from rm in ChatApp.Roles.RoleMasters,
join: srp in ChatApp.Servers.ServerTypeParameters,
where: srp.parameter_role_capable_flag == "Y",
上一页 1 2 ...
4 5 6 7 8 9 10 ...
下一页 最后一页 共 125 页