阅读文档似乎只是为了创建一个可以读取/获取值的资源,而不是写入/放入。我理解正确了吗?还是我读错了?如果我理解正确,我必须创建什么类型的资源来从流中写入/放入,一个可收集的?你是正确的。Stream.resource/3便于定义源。在下面,Stream.resource/3实现了一个枚举,这是所有源(以及map等转换器)实现的协议
可枚举协议非常适合从事物中提取值并将其转发,但是它不适合将这些值收集到合理的事物中。为此,您需要实现可收集协议
你可能会想,如果你两者都想要呢
例如,您可以查看Eli
标签: Elixir
phoenix-frameworkecto
假设我有一个Person模型,每个人都有一个生日字段设置为exto.Date列
因此,如果我从数据库中检索到一条表示此模型实例的记录,那么从此人的生日栏中获取其年龄的最佳方法是什么?不确定“最佳方法”,但这是一种方法:
用法如下:(今天是2015年9月27日)
或者,对于今天以外的人工计算:
iex(3)> AgeCalc.age(%Ecto.Date{day: 28, month: 9, year: 2000}, {2034, 12, 25})
34
我使用的是Exto的查询API。我
我在elixir中使用了一个简单的事件处理程序GenEvent:
defmodule myHandler do
use GenEvent
#Callback
def handle_event {:message, x}, state do
IO.puts("Message value is #{x}")
{:ok, [x|state]}
end
end
我可以用通常的方式启动一个处理程序和一个管理器:
{:ok, mgr} = G
我正在尝试按照解析LIFX头
以下是我的代码:
data = <<36, 0, 0, 52, 33, 235, 176, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0>>
<< size :: little-integer-size(16),
origin :: little-integer-size(2),
tagg
我想知道如何在这个函数中(在我的视图文件中)像在模板中一样,为使用:
对于此数据结构,您可以执行以下操作:
def current_page(conn, data) do
cond do
conn.request_path == "/" -> "Home"
datum = Enum.find(data, &(&1.link == conn.request_path)) -> datum.text
true -> "Upps, not
我想将模块常数的繁重计算放在单独的函数中,但这失败了:
defmodule Test do
@test calc_constant()
defp calc_constant do
# Calculation heavy task like building a translation table
end
end
我能不必在模块顶部写下整个计算结果就可以这样做吗?是的,你可以,但你应该把函数放在其他模块中
iex(1)> defmodule A, do: def ca
标签: Elixir
releasedependency-management
我创建了一个简单的Cowboy/Plug应用程序,它使用Plug.Debugger
这些是我在mix.exs
extra_applications: [:cowboy, :plug, :logger]
我正在通过mix-release使用蒸馏厂来制作一个版本
iex-S mix和运行发布版都可以很好地启动应用程序,但在出现错误时它们会有所不同。对于iex会话,Debugger正确地处理错误,但对于发行版,我得到以下错误:
**(未定义函数错误)函数EEx.Engine.fetch\u assi
我在《长生不老药》一页上看到了。我在创建新记录方面有问题。当我试图添加一本新书时,我会遇到这样一个错误
cannot convert Bookstore.Inventory.Book to param, key :slug contains a nil value
我不知道我的代码哪里出了问题。我已经编写了相同的代码来为我的作者的页面创建slug,而且效果很好。如果能指出我犯了错误,我将不胜感激。
我正在使用{:slagify,~>1.3}
inventory/book.ex
@d
我正在通过模拟棋盘游戏学习长生不老药,我有以下代码:
defprotocol Board do
def can_handle_move(self)
def handle_move(self, move)
end
defimpl Board, for: List do
def can_handle_move(self), do: Enum.empty?(self)
def handle_move(self, move), do: List.delete(self, move)
e
在用于Elixir的Phoenix web框架中,get/pages/:page、PageController、:show、as::pages中的as::pages做了什么?第二,什么是:,一个宏?映射?as:选项允许您自定义我们生成的命名路由器助手函数,以重新创建定义的路由。i、 e从文件中:
还可以使用:as选项自定义命名帮助器。鉴于
路线:
get "/pages/:page", PageController, :show, as: :special_page
指定的帮助者将是:
在Elixir中,多个表达式可以用分号(;)分隔
Elixir在下面的功能定义中抱怨
defmodule Module2 do
def func([c], n), do: IO.inspect(c); c + n
end
错误地
** (CompileError) hello.exs:2: undefined function c/0
(stdlib) lists.erl:1352: :lists.mapfoldl/3
(stdlib) lists.erl:1352:
是否有可能实现以下行为,即尝试更改模块属性的值以改变模块方法的行为
defmodule Adder do
@num_to_add 10
def addTo(input), do: input + @num_to_add
end
IO.inspect Adder.addTo(5) # Prints 15
Adder.num_to_add = 20
IO.inspect Adder.addTo(5) # Expect it to print 25
它抛出下面的错误
** (Com
标签: Elixir
phoenix-frameworkecto
我想知道是否有一种方法可以使用Elixir和Phoenix框架创建表单对象?我想实现一些类似于reformgem在Rails中所做的事情,因为我不喜欢在每种情况下都运行相同的验证,这会导致我的经验中出现复杂的代码。那么,我可以创建如下内容并使其以某种方式工作吗
defmodule RegistrationForm do
defstruct email: nil, password: nil, age: nil
import Ecto.Changeset
de
我想调试我部署的phoenix应用程序上的一个问题。有没有一种简单的方法来启用文件日志记录
与rails创建uat.log和production.log的方式类似,我使用这个库修复了这个问题:
我把它添加到我的mix.exs中
{:logger_file_backend, "0.0.4"}
然后将其添加到我的环境配置(dev.exs和prod.exs):
有关更多信息,请参阅
config :logger, format: "[$level] $message\n",
backends:
在Phoenix框架中使用“直通”关系时,如何查看相关模型
例如,我有一个视图,它显示了一个正常属性,没有任何问题:
<%= @log.amount %>
如何访问视图中的活动
如果我调用@log.activities,我会得到一个活动。如果我调用@log.activities[0].name或@log.activities.name我得到一个错误(“参数错误”)要从列表中获取第n项,您需要使用枚举.at(list,n)而不是列表[n]。例如,要获取第一个(索引0)项的名称:
我试图在Phoenix应用程序中显示flash消息,但它们似乎没有显示出来。我尝试过许多不同的方法,其中之一是:
<div class="row">
<div class="col-sm-12">
<%
info = get_flash(@conn, :info)
error = get_flash(@conn, :error)
%>
<% if info do %>
<div clas
在文件~/.iex.exs中,我有一个定义了多个函数的模块,我想从iexshell调用这些函数,而不使用模块名前缀
使用import SomeModule不起作用,出现错误:
模块SomeModule未加载,但已定义。发生这种情况是因为您试图在定义的相同上下文中使用模块。尝试在需要的上下文之外定义模块。
在~/.iex.exs中是否有这样做的方法?这是.iex.exs机制的已知限制。.iex.exs文件在与您在shell中键入内容相同的上下文中进行计算:基本上,iex加载.iex.exs就像您在
有没有可能用长生不老药的语言来检查一个给定的日期在美国是否是假日
在Ruby中,我们有一个宝石叫做。我想知道如何在Elixir中制作一些东西。您可以在上搜索混合依赖项(类似于gems)。目前我们没有可用的。您可以获得的最接近的结果是,您可以在上搜索混合依赖项(类似于gems)。目前我们没有可用的。你能得到的最接近的是这个你可以考虑从GEM中读取美国假日相关的YAML文件:https://github.com/holidays/holidays/blob/master/definitions/us
如何匹配router.ex中的路径末端,如下面的路径。路径的结构不是固定的,可能有一个/两个/三个或更多级别
www.example.com/first/second/third
或
通常,您可以执行一个get/:first“,但它只会根据
你可以做一个
get "/first/*anything"
您可以在控制器中调用params[“anything”],以获取其余路径
编辑:如果您的路径是/first/second/third,参数[“anything”]将返回[“second”,“t
我目前正在通过Elixir lang网站上的OTP和mix教程学习Elixir,我很难找到如何从shell中重新编译和重新加载项目
在Erlang中,我将执行make:all([load]),它将编译并加载发生的任何更改。然而,在iex中,它总是说::最新的,这是有道理的,因为Elixir使用mix来满足它的编译需求
我在iex中找不到任何等效功能。您可以使用该功能
重新编译当前的混合应用程序
例如,此帮助程序仅在IEx以混合项目启动时有效
例如,iex-S mix。在编译代码之前,它将停止
当
有没有一种方法可以使用RoR turbolinks和:Phoenix中的远程表单和链接
更新
基本上,远程表单和链接以及TurboLink是一种构建动态JavaScript站点的简单方法,以防高级框架(如React或主干网)过于苛刻
什么是:remote,它是RubyonRails表单和链接助手的一个特殊选项,它不向服务器提交表单和导航链接,而是向服务器发送AJAX请求,服务器反过来用一些JavaScript响应,浏览器对其进行评估
这项技术使JavaScript表单和UI变得非常快速和廉价,而
我使用http客户机通过http请求调用服务器,问题是如何将响应中的结果体转换为映射
我得到的结果是:
"{status: 'ok'}"
我需要进行模式匹配,并从上面的字符串中提取状态值
有什么想法吗?首先,您可能需要像这样构造有效的JSON:
~s({"status": "ok"})
注意有用的~ssigil,它让您不用担心转义双引号,这在JSON中是必需的
然后,您可以简单地利用解析到映射(或结构,如果您愿意)和模式匹配,如下所示:
%{"status" => status} =
我有一个Phoenix应用程序,我有民意调查,有很多候选人,有很多选票
在我的控制器中,我按如下方式加载轮询:
poll = Repo.get_by!(Poll, url: String.downcase(url))
|> Repo.preload([:candidates])
# and set it for the view like this
render(conn, "poll.html", poll: poll)
poll = Repo.get_by!(Poll, ur
在将内容作为JSON发送之前,我想将elixir中地图的键从snake case更改为camel case。我该怎么做?它应该仅仅是一个我将包装每个响应的函数,还是应该在某个较低的级别上完成,即在毒药中
谢谢很多人不知道这是长生不老药的一部分:
iex> Macro.underscore "SAPExample"
"sap_example"
iex> Macro.camelize "sap_example"
"SapExample"
iex> Macro.camelize
我现在正在尝试长生不老药。我对Ruby或函数式编程都没有什么经验,所以我对语法不太熟悉。我正在阅读,其中一个例子让我有点困惑。首先,指南显示了案例控制流结构,我对此理解得很好
case {:one, :two} do
{:four, :five} ->
"This won't match"
{:one, x} ->
"This will match and bind `x` to `:two` in this clause"
_ ->
"Th
我正在用Phoenix框架创建一个网站
我想使用不同的布局和模板,这取决于用户是使用PC还是智能手机
所以,我想通过检查用户代理来切换布局和模板
检查用户代理和切换布局和模板的最佳方法是什么?
或者,你知道有什么有用的库可以做这件事吗?你可以在一个插件中轻松完成这件事。传递到您的插件的conn结构有一个:req\u headers键,该键将包含“用户代理”等头。您可以直接使用它,也可以使用类似解析库的方法对布局选择进行条件化。然后,您可以使用Phoenix.Controller.put\u la
我已将此代码添加到web/static/js/app.js
export var App = {
run: function(){
console.log("Hello!")
}
}
然后将其添加到web/templates/layout/app.html.eex中
<script>require("web/static/js/app").App.run()</script>
require(“web/static/js/app”).app.run()
标签: Elixir
phoenix-frameworkecto
我正在尝试为我的项目设置种子,但是每当我尝试运行seeds.exs时,我总是会遇到下面的错误。我的一些属性使用ARC依赖项进行文件上载,这就是导致我的错误的原因。我不明白我为什么不匹配Arc.exto.Type.dump的任何函数子句
Repo.insert! Show.changeset(%Show{
title: "NP News",
position: 1,
showimageurl: %Plug.Upload{filename: "file.jpg", path: "http
我正在尝试使用调试phoenix应用程序中的elixir代码
IEx.pry
但是在cmder控制台中运行这一行之后
iex.bat --werl -S mix phoenix.server
erlang控制台打开和关闭。我没有足够的时间看有没有写出来。有没有办法让erlang控制台保持打开状态或以其他方式调试elixir代码 在控制台中运行iex.bat--werl-S mix phoenix.server命令(与在cmder中运行相反) 如果你在普通的cmd控制台上尝试,你会得到什么?
我正在尝试使用以下代码示例使IEx.pry工作:
require IEx;
defmodule Example do
def double_sum(x, y) do
IEx.pry
hard_work(x, y)
end
end
Example.double_sum(1, 2)
当我运行它时,我得到以下错误:
Cannot pry #PID<0.106.0> at lib/example.ex:5. Is an IEx shell running? I
标签: Elixir
phoenix-frameworkecto
假设有一个模式:
schema "players" do
:key, :string
:reset_key_token, :string
end
当用户想要重置其密钥时,在:reset_key_token字段中设置哈希。这个想法是:reset_key_令牌应该放回nil,比如说,在设置令牌一周后。我的问题是:
是否有一种标准的方法使一个EXTO模式的值过期
我已经找了一段时间了,但还没有找到关于这个主题的任何东西。然而,我发现并想到了同样的想法:
1.-在架构中添加一个:reset\u
标签: Elixir
phoenix-frameworkelixir-mixedeliverhex-pm
我正在用edeliver为我的Elixir/Phoenix应用程序设置Ubuntu 16.04服务器,当时edeliver失败,出现错误消息**Mix无法找到任务版本,退出代码为1。如果我转到我的构建服务器,git拉我的应用程序并运行MIX_ENV=prod MIX release,或者在获得依赖项后只运行MIX release,我会得到相同的错误
但是,相同的应用程序在本地工作时没有任何问题
在服务器和本地计算机上,我的erlang版本是erts-9.0,elixir版本是1.5.5。十六进制
我是长生不老药的初学者,我正试图提出一个问题:
def posts_liked(%{id: id}, _info) do
query = from u in Like, where: u.user_id == ^id
{:ok, Repo.all(query)}
end
但是,假设变量u不存在。但是,我们有相同的代码和其他手册。如何修复它
我的Like方案是:
schema "likes" do
belongs_to :post, Myapp.Post, foreign_key:
标签: Elixir
phoenix-frameworkguardian
我做了一个项目,可以在这里找到:
当我尝试发布到:
http://0.0.0.0:4000/api/login
与正文一起:
{ "user": { "username": "kenneth", "password": "kenneth" } }
这是数据库中的用户。
我得到的答复是:
{
"data": {
"token": "eyJhbGciOiJIUzUxM[...]gbPVHTsSvrCA"
}
}
然后,当我将该令牌放入头中时:
À授权::令牌
电话号码http://0.
在我的应用程序中,我有一个团队的想法。现在,如果我转到团队的显示页面,当前团队的ID应该在参数中。但任何用户都可以访问任何团队,因为如果我将url更改为另一个现有团队,它将把我带到那里。我想将url授权给当前用户。我如何在凤凰城做到这一点
我目前正在使用一致性进行身份验证
注意:我意识到我没有展示任何代码示例,如果有,我会的。说实话,我只是想被指向正确的方向。我完全不知道如何做到这一点
团队属于用户::用户拥有多个团队关系是拥有多个:用户和属于团队
然后你可以这样检查
def user_is_
我想更改混合测试的测试模式,但我很难找到执行此配置的正确方法。我在config/test.exs中尝试了许多不同的配置,但始终没有找到答案。最终我发现更改mix.exs(我认为这是最高级别的配置文件)是有效的:
为什么您希望更改config:server中的任何内容都会产生副作用?是一个简单的宏,将值存储在配置存储器中以备将来使用。它不执行任何代码,也没有任何副作用
更重要的是,您试图放置test\u模式键的部分是针对Server.Repo,后者被读取,后者不知道如何处理test\u模式键,并有
问题在于,当您在Supervisor中尝试以下操作时:
children = [
{
DynamicSupervisor,
name: SomeName,
strategy: :one_for_one
},
{
DynamicSupervisor,
name: AnotherName,
strategy: :one_for_one
}
]
您最终会收到以下信息:
**(混合)无法启动应用程序eap:
PoCapabilityPro
标签: Elixir
phoenix-frameworkgigalixir
我在Gigalixir上有一个长生不老药应用程序。以下是我当前的配置:
config :zoinks, ZoinksWeb.Endpoint,
load_from_system_env: true,
server: true,
secret_key_base: "${SECRET_KEY_BASE}",
url: [scheme: "https", host: "sqrnut.gigalixirapp.com", port: 443],
cache_static_manife
可能是一个愚蠢的问题,可能已经被问过了,但我想知道,如何将修改过的fork作为新包添加到hex中。不想知道如何用十六进制寄存器注册和十六进制发布。
我只是想知道我需要做哪些改变
我向他提供了回购协议
我将链接从字符串更改为json,以便于在web客户端中进行解析,并添加了一个配置,这是github上的一个问题中提到的。现在我想将我的repo用作一个十六进制包,但不知道我需要在mix.ex文件和其他文件中更改什么。我想保留麻省理工学院的东西,但需要重命名一些东西以将其用作十六进制包。以前从未创建过
具有:
我这样做是为了确保启动所有依赖项:
defp deps do
[
{:poison, "~> 3.0"},
{:credo, "~> 0.10.0", only: [:dev, :test], runtime: false}
]
end
但是,它与:dev依赖项(如信条)的冲突
我可以仅检索依赖项吗?由于只过滤掉:[:dev,:test],运行时:false有点棘手首先,关于出现错误的原因。在您的示例中,此调用
MixProj
例如有这个清单
list = [1, 2, 3, 4, 4]
我可以像这样过滤掉等于4的元素
Enum.reject(list, fn item -> item == 4 end)
有没有办法获得被拒绝的物品?像[4,4]
比如:
rejected = Enum.get_rejected(list, fn item -> item == 4 end)
more_rejected = Enum.get_rejected(list, fn item -> item == 3 e
如果您需要访问数据库以完成混合任务,则需要手动启动您的ecto repo。当我们使用Exto 2时,我们已经启动了功能
因此,使用ecto 2的自定义CLI任务看起来像
defmodule App.Task do
use Mix.Task
import Mix.Ecto
def run(args) do
repos = parse_repo(args)
Enum.each repos, fn repo ->
ensure_repo(repo, a
字符串插值在此查询中失败:
Ecto.Adapters.SQL.query!(
MyApp.Repo,
"CREATE INDEX zip_code_trgm_idx ON $1 USING GIN (zip_code gin_trgm_ops);",
["locations_zipcodes"]
)
[debug] QUERY ERROR db=0.0ms queue=19.5ms
CREATE INDEX zip_code_trgm_idx ON $1 USING GIN (z
在Elixir mix应用程序中运行测试时,我有几个实例,其中包括对Logger.debug()的一些调用以监视行为。我发现,当我从命令行调用mix test时,记录器输出的颜色为浅蓝色,如果我执行类似于向.debug()调用添加自定义颜色的操作,则输出的颜色会相应地改变-
test "some behavior" do
Logger.debug("foo", ansi_color: :yellow)
assert true
end
按预期以黄色写入日志行
但是,我注意到,如果我在ie
我想从elixir config.exs文件创建Elasticsearch 7.x索引:
config :app_core, App.Tools.ElasticsearchCluster,
url: System.get_env("ELASTIC_HOST"),
# username: "username",
# password: "password",
api: Elasticsearch.API.HTTP,
json_library: Poison,
indexes
我正在做:
HTTPoison.get! "https://www.nature.com/articles/d41586-020-00741-x"
它在浏览器中运行良好,但当我尝试使用HTTPoison获取页面时,会给我一个303
我做错了什么?这是一个重定向代码。为了遵循重定向,您需要将选项传递给HTTPoison以遵循它:
HTTPoison.get!("https://www.nature.com/articles/d41586-020-00741-x“,[],跟随\u重定向:true)
下面是关于:virtual选项的说明:
:virtual-如果为true,则该字段不会保留到数据库中
该函数表示它描述了一个专门保存在内存中的模式。(也就是说,它永远不会持久化到数据库中。)这是否意味着对于嵌入式模式,:virtual选项无效?上的文档实际上说明:
嵌入的模式要么嵌入到另一个模式中,要么专门保存在内存中。因此,嵌入式架构不需要源名称,也不包含元数据字段
当嵌入到另一个模式中时,它就像一个直接注入目标模式的片段,而:virtual字段则像往常一样工作
当保存在内存中时,:虚拟字段仍
我创建了一个没有客户端代码的服务器。我只需要在终端telnet 127.0.0.1 4001和另一个终端telnet 127.0.0.2 4001上键入消息,因此当我在第一个终端上键入消息时,它会出现在同一个终端上,我知道这是一个echo服务器,如果可能,我只想修改此代码,以便其他终端上的其他客户端可以接收消息。
这是一个echo服务器代码:
defmodule Multichat.Server do
需要记录器
def接受(端口)do
{:好的,socket}=:gen_tcp.listen(
假设我们有以下几点:
list =
[
%{"id" => 1, "name" => "Alice"},
%{"id" => 2, "name" => "Bob"},
%{"id" => 3, "name" => "Charlie"}
]
为了向每个元素添加带有值pe
我有两个地图列表,我想形成一个列表,包含两个列表中基于一些公共值的值
list1 = [
%{email: "email1", name: "name1"},
%{email: "email2", name: "name2"}
]
list2 = [
%{"email" => "email3", "name" => "ne
上一页 1 2 ...
48 49 50 51 52 53 54 ...
下一页 最后一页 共 125 页