Ruby有一个很棒的枚举方法。长生不老药有类似的东西吗?我在枚举模块上找不到此功能。谢谢,还没有。我们没有添加它,因为我们正在等待地图。它将被添加到v0.13分支中。:)
*更新*
对于没有注意到下面评论的任何人,现在已经添加了它。这里是Enum模块中的一个示例
根据字符串的长度对字符串数组进行分组:
iex(12)> ["ant", "buffalo", "cat", "dingo"] |> Enum
我知道如何在Elixir中以写入模式打开zip文件:
file=file.open(“myzip.zip”,[:write,:compressed])
但是在这之后,如果我有一个目录/home/lowks/big_files,我如何将它写入文件?如果你在zip文件上操作,你需要使用:zip.extract('foo.zip'),和:zip.create(名称,[{foo',file1data},file2path,…)
:zip.create包含一个名称和一个列表,该列表可以包含以下两个选项之一
标签: Elixir
phoenix-frameworkecto
我试图通过编程方式将预加载附加到我的一个模型的查询中,该模型通过:关系具有has\u many
我的模块:
defmodule MyApp.Chemical do
use MyApp.Web, :model
schema "chemicals" do
has_many :company_chemicals, MyApp.CompanyChemical
has_many :companies, through: [:company_chemicals, :companie
标签: Elixir
phoenix-frameworkecto
我有一个外胚层模型
defmodule App.Profile do
use App.Web, :model
alias App.Repo
schema "profiles" do
belongs_to :user, App.User
field :name, :string
field :last_name, :string
field :second_surname, :str
这看起来像一个错误,但我不确定。
有人能告诉我在不同的端口号上运行iex是否有效吗。它总是使用端口4000
PORT=4001 iex -S mix phoenix.server
Erlang/OTP 18 [erts-7.3] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
[info] Running AppMessenger.Endpoint with Cowbo
我知道我有点像红宝石,甚至是Java,但我经常遇到这样的情况
我想定义一些通用模块(可以使用元编程),它将使用一些变量/函数,这些变量/函数将在“子”模块中指定(可能使用此通用模块)
我想象它是这样的:
defmodule Parent do
defmacro __using__(_) do
quote do
def function do
__MODULE__.other_function
end
end
end
end
后来:
我试图简单地在模板中显示一些数据。但很明显我错过了一步
使用HTTPoison请求
use HTTPoison.Base
@expected_fields ~w(result)
def process_url(url) do
"url.json"
end
def process_response_body(body) do
body
|> Poison.decode!
|> Map.take(@expected_fields)
|> Enum.ma
我正在尝试从版本1.3.4升级到v1.4,但是我在安装或入门指南中没有看到关于更新当前安装的任何内容。我知道我可以重新安装Elixir,但升级到更高版本的标准方法是什么?在Windows环境中,最首选的方法是使用巧克力来安装Elixir。巧克力是Windows的软件包管理工具。这样做的好处是,您可以更新到Elixir的最新版本或安装特定版本
以下是Elixir的巧克力页面:对于不使用巧克力的用户:转到,下载windows web安装程序并执行安装程序
在安装过程中,它会询问您是否要替换当前安装的
我想扩展flash消息的类型,但执行以下操作时出现错误:
defmodule Backend.AuthView do
use Backend.Web, :view
def flash(message, :auth_info) do
...
end
def flash(message, :auth_notice) do
...
end
end
并将其导入另一个模块:
defmodule Backend.LayoutView do
use Backend.
因此,我试图构建一个带有一些错误处理的插件,如果用户没有经过身份验证,就可以发送响应。这是我的密码:
def unauthorized(conn) do
respond(conn, response_type(conn), 401, "Unauthorized")
end
defp response_type(conn) do
accept = accept_header(conn)
if Regex.match?(~r/json/, accept) do
标签: Elixir
phoenix-frameworkload-testing
我正在尝试对需要登录的路由进行负载测试
我以前使用的是注销的路线,效果很好。对于登录的路由,我尝试调用beforeRequest,并使用一个函数设置请求头和请求体
config:
目标:“https://www.mywebsite.com/"
阶段:
-持续时间:60
抵达日期:50
处理器:“test.js”
情节:
-流量:
-职位:
url:“/login”
请求前:“setReqBody”
我以前的请求是这样的:
函数setReqBody(请求参数、上下文、ee、下一个){
reque
我有一个待办事项清单:
[
{%{date_value: ~D[2017-01-01], weekday: 7}, %{todo: "a", priority: 1}},
{%{date_value: ~D[2017-01-01], weekday: 7}, %{todo: "b", priority: 2}},
{%{date_value: ~D[2017-01-01], weekday: 7}, %{todo: "c", priority: 3}},
{%{date_valu
标签: Elixir
phoenix-frameworkreleasedistillery
我已经使用命令MIX\u ENV=prod MIX release--ENV=prod--verbose创建了构建。它成功地创建了构建,我可以运行控制台和ping命令,并给我pid。即使在我运行start命令时,它也成功启动,但当我转到htttp://localhost:4000,服务器不运行。当我运行\u build/prod/rel/project/bin/project front命令时,它只是挂在那里,没有输出
我使用的是MacOS版本:10.13.2,elixir:1.6.5(使用OT
我是新来的长生不老药/凤凰/外星人。我使用exto.migration创建了一个具有4种不同模式的数据库。表的创建是正确的,但是当我尝试查询表时,ecto没有找到它们
ERROR 42P01 (undefined_table): relation "users" does not exist
我知道问题与数据库架构相关,因为当我在默认架构中创建users表时,Exto会发现它没有任何问题。确保迁移文件和架构文件具有相同的表名users。
您可以使用mix-exto.migrations命令检查
我遇到一个问题,我的测试/支持过去没有得到编译:
# Specifies which paths to compile per environment.
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
我决定在运行混合测试时检查环境,令我惊讶的是它的:dev
pry(1)> Mix.env()
:dev
我是否缺少一些额外的配置
混合文
在p。25在“编程凤凰1.4(电子书,beta版)”中,Chris McCord的旁白写道:
在控制器中的世界动作中,外部参数
字符串键,“name”=>name,而在内部我们使用name:name。
这是整个凤凰城的一个惯例。无法使用外部数据
可以安全地转换为原子,因为原子表不是
垃圾收集。相反,我们显式匹配字符串键,
然后,我们的应用程序边界(如控制器和通道)将
将它们转换为原子键,我们将在其他任何地方依赖它
凤凰城里面
引述如下:
外部数据无法安全地转换为原子…因此您需要转换
字符串键到原
我正试图从对讲机获取所有公司的名单。使用每页时,一次给出的值不会超过60。还有另一个端点,如
https://api.intercom.io/companies/scroll,这将获取滚动参数以获取其他公司,依此类推
滚动参数随第一个请求一起提供,然后您可以使用它,直到公司成为[]
我创建了这个方法
defp companies(scroll_param) do
url = if scroll_param, do: "#{@intercom_url}/companies/scroll
使用此命令启动服务器时:
mix phx.server
我收到以下错误消息:
pid=<0.2324.0> error_logger=format [error] GenServer Tzdata.EtsHolder terminating
** (MatchError) no match of right hand side value: {:error, :cannot_create_table}
(tzdata) lib/tzdata/ets_holder.ex:59
当使用身份验证时,我收到此响应:
正文:“{\'errors\\”:[{\'id\':\'authentication\'u error\',\'message\':\'invalid signature\'}]
目前的资料来源:
(对通用长生不老药风格的反馈也很感谢,这是我在该语言方面的第一个项目)
defmodule请求do
解构(
方法:“,
路径:“”,
基:“,
正文:“,
时间戳:零,
关键字:无,
秘密:零,
签名:无
)
需要HTTPotion
需要毒药
def new(方法、
有没有一种方法可以将符号作为函数调用,这样下面的代码就可以工作了
op = :+
3 = op(1,2)
使用
{3,}=code.eval_引用{:+,[],[1,2]}
#⇒ {3, []}
在更复杂的情况下,您可以使用它来实现该功能。基本上,宏确实接收AST并返回AST以代替宏调用进行注入
defmoduletestdo
反作用宏(o,a1,a2)do
{o,[],[a1,a2]}
结束
结束
需要测试
Test.op:+,1,2
#⇒ 3
此外,您还可以使用
apply(内核
标签: Elixir
phoenix-frameworkecto
我有主要数据和详细数据。我想同时插入两个
-------
main
-------
id
name
-------
---------
detail
---------
id
main_id
name
---------
我用的是星外的多重交易。
然而,我不知道如何立即插入
main = [name: "zaku"]
details = [%{main_id: 1, name: "hoge"}, %{main_id: 1, name: "moja"},]
Multi.new(
标签: Elixir
ectophoenixchangeset
我在尝试实现自定义变更集验证时遇到了一些问题。
我的模式是:
defenum(VersionStateEnum, ["draft", "active"])
schema "versions" do
field :expires_at, :utc_datetime
field :state, VersionStateEnum
end
我试图实现的验证是:只有当状态为草稿时,才能设置expires\u at(这对于更新也应该有效,
从v0.9.0开始切换到Phoenix master后,运行混合编译时出现此错误:
== Compilation error on file lib/youli/endpoint.ex ==
** (ArgumentError) an adapter was given to :pubsub but no :name was defined, please pass the :name option accordingly
lib/youli/endpoint.ex:2: (module
标签: Elixir
rethinkdbphoenix-frameworkecto
刚到Elixir/Phoenix,我想用RejectionDB代替PostgreSQL,但我只找到PostgreSQL上的文档/示例(这似乎是默认/官方数据库)。Hamiltop提供了一个非常好的包(RejectDB elixir),但不幸的是Wiki中的文档还没有准备好,自述文件中的内容对我来说还不够。
我绝对不想使用SQL(我是从使用Meteor/MongoDB开始的,当时数据库不是问题所在)。
谁能给我一个简单的代码示例,我需要:
连接到数据库
启动服务器/管理服务器/连接
创建数据库/表
在Ruby中,我会使用Ruby_PLATFORM常量来确定我的程序运行在什么操作系统(Mac、Windows、Linux等)上。长生不老药有办法得到这些信息吗
我目前正试图重新创建一个我用Elixir编写的Ruby程序,我有一个方法,可以通过一个依赖于操作系统的系统调用来打开一个文档。该方法类似于:
def self.open_document(filename)
case RUBY_PLATFORM
when %r(darwin)
system('open', filename
如何仅返回订单中的嵌套列表元素:id匹配127?我如何在“订单”列表中搜索它,而不知道它的位置(仅按值搜索)
所需结果:[id:127,配送至:…]您可以用于此目的。它接受一个可枚举的元素(如这里的订单列表)和一个函数,并返回第一个元素,该函数为该元素返回一个真实值(non-false和non-nil)
这只是一种可能的解决办法;有许多可能的方法:)。例如,您还可以将[]语法与Enum.find/2一起使用:
Enum.find(orders, fn order -> order[:id]
标签: Elixir
phoenix-frameworkstatic-files
有没有办法在呈现的页面中显示用户发送的图像?
我读过有关文件上传的文章,但将其发送回用户的唯一方法是使用似乎不适合在网页中呈现图像的文件。我想把文件移到assets/static文件夹,但我觉得这不是它的归属
我来自Django世界,静态文件和上传内容之间存在分离,我想知道凤凰城也有类似的概念
简而言之,如何渲染用户上传的图像?这里有两个选项。您可以在视图中直接创建映像并使用内联数据uri()。这会使您的图像大小增加很多,并且仅适用于较小的图像,因为在这些图像中,到服务器的额外往返成本高于发送大
我正在使用Map和List
在地图的情况下,我只希望一些元素,按关键字搜索:
my_map = %{key1: "value1", key2: "value2", status: :success}
Map.take(my_map, [:key1, :status])
my_list_of_maps = [%{key1: "value1", key2: "value2", status: :success}, %{key1: "value3", key2: "value4", status:
我已经为这个问题争论了一段时间了
将阿拉伯语或希伯来语字符写入Windows上的IEx控制台(IEx--werl-S mix)时间歇性崩溃。如果我单击debug并附加到Visual Studio会话,我可以单击continue并使其工作
有没有一个永久性的解决办法
请注意,不使用--WERL开关直接从IEx命令提示符运行相同的代码不会出现错误。这在某种程度上表明,威尔是罪魁祸首
我的设置:
Microsoft Windows [Version 10.0.14316]
-------------
因此,我正在编写一个快速的异步用户名验证检查,按照PhoenixFrameworks网站上的教程,我可以这样做:
def validateUsername(conn, %{"username" => user}) do
IO.inspect(conn)
query = from u in User,
where: u.username == ^user,
select: [u.username]
case Repo.all(query) d
标签: Elixir
phoenix-frameworkex-unit
我正在用我无法模仿的外部库实现一些棘手的功能。他们需要实现对服务器的实际请求。所以
如何在测试实施期间运行web服务器
附:我的config/test.exs:
config :my_reelty, MyReelty.Endpoint,
http: [port: {:system, "PORT"}],
url: [host: "localhost", port: 5000] # Specific port
我正在尝试curlhttp://localhost:5000但是获取curl:
如果我有这样一条管道:
"1" |> String.to_integer
如果字符串为空(不是零),我如何防止它
一切都取决于上下文。例如,您可以使用默认值并在私有函数中使用它
defp convert_to_integer(my_string \\ 0) # if 0 is appropriate default value
String.to_integer(my_string)
end
当然还有一种更好的方法-Integer.parse,如果一切正常,它将返回有效的元组;如果
标签: Elixir
template-enginephoenix-framework
我有一个布局文件,它加载在多个路由上。在布局文件中,我加载CSS:
<link rel="stylesheet" type="text/css" href="css/app.css" media="screen" />
这将正确地从中加载我的文件
但是,这仅在访问我的应用程序“/”的基本路径时有效。例如,如果用户访问/user,那么我将以
如何正确引用模板和布局中的静态CSS路径?要加载相对于站点根目录的CSS文件,只需将/前置到href:
<link rel="sty
--背景
我正在努力用Elixir替换当前Rails rest API的一些端点。我爱上了雨伞的想法,它包含一个HTTP端点(一个Phoenix应用程序)和一系列小型nano应用程序;可能是一个完全负责与用户数据交互的用户应用程序
——问题
现在我希望能够独立地扩展这些服务,比如说如果用户服务上有更大的负载。我们在当前的设置中使用Docker,所以理想情况下我会部署更多的用户应用程序容器
这意味着我需要某种形式的交流,我目前使用GenServer创建了一个概念证明,它工作得很好,但似乎围绕着传递
我需要所有的模型来实现特定的协议。我当前尝试的是一个MyApp.Convert模块,定义了此宏:
defmodule ConvertMacro do
@moduledoc """
All model structs need to implement the convert interface and must be added
here.
"""
defmacro defimpl_convert_for(modules) do
Enum.map(modules,
在作为参数传递给函数的映射中,有没有方法对nil值进行模式匹配
基本上,如果在下面的代码中token是nil,我想进行模式匹配并调用函数2。如果不编写两个不同名称的函数和一个case语句,我似乎无法做到这一点
def my_stuff(%{part: "snippets", possible_nil_token: token}), do: IO.puts "non nil" #function 1
def my_stuff(%{part: "snippets", possible_nil_t
看起来Exunit为设置块提供了回调。我很好奇如何用袋鼠特性测试来完成它。在测试集成测试时,我基本上会在每个场景中创建一个用户。我基本上希望拿出样板代码,并将其用于我编写的每个测试。这是我当前的集成测试设置
test "a user can create a location", %{session: session} do
assert session
|> visit("/users")
|> click_link("Create new
标签: Elixir
otperlang-supervisor
在中,有一行表示:
使用此模块实现的主管具有一组标准接口功能,包括跟踪和错误报告功能
不幸的是,我不知道怎么做。我想要的是某种钩子/通知/事件,当主管检测到一个童工崩溃并正在重新启动时,就会触发这种钩子/通知/事件。主要是,我只想记录一个worker崩溃的事实,这样我就可以向用户显示这个错误,在我的例子中,这需要将错误消息写入数据库中的一个字段
我错过了什么?有没有什么地方可以传递一个函数或模块,当一个孩子被终止时,该函数或模块将被调用?当孩子崩溃时,错误被记录到BEAM中的SASL记录器中,我
从中,我了解了=~操作符如何匹配正则表达式,但我不了解该操作符的一般用法
例如,“foo”=~“foo”是什么意思?
它与“foo”==“foo”有何不同?该页面上没有记录它,但它记录在当RHS是字符串时,=检查LHS是否包含RHS:
iex(1)> "foo" =~ "f"
true
iex(2)> "foo" =~ "o"
true
它不会隐式地将RHS转换为正则表达式:
iex(3)> "foo" =~ "."
false
=~根据正则表达式进行验证,==验证精确匹配
我有一个配置文件,我想用以下格式读取
[key_1]
inner_key_1 inner_entry_1
inner_key_2 inner_entry_2
inner_key_3 inner_entry_3
inner_key_4 inner_entry_4
[key_2]
inner_key_5 inner_entry_5
inner_key_6 inner_entry_6
inner_key_7 inner_entry_7
inner_key_8 inner_entry_8
然后会被映射
我有一个正确显示文本的项目显示页面:
<p><%= @post.body %></p>
<%= @post.title %></h1>
在stories.ex中,我有:
|> cast_attachments(attrs, [:project_pic])
在最新的迁移文件中,它存储为字符串:
add :project_pic, :string
也许这就是错误所在
我不确定错误是在我的eex语法中,还是在文件结构中更深的地
我使用:gproc来命名一些动态启动的GenServer,但我想向这些进程发送消息,我需要PID,如果我不使用:gproc.reg/1,我不确定如何使用gproc获取它们
基本上这是GenServer的一部分
def start_link(name) do
IO.inspect(via_tuple(name), label: "NAME")
GenServer.start_link(__MODULE__, %{name: name, songs: []},
我使用ETS为原始缓存提供了以下GenServer/client实现:
defmodule Cache do
use GenServer
def start_link() do
GenServer.start_link(__MODULE__, [])
end
def fetch(key, def_value) do
case get(key) do
{:not_found} -> set(key,
我有以下代码:
try do
IO.inspect("start task")
t = Task.async(fn -> Process.sleep(7000) end)
IO.inspect("start awaiting")
Task.await(t)
rescue
e ->
IO.inspect("catch error")
IO.inspect(e)
after
IO.inspect("after")
end
IO.inspect("
我在布局文件夹中添加了一个navbar.html.eex,这个模板是从app.html.eex
在app.css中:
@import'navbar.css'
它应该指向我的文件:assets/css/navbar.css
但是文件没有加载,在我的浏览器控制台中我得到:gethttp://localhost:4000/css/navbar.css net::ERR_中止,出现404错误
我来自Rails世界,这就是我过去的习惯,但也许在凤凰城有另一种方式。我在凤凰城找不到一个关于管理css文件的好
我为一个没有id字段的表生成并运行了迁移(使用字段league\u id作为主键)。我确认迁移按预期进行(检查了psql中的数据库,表中确实没有id字段,league\u id是主键)
当我运行Repo.all(League)时,我得到以下错误:
13:01:14.962[debug]查询错误source=“leagues”db=2.8ms
从“联赛”中选择l0.“id”,l0.“联赛id”作为l0[]
**(Postgrex.Error)错误42703(未定义的列):列l0.id不存在
有没有
这是我的代码:
defmodule Test do
def fun() do
Process.sleep(10000)
IO.puts "sleep over"
end
def dummy(:b) do
spawn(fun())
end
def dummy(:a) do
spawn(Test,:fun,[])
end
def dummy() do
spawn(fn -> Process.sl
使用以下代码:
[
%测验{
问题:意大利单位,
答复:[
%{答案:1900,结果:假},
%{答案:1861,结果:正确},
%{答案:1848,结果:假},
]
},
%测验{
问题:法兰西河,
答复:[
%{答案:1789,结果:正确},
%{答案:1818,结果:假},
%{答案:1766,结果:假},
]
},
%测验{
问题:美国的scoperta酒店,
答复:[
%{答案:1280,结果:false},
%{回答:1500,结果:false},
%{答案:1492,结果:正确},
我有一个(PostgreSQL)数据库,其中包含表fd\u feed,fd\u tag和连接表fd\u feed\u tags
我已经按照这些长生不老药指南建立了我的数据库:和。以下是我的数据库架构的快照:
如何配置elixir迁移或模式,以便在删除fd_标记的最后一个父项(fd_提要)时,该标记将从数据库中删除?您在外键上设置了_delete::delete_all:
add(:fd_feed_id, references(:fd_feed, on_delete: :delete_all))
标签: Elixir
phoenix-frameworkecto
我预期会发生什么:当尝试插入一个已存在用户名的角色时,调用Repo.insert返回我详细信息中有错误的变更集
发生了什么:EXTO提出了一个严重的例外
我在我的凤凰城项目中遇到以下错误
** (exit) an exception was raised:
** (Ecto.ConstraintError) constraint error when attempting to insert struct:
* personas_username_index (unique_c
上一页 1 2 ...
69 70 71 72 73 74 75 ...
下一页 最后一页 共 125 页