在Python中,第三方enhpath.py库允许以下内容:
In [2]: path("/home/lowks/Documents").listdir()
Out[2]:
[path('/home/lowks/Documents/5fc72638da7598b350733c5a51fce596.jpeg'),
path('/home/lowks/Documents/Prop-API-01.pdf'),]
iex(1)> File.ls!("/home/lowks/Documents
我来自Rails思维模式,习惯于在ActiveRecord模型中添加大量setter,以修剪/小写字符串(例如电子邮件地址)或规范化电话号码以使用“-”作为分隔符。我喜欢setter方法,因为它使修改记录的代码保持干燥。这可能与长生不老药/异位剂有关吗?目前,没有任何机制。您最好创建一个函数,如:
User.normalize(%User{}, conn.params["user"])
现在,我们正计划将此代码移动到自定义类型。例如,您实现了一个电子邮件类型,它知道如何正确地强制转换和规范化数
通过入门教程的一部分,我正在为底部的监督树问题编写一个单元测试。我尝试启动顶级主管,但失败,出现以下错误:
1) test all buckets die if registry dies (KV.SupervisorTest)
test/kv/supervisor_test.exs:4
** (EXIT from #PID<0.111.0>) shutdown: failed to start child: GenEvent
** (EXI
我正在编写一些与SSH交互的长生不老药代码的测试。在我的测试中,我想启动一个SSH服务器,我可以对其运行代码。我更喜欢将此代码存储在测试目录中它自己的文件中,并通过各种不同的测试导入它
不过,我一直没能让它工作得太好
我已经尝试创建一个test/ssh\u server.ex文件,其中包含SSHServer模块,但是当我将import SSHServer添加到我的测试中时,我得到:
(CompileError)测试/端到端测试。exs:13:未加载模块SSHServer,无法找到
我错过什么了吗
我正在阅读Elixir入门文档,遇到了一些我不理解的输出。在下面的例子中,我不明白为什么rest会变成“llo”,或者第一个结果是如何变成“hello”而不是“hehello”
iex>“他”rest=“你好”
“你好”
iex>休息
“llo”
这是长生不老药=工作方式的结果。这不会评估为:
"he";
rest = "hello";
不是,而是进行模式匹配
在本章中,我们将展示Elixir中的=运算符实际上是如何的
匹配运算符以及如何使用它对内部数据进行模式匹配
结构
(我的重点。)第一章
是否有可能重复使用
在这样的例子中
def unpublished_by_title(title) do
from p in Post,
where: is_nil(p.published_at) and
fragment("downcase(?)", p.title) == ^title
end
似乎能够将片段部分提取到一个单独的函数中非常方便,这样就可以在其他地方重用它,例如:
def unpublished_by_title(title) do
fr
标签: Elixir
phoenix-frameworkecto
我正在开发一个Phoenix应用程序,在生产中遇到了一个调试困难的问题
**(UndefinedFunctionError)未定义的函数:Connection.start\u link/2(模块连接不可用)^M
Connection.start_link(Postgrex.Connection,[主机名:“localhost”,超时:5000,otp_应用程序::xxx,repo:xxx.repo,适配器:exto.Adapters.Postgres,用户名:“xxx”,密码:“xxx”,数据库
当从System.cmd或通过其他方法运行命令时,如何捕获控制台中写入的每一行
我甚至希望捕获最终结果,但在控制台中显示的内容类似于:克隆到“myrepo”。。。远程:计数对象:3271,完成。并通过通道发送每行:
case System.cmd("git", ["clone", "git@github.com:#{vault}/#{repo}.git"], cd: repo) do
{results, 0} ->
Myapp.Endpoint.broadcast("app:s
我在那里遇到了麻烦
但我在那里发现的解决方案实际上并不适合我,因为我使用的是ubuntu 15.10
问题是:
我试图通过以下方式创建新的凤凰城项目:
mix phoenix.new my_app
命令和捕获跟踪错误:
并且是捕获跟随错误
[error] Process #PID<0.47.0> raised an exception
(UndefinedFunctionError) undefined function:
:crypto.strong_rand_bytes/1 (
我正在尝试创建一个组件,该组件构建一个可能具有嵌套子菜单的菜单:
Product A
Product B ------ Product B1
Product C Product B2
Product B3
在我的组件中,我有以下代码(通过删除部件简化):
我得到了这个错误:
...cannot invoke remote function link_subMenuLinkNumber.subMenu/0 inside match
只有一个循环/
我正在使用Plug和Cowboy以及mix用Elixir编写一个简单的应用程序。执行后:
$ iex -S mix
应用程序启动。如果我执行
iex(1)> Application.start(:web)
{:error, {:already_started, :web}}
我得到了预期的输出。但是,当我尝试使用以下命令停止应用程序时:
iex(2)> Application.stop(:web)
:ok
我收到了:ok,但随后我收到了很多信息,包括以下内容:
iex(3)&g
我需要alias同一个文件中的多个模型,在我的文件中按常规操作时会占用大量可见空间:
alias Project.Model1
alias Project.Model2
...
alias Project.ModelN
我查看了文档,我认为不可能这样做:
alias (Project.Model1, Project.Model2,...,Project.ModelN)
alias Project.Model1 alias Project.Model2 ... alias Project.Mo
我正在尝试使用dialyxir通过它提供的混合任务对我的项目运行透析器分析
我已经将它添加到我的依赖项中,并按照自述文件进行编译
当我运行mix dialyxir.plt时,它不会报告任何错误,但会在不创建表的情况下退出
$ mix dialyzer.plt
Starting PLT Core Build ... this will take awhile
dialyzer --build_plt --output_plt /home/vagrant/.dialyxir_core_19_1.3.
以下是我目前拥有的三种型号
routine.ex
defmodule DailyRoutine.Routine do
use DailyRoutine.Web, :model
schema "routines" do
field :title, :string
field :timeframe, :integer
field :content, :string
belongs_to :user, DailyRoutine.User
has_man
我有以下控制器操作:
def edit(conn, %{"id" => id}) do
memo = Repo.get_by!(Memo, id: id, user_id: current_user(conn).id)
changeset = Memo.changeset(memo)
render(conn, "edit.html", memo: memo, changeset: changeset)
end
通过以下测试:
test "404s for editing wh
我有一个伞形项目(我的应用程序)如下:
├── 自述文件
├── 应用程序
│ ├── 应用程序1
│ | └── mix.exs
│ ├── 附件二
| | └── mix.exs
│ └── ...
├── 配置
└── mix.exs
我想获取当前正在运行的应用程序的名称,
例如:app\u one,app\u two
当我使用:
Mix.Project.get.Project[:app]
我总是得到主项目名我的应用程序
我该怎么做?您可以使用:app
标签: Elixir
phoenix-frameworkgen-server
我见过几个Elixir GenServer的示例,但它们主要处理值数组(例如购物车)或计数器增量。因此,它们演示了如何处理简单的数据类型
我想知道在更新某些模型记录时,如何在Phoenix应用程序中传递状态
我可以提供的例子如下:
步骤1:我收到AWS SNS通知(包含新添加的s3对象的数据)=>只需将消息存储到模型通知中
步骤2:我解析通知中的消息以读取s3对象文件名。然后将其存储到新的文档模型
步骤3:我获取s3对象的元数据(例如,原始_名称)并存储它
来自RubyonRails,我会这
标签: Elixir
phoenix-frameworkectoex-unit
我有一个带有产品模式的Phoenix测试应用程序。
我有一个由主应用程序主管启动的GenServer,它可以获取带有handle_调用的产品列表
def handle_call(:get_products, _from, _state)
products = Repo.all(Product)
{:reply, products, products}
end
现在我想为这个GenServer编写一个测试
我试着在测试中做类似的事情
setup do
pid = Process.wh
我已经开始学习phoenix framework,在尝试创建迁移时遇到了一些问题,下面是我的模式:
defmodule Lclp.User do
use Ecto.Schema
import Ecto.Changeset
alias Lclp.User
schema "users" do
field :email, :string
field :name, :string
field :password, :string, virtual: true
在将Enum.chunk\u by应用于列表之前,我需要规范化元素列表
例如,我们通常在枚举时逐项进行
source_list |> normalize_item
在引用列表中的前一个元素时,如何枚举
此外,我们如何在下一次迭代中保留对上一个规范化_项的引用
样本数据:
[
%PhoneBills.Text{end: 91, page: 13, row: 237, start: 48, text: "2348035250601"},
%PhoneBills.Text{end: 155,
假设我有一个函数,它给我一个UUIDv4
def get_uuid() do
# do magic
end
我有一个嵌套映射,可以是n级深度:
map = %{
name: "Alice",
friends: [
%{
uid: "EXISTINGUID",
name: "Betty"
},
%{
name: "Bob",
job: "Truck driver"
}
]
}
如何遍历整个映射,并在
以下是我正在测试的代码:
defmodule BracketParser do
@spec parse_line(binary) :: binary
def parse_line(line), do: parse_line_as_list(String.graphemes(line), false, [])
defp parse_line_as_list([], true, _acc) do
IO.puts("hello")
raise S
在我的config.exs文件中,我有
config :my_app,
foobar: [%{foo: "bar", keywords: ["hello", "world!"]},
%{foo: "xyz", keywords: ["bloop"]}]
此列表在代码中检索
Application.get_env(:my_app, :foobar)
但是,如果我要更新这个foobar配置,在我重新启动应用程序之前,这些更改不会生效
或者,有没有更好的方法来解决这个问题
酿酒厂2.0版
长生不老药1.7.1
OTP 21.0
首先,执行一个普通的发布,并使用混合发布进行部署。它创建了一个内置prod/rel/app_name/releases/1.0.1-08f6b0c
应用程序工作
现在更改一些内容,并再次使用mix-release创建一个发布版本——升级
它在prod/rel/app_name/releases/1.0.1-a4011918中创建了一个新版本
并按要求进行升级
/opt/app-name/bin/app-name upgrade 1.0.
genstage有一个项目
生产者A、生产者消费者B和消费者C
B一次请求一个事件(最小需求:0,最大需求:1)
C向B请求多个事件(最小需求:25,最大需求:50)
workers=for idGenStage不会自行缓存数据。因此,您需要做的是将数据缓存到生产者消费者中。谢谢,但这里我只看到生产者中的缓冲,您可以在handle_demand中跟踪事件不足以满足需求的情况。但如何在生产者-消费者中做到这一点,在生产者-消费者中没有handle\u需求,但有handle\u事件?
{:produ
我在展示页面中有客户联系人列表。
它是分页的
我想将搜索和排序添加到此列表中。
我一直在调查,但凤凰1.3似乎没有进展。我在mix deps时出错。获取抱怨的requuire phoenix版本
第二种选择是。但我很难理解,很难上路
我认为搜索和排序是大多数人实现的命令功能。
你是怎么做到的?我该怎么做呢?在使用任何更大、更复杂、更混乱的框架进行排序/搜索之前,您可以推出自己的解决方案
搜索
异位提供和治疗。简单的全文解决方案可能如下所示:
# In your Customer Controll
标签: Elixir
phoenix-frameworkecto
所以我正在创建一个简单的应用程序,用户可以在其中发布帖子。我还在学长生不老药,所以请耐心点
模型模式
使用者
化身
职位
评论
我的问题是在注释模式中关联用户
用户->拥有一个->化身
用户->有很多->帖子->有很多评论(用户?)
我不知道如何将用户与评论关联,每个模式都允许有多个关联。因此,您将需要与以下内容类似的内容
用户
有一个化身
有很多帖子
有很多评论
化身
属于用户
发布
属于用户
有很多评论
评论
属于用户
属于帖子
我相信这应该涵盖您要查找的内容。每个模式都
标签: Elixir
phoenix-frameworkecto
这似乎是一个很容易解决的问题,但很明显,我没有能够正确思考或寻找正确的位置
假设我有一个模式,其中列按惯例以snake_的形式命名,例如branch_id
通常,如果数据来自Phoenix表单,那么数据的键将与模式的键完全对应,这样就可以编写%MyStruct{}|>castattrs、[:branch_id]等
然而,在我的JSON API中,传入的JSON对象将具有camelCase中的键,例如branchId
我是否可以使用exto.Changeset中的任何函数方便地将这些键从传入数据对
我想使用获取一个锁,用于更新表名。与更新的相比,更新的仅锁定指定表中的行,并且连接的行不被阻止。然而,当我尝试使用下面的代码片段使用EXTO时,它失败了
query =
Call
|> join_other_tables() # custom methods
|> Query.lock("FOR UPDATE OF calls")
原因是,Ecto使用别名进行调用,例如,c0,这意味着我还必须在锁表达式中使用别名才能使其工作
query =
Call
|>
我如何创建一个定制的混合任务来动态生成代码和文件,就像Phoenix所做的那样。例如,Phoenix有一些生成器,比如mixphx.gen.html,可以在lib下动态添加一组文件。我并不想完成任何复杂的事情,只是想弄清楚如何动态生成代码。例如,我将如何创建一个混合任务,用此代码生成名为user.ex的文件
defmodule用户操作
def功能1(arg),do:arg
def功能2(arg),do:arg
结束
foo=你的应用程序名称
foo/lib/foo/mix/tasks/creat
我有一个在内存中生成PDF的应用程序。我需要将PDF文件返回到浏览器。请求类型为POST,但我在使用send_download时遇到问题。目前,我只能通过get请求使其工作
以下是我尝试过的:
在控制器中,如果请求是get(注意pdf是字节(etc))的话,这就起作用了
但是,如果我将请求转换为帖子,这将不起作用。当我这样做时,服务器上不会出现错误
我也尝试过:
conn
|> put_resp_content_type("application/pdf")
|>
检查一个列表是否包含另一个元素顺序相同的列表的“长生不老药”方法是什么?
一些测试来获得这个想法:
断言一些包含函数的函数([1,2,3],[1,2])
断言某个包含函数的函数([3,1,2],[1,2])
断言某个包含函数的函数([1,2,3],[2,3])
驳斥某些_包含_函数([1,3,2],[1,2])
驳斥某些包含函数的函数([1,2,3],[1,2,4])
不尊重秩序。中的任何函数也不尊重顺序,我在中找不到任何东西。有趣的问题。我在标准库中也找不到一个好的函数来实现这一点。这似乎是
我试图以一个包含许多不同首选项的地图结束,它应该是这样的:
%{some_preference_name:%{foo:"bar"},another_preference_name:%{foo:"bar"}}
我有一个数据库中的偏好映射列表,我需要遍历它们,并将“preference”字段设置为键,将各种值设置为值映射
我试着用Enum.reduce和Enum,map来实现这一点,但我无法获得正确的列表
Enum.map(preferences, fn(data)->
Map.put(
标签: Elixir
phoenix-frameworkecto
这是我试过的
date = Ecto.DateTime.from_erl(:calendar.universal_time())
query |> where([record], record.deadline >= ^date)
我也试过了
date = Ecto.DateTime.from_erl(:calendar.universal_time())
query = from m in MyApp.SomeModel,
where: m.deadline >
给定一个有多个用户连接到特定主题的频道,比如“房间:大厅”,我希望能够存储与频道相关的信息,我可以在每次收到新消息时检索并可能更新这些信息。从某种意义上说,我希望每个主题都是自己的GenServer一样的东西
据我所知,Phoenix.Socket.assign/3存储每个用户的本地信息,因此不起作用。我仍然不太明白您在问什么,但如果我是您,我会考虑使用来尝试做您正在做的事情。我会发布我正在查看的代理文档部分,但正如我所说,我不确定我是否正确理解了您的问题。我不太清楚@Havvy,但我认为您混淆
标签: Elixir
phoenix-frameworkecto
IO.puts(检查(触点))给出:
当我尝试渲染此视图时,我得到:
** (Poison.EncodeError) unable to encode value: {nil, "contacts"}
您需要为HelloTable实现Poison.Encoder协议。请按中所述联系,或使用以下命令从渲染函数返回贴图:
以上是在中处理JSON的方式。中描述了另一种可能更干净的解决方案,使用更高版本的毒药
将这行代码添加到您的模型中:
@derive {Poison.Encoder, only:
我有以下User模型,希望确保没有人在数据库中存储空字符串(例如空格)。如果有人为名字、姓氏或昵称输入“”(多个空格),则该属性应使用值nil保存。在Rails中,我会在验证之前使用回调来解决这个问题。在凤凰城解决这个问题的最好办法是什么
defmodule MyApp.User do
使用MyApp.Web,:model
模式“用户”做什么
字段:名字,:字符串
字段:姓氏,:字符串
字段:昵称,:字符串
时间戳
结束
@必填_字段~w()
@可选_字段~w(名字姓氏昵称)
@“医生”
基于'
我使用两种方法在elixir中生成了一个流程:
defmodule Second do
def called do
raise "oops"
end
end
spawn(Second.called)
** (RuntimeError) oops
second.exs:3: Second.called/0
spawn(Second,:called,[])
#PID<0.89.0>
iex(2)> 17:42:40.999 [error] Pro
我想为我的phoenix模板提供一个辅助方法,用于呈现导航。在我的视图目录中,我添加了以下函数
def render("breadcrumbs.html", %{user: user}) do
"<div>nav goes here</div>"
end
def render(“breadcrumbs.html”,%%{user:user})执行
“导航到这里”
结束
当我调用这个呈现函数时,它显示为一个字符串,而不是呈现的HTML。我应该如何创建一个可以在所
如何在elixir中转换此列表
[
%{key1: 1, key2: 2, key3: 3},
%{key1: 4, key2: 5, key3: 6},
%{key1: 7, key2: 8, key3: 9}
]
到这张地图
%{key1: [1, 4, 7], key2: [2, 5, 8], key3: [3, 6, 9])
?长生不老药还不是很好,但我想到了这个:
map = Enum.reduce(list, %{}, fn(inner_map, acc) ->
在Elixir中,“=”运算符是“绑定”运算符。
所以我想知道为什么这段代码会起作用:
a = 0
a = a + 1
如果我们检查“a”的值现在是1。
我希望看到绑定错误消息,如:
** (MatchError) no match of right hand side value: 0
重新绑定操作是如何工作的?在Elixir=中是模式匹配操作符。它检查左侧和右侧是否相等。
但是,它也用于绑定和重新绑定变量。在您的示例中,重新绑定仅仅意味着“现在让a存储a+1的先前值”,这与任何其他语言中
标签: Elixir
phoenix-frameworkecto
我正在尝试将记录范围限定为属于当前用户的内容。但我没有太大的成功。以下是我正在尝试的:
def show(conn, %{"id" => id}) do
user_id = Map.get(Statcasters.Guardian.Plug.current_resource(conn), :id)
user = Repo.get!(User, user_id) |> Repo.preload(:leagues)
league = Repo.get(user.
标签: Elixir
renderingphoenix-frameworkbitbitstring
我有一个格式为bitstring=的位字符串。我想渲染,但毒药或Jason似乎没有渲染。以这种方式呈现位字符串的最佳方式是什么
像这样的
bits = <<18::6,8::4,2::5,16::5,18::6,3000::16,0::4>>
render(conn, "bits.json", bits: bits)
位=
渲染(conn,“bits.json”,bits:bits)
无法将46位转换为字节数组。另外,这里有两个最自然的选择
可以将数组与值的二进制表示形
标签: Elixir
phoenix-frameworkrbac
我正在尝试一个基于角色的访问控制Pheonix API。用户将在其中登录并创建会话。登录后,他可以创建一个帖子,创建的帖子将分配给该用户id。我遇到了这个问题,用户id像字符串一样出现,而不是其中的值
我尝试了String.to_integeruser_id,但它给出了一个错误,因为user_id像字符串一样出现,而不是存储id的变量
我的路由器
scope "/", PxblogWeb do
pipe_through :browser
get "/", PageContro
出于安全原因,我有一个功能,我只希望在开发环境中可用。如果我这样做:
if Mix.env() == :dev do
def some_func() do
do_sensitive_stuff()
end
end
当我编译我的项目时,if块中的代码不会被编译吗?更一般地说,我可以像这样在编译时运行代码吗?或者我需要宏之类的东西 Elixir实际上是Erlang虚拟机之上的DSL。领域非常广泛,但仍然是。《长生不老药》中几乎所有的东西都是宏观的
def,defmo
标签: Elixir
phoenix-frameworkecto
其中有一个部分将页面视图增量功能添加到虚拟CMS上下文中。在CMS上下文中创建的函数如下所示:
def inc_page_views(%Page{} = page) do
{1, [%Page{views: views}]} =
from(p in Page, where: p.id == ^page.id, select: [:views])
|> Repo.update_all(inc: [views: 1])
put_in(page.views, views
我有以下数据集:
%{
"away" => %{
"id" => "575ec304-wlk3-239n-3032jdns3944",
"points" => 115
},
"home" => %{
"id" => "583ec7cd-fb46-11e1-82cb-f4ce4684ea4c",
"points" => 120
}
}
我想返回点最多的地图,这样我就可以得到这个
%{
"home" =>
我有一个长生不老药伞应用程序,有凤凰,苦艾酒(graphQL)。在AppWeb中,我的AppWeb.Router路由请求,使用苦艾酒.Plug处理/graphql,并使用MyApp.Schema
在AppWeb.Schema中,我使用import\u类型从不同OTP应用程序中的许多不同模式导入对象。我将以用户为例
Users.Schema有对象和字段,它们最终将resolve&Resolvers.resolve\u x/2
我知道Phoenix在每个请求上都启动了一个新的进程,hexdocsAb
我记得我找到了一个可以让你在1小时内将日期时间转换成字符串的东西,但我的搜索结果是空的。你可能对Timex感兴趣
这是您想要的还具有包括本地化在内的功能
iex> Cldr.DateTime.Relative.to_string(~U[2017-04-29 09:00:00Z], relative_to: ~U[2017-04-29 08:00:00Z])
{:ok, "in 1 hour"}
iex> Cldr.DateTime.Rel
标签: Elixir
distributed-computing
我正在使用Horde0.8.3来管理Elixir应用程序的分布式注册表和管理器。应用程序创建的UserAgent-s(简称UA)被实现为GenServer-s。每个UA代表一个连接到应用程序的用户。UAs是使用Horde.DynamicSupervisor.start_child(MyApi.DSup,{MyApi.UserAgent,user})创建的。在创建UA的同一个函数中,应用程序调用UA客户端API,例如UserAgent.ping(UA\u id)(此API的性质在这里并不重要)pi
上一页 1 2 ...
13 14 15 16 17 18 19 ...
下一页 最后一页 共 125 页