我在学习长生不老药的过程中遇到了一些对我来说没有意义的事情
我正在尝试删除标点符号
"Freude schöner Götterfunken" |> String.replace(~r/[^\s\w]/, "") #=> <<70, 114, 101, 117, 100, 101, 32, 115, 99, 104, 195, 110, 101, 114, 32, 71, 195, 116, 116, 101, 114, 102, 117, 110, 107, 101,
我有以下型号:
# Foo model
schema "foo" do
field :name, :string
has_many: :bars, App.Bar
end
# App model
schema "bar" do
field :name, :string
belongs_to: foo, App.Foo
end
此表格:
# form.html (Foo)
<%= form_for @changeset, @action, fn f -> %>
我试着遵循凤凰框架的指导。我使用的是Windows 8.1,以下是软件版本:
长生不老药-1.0.4
节点-v0.10.13
npm-1.3.2
当我运行命令mix phoenix.new hello\u phoenix时,在我说Y到获取并安装依赖项之后?[Yn]y在应用程序创建过程中,我注意到控制台中出现以下错误(也可以在npm debug.log中找到)
如果我访问,页面看起来不像,而是如下所示:
我还尝试运行中提到的命令
然而,我得到了另一个错误:
...
npm http 200
如何将Elixir中的%{foo=“bar”}转换为%{foo:“bar”},您可以使用和的组合
但是,您应该小心转换为基于用户输入的原子,因为它们不会被垃圾收集,这可能导致内存泄漏。看
如果原子已经存在,您可以使用来防止这种情况。使用:
iex(1)>string\u key\u map=%{“foo”=>“bar”,“hello”=>“world”}
%{“foo”=>“bar”,“hello”=>“world”}
iex(2)>对于{key,val}要基于@emaillenin的答案,您可
我有两个模型,User和Profile以及一个新用户表单,该表单为Profile的用户名字段提供了inputs\u
以下是这些问题的代码:
用户->
defmodule MyApp.User do
use MyApp.Web, :model
schema "users" do
field :email, :string
field :password, :string, virtual: true
field :crypted_password, :string
我正在开发ubuntu 14.04 LTS。我安装了elixir,按照在控制台中运行的以下命令,一切正常
Add Erlang Solutions repo: wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb
Run: sudo apt-get update
Run: sudo apt-get in
我需要通过一个函数传递字符串列表以返回字符串。目前,我有:
@tag_delimiters [" ", "(", ".", "#"]
def tag(string) do
tag(string, " ")
|> tag("(")
|> tag(".")
|> tag("#")
end
defp tag(string, delimiter)
[head | _] = String.split(string, delimiter)
head
我是按照新手的指示,现在看到这个错误,当我试图运行凤凰
Hex was built against against Elixir 1.0.5 and you are running 1.1.0-dev, please run `mix local.hex` to update to a matching version
我所做的就是从Ubuntu上安装elixir。我觉得在这个阶段我应该在1.0.5,但不知道如何降低我的灵丹妙药的等级
更新:我了解到这两个版本都不是最新版本-我正在寻找1.2.
我在做一个签到控制器
我将会话设置为:
conn = put_session(conn, :user_id, user.id)
IEx.pry
redirect conn, to: account_path(conn, :show)
当我打印我得到的接头时,它看起来设置在撬线上
...
:plug_session => %{"user_id" => 6}, :plug_session_fetch => :done,
...
然后在我们重定向到的下一个控制器中,我们得到
ge
有时,我必须在Elixir测试中比较多行字符串,当所有行都以内联方式打印时(如line1\nline2\nline3)很难读取
我想编写一个自定义测试断言compare,在两列中显示LHS和RHS
作为起点,我创建了一个名为compare的宏,它与assert相同
defmodule CompareAssertion do
defmacro __using__(_) do
quote do
require CustomCompare
import Custom
我正在尝试使用:
<%= if @button_effect == "auxNo" || "mainNo" do %>
但只计算第一个值(“auxNo”),而不计算第二个值(“mainNo”)。
我尝试了不同的()组合,但到目前为止,它并没有像我想要的那样工作。
另一种选择是对2个以上的值使用“case”,但同样不能这样做。
我可以举两个例子(if和case)吗?您需要检查or条件下的@按钮效果:
<%= if @button_effect == "auxNo" || @
我正在玩elixir和phoenix,并尝试实现提醒功能,即未来日期时间的todo,它应该在该日期时间提醒您
我想到了以下简单的解决方案:
1) 使用简单的一对一策略,为每个提醒创建一个进程,该进程将使用超时并在完成后终止
2) 在单个进程中聚合所有提醒,将提醒存储在状态,每隔几秒钟检查一次datetime,并在发出警报后删除
是否有人能详细说明每种解决方案,并给出一个更合理的解决方案,谢谢。我建议考虑规模。
假设您有一台处理x提醒的服务器:
在第一个解决方案中,我们有x个进程,每个进程都有自己
标签: Elixir
phoenix-frameworkecto
我有一个应用程序,其中资源通过普通ID保存在数据库中。但是,为了防止数据库枚举,在路径和链接中向用户显示的ID类似于UUID。(例如:)
要在Phoenix+Exto中创建基于id的正常链接,只需执行以下操作:
链接到:付款路径(@conn,:show,payment)
但是,这会隐式使用传递到此处的%Payment{}结构的.id字段
使用UUID时,必须执行以下操作
链接到:payment\u路径(@conn,:show,payment.uuid)
或者,在我的应用程序中,UUID在数据库中
基本上,我希望能够知道何时向用户提供服务器错误。我看到在Phoenix的早期版本中,可以在路由器的配置中定义一个error\u controller,但在当前版本中,此功能已被删除
我也知道ErrorView能够呈现您自己的错误,但我想做一些不应该在视图中完成的工作(例如发送通知)
是否可以在当前版本的Phoenix中连接您自己的控制器,或者我是否可以捕获并使用其他钩子或事件?@TimPlegrim错误是Phoenix内部的特例。除非有更好的意见,否则我会使用error\u view.ex来实现
如何在iex中查看路由的输出
我知道我可以用mix Phoenix.routes来实现这一点,但我希望以交互方式实现这一点
下面是我想做的一个例子:
iex -S Phoenix.server
mymodel_path
这给了我一个错误:
** (CompileError) iex:2: undefined function mymodel_path/0
所有url/路径帮助程序都被编译成模块YourApp.Router.helpers中的函数。您可以导入它并使用与模板中相同的参数进行调用
似乎查询表达式中的更新只接受关键字列表()。那么,如何定义一个函数来动态选择要更新的列呢
大概是这样的:
def increment_field(column_name, count) when is_atom(field) do
from t in Example.Entity, where: field(t, ^column_name) >= 0, update: [inc: [{^column_name, 1}]]
end
我尝试了此操作,但在更新[{^column\u
我目前正在学习/阅读元编程长生不老药
我成功地生成了一个函数,该函数使用宏输入其名称:
defmodule MyMacros do
defmacro fun_gen(name) do
atom_name = elem(name, 0)
str_name = atom_name |> to_string
quote do
def unquote(name) do
IO.puts unquote(str_name)
end
我正在为我正在开发的Phoenix应用程序使用Plug.Uploadstruct,允许上传图像并将其与新闻文章关联。由于某些原因,当我上传图像并提交表单时,flash通知和重定向/渲染不起作用。该应用程序将恢复为一个空白的新表单,即使以前的表单已成功提交,并且数据保留到数据库中。我可以手动返回索引页面,查看文章是否已创建。当我不上传图像时,在提交表单时,一切都会按预期进行
有关表格编号:
<%= form_for @changeset, @action, [multipart: true]
标签: Elixir
phoenix-frameworkecto
我正在尝试复制带有更改的postgres行链接是现有行。我尝试过各种排列,但无法创建变更集-欢迎帮助
我正在使用这个版本的外星生物
:phoenix_ecto, "~> 3.0-rc"`
这个密码呢
IO.inspect(link)
changeset =
link
|> Map.from_struct
# |> Map.delete(:id)
|&
玩弄长生不老药。考虑一下这个场景。我有
iex> a = b = 1 #=> a = 1, b = 1
iex> c = true
iex> a == b #=> true
iex> true = c #=> true
因此,我假设下面的结果将返回true,但得到非法模式
iex> a == b = c
** (CompileError) ... illegal pattern
使用=运算符时,您使用的是匹配
使用Elixir的ExUnit进行单元测试,每个人似乎都对测试失败消息感到兴奋。但是,如果我测试的不是==,我似乎无法得到有用的错误消息
比如说
assert String.contains(my_string, "expected string")
Expected truthy, got false
我更喜欢编写测试,这样我的失败信息更丰富,让我能够快速重复他们给出的反馈。有没有办法让测试失败的信息更丰富?e、 g
Expected "an unexpected string"
我有一个简单的操作,从数据库检索一个文档,修改一个值,然后尝试将其作为新文档重新插入。换句话说,我想复制数据库中已经存在的文档。毫不奇怪,此操作未通过唯一主键约束:
Ecto.ConstraintError:
constraint error when attempting to insert struct:
* unique: docs_pkey
尝试使用put\u change(doc,:id,null)从变更集中清除id,会产生以下错误:
ERROR (not_null_viola
标签: Elixir
phoenix-frameworkecto
我有一个三级层次模型关系,即,model1属于model2,model2属于model3
我正在尝试为model1预加载model2和model3:
my_models = Repo.all(Model1)
|> Enum.map(fn (x) ->
Repo.preload(x, :model2)
end)
|> Enum.map(fn(x) -> # error "no function clause matching in
最近,我写了一篇关于以下函数的文章:
@doc """
Creates a new deck, shuffles its cards and retrieves a hand of
cards from it.
The `hand_size` argument indicates the size of the hand.
## Examples
iex> {hand, _deck_remainder} = Cards.create_hand 2
标签: Elixir
phoenix-frameworkelixir-mix
我正在为菲尼克斯开发一个图书馆。我使用mix.exs创建了一个Phoenix项目:
defp deps do
[{:phoenix,“~>1.2.1”},
...
{:myu包,路径:“../myu包”}]
结束
我希望Phoenix在更改依赖项时自动重新编译该依赖项,而无需重新启动Phoenix服务器。可能吗?我已经尝试安装到Phoenix和my_软件包,并在live_reloadPhoenix配置中添加~r{../my_软件包/lib/*(ex)$},但没有任何效果。正如Justin Wo
标签: Elixir
phoenix-frameworkecto
我通过《编程凤凰》一书学习凤凰。一切都很好,直到我在尝试通过运行mixecto.gen.migration create\u user来创建一个带有exto的迁移文件时遇到了麻烦。运行上述命令后,我得到
* creating priv/repo/migrations
* creating priv/repo/migrations/20170413160546_create_user.exs
在我得到的20170413160546\u create\u user.exs文件中
defmodule
我有一个测试,模拟了应用程序范围内的回购。大多数时候,测试都是绿色的。当我使用相同的种子在循环中运行测试时,可能有10%的运行成功,但有一条GenServer终止消息:
15:39:34.632 [error] GenServer ShortTermMessageStore terminating
** (CaseClauseError) no case clause matching: {:error, %Postgrex.Error{connection_id: 11136, message
标签: Elixir
phoenix-frameworkectoelixir-mix
目前,我正在寻找在运行mix任务时添加SQL语句日志的方法。例如,mix-exto.rollback和mix-exto.migrate等命令输出信息:
...
13:45:53.016 [info] == Running Repo.Migrations.AddAmountToUserResources.change/0 backward
13:45:53.016 [info] alter table user_resources
...
但是,我不想看到神秘的altertableuser\
标签: Elixir
phoenix-frameworkphoenix-channels
我目前正在使用Phoenix框架创建一个应用程序,该应用程序使用大量移动设备和后端服务(显然基于Phoenix)之间的双向通信通道
我打算为每个设备创建一个单独的主题,因为设备是由ID定义的,例如设备:2149,设备:1234等
我有以下插座:
defmodule Webservice.DeviceSocket do
use Phoenix.Socket
channel "device:*", Webservice.DeviceChannel
transport :websocket
假设我在phoenix应用程序中有这个模型
defmodule Rumbl.Video do
use Rumbl.Web, :model
schema "videos" do
field :url, :string
field :title, :string
field :description, :string
belongs_to :user, Rumbl.User
belongs_to :category, Rumbl.Category
标签: Elixir
metaprogrammingex-doc
我有一个简单的宏,它将函数注入调用模块
defmodule MyModule do
defmacro __using__(_opts) do
quote do
def run do
IO.puts "Hello world"
end
end
end
end
这可以按预期工作,但由于run函数嵌套在quote块中,因此我无法使用ExDoc添加文档。我还想在外部定义run函数,因为我觉得这样可以使代码看起来更好。大概是这样的:
def
我有一个特殊的用例需要格式化Phoenix HTML链接。该链接可以包含特殊字符,如:和*。例如—
CSVLOAD:*out:domain.org:call:4471
使用传统的Phoenix链接生成/CSVLOAD%3A%2Aout%3Adomain.org%3Acall%3A4471作为URL
请告诉我如何更正此问题,使其具有/CSVLOAD:*out:domain.org:call:4471
我的路由器
resources "/instances", InstanceController,
假设我有这张地图
old = %{stuff: %{old: 123}}
如何更新密钥内容:
我还有另外一张地图:
new = %{stuff: %{new: 321}}
对于Map.put,它将覆盖stuff键,我也尝试了Map.merge,但它没有合并,它将用第二个Map覆盖该键
iex(22)> Map.merge(test, new)
%{stuff: %{new: 321}}
我想要一些类似于:
%{stuff: %{old: 123, new: 321}}
我可以想到两
无法在windows中工作。我正试图在iex中运行此操作。这就是我得到的错误:
(ErlangError)Erlang错误::eOn
(elixir)lib/system.ex:605:system.cmd(“echo”、[“hello”]、[])
这将按预期工作:
System.cmd(“cmd.exe”、[“/c”、“echo”、“hello”])
请注意,您需要调用cmd.exe,因为echo是一个内部命令。您还需要为命令指定/c参数,因为否则echo将永远不会终止并返回
另外,由于dir
在这种情况下,我使用一些自定义sql生成一个中间表。在我的应用程序中,我有一个指向中间表的模型。我有一个不使用中间表的要求,所以我试图弄清楚如何编写一个Ecto模型,以便它在为该模型加载数据时使用自定义sql
重要提示:此模型仅用于读取该表或sql select结果,因此我不必支持insert/update/delete。这将大大简化我的工作
以下是一个假模型,用于我想做的事情:
defmodule EventBridge.C3poEvent do
use Ecto.Schema
imp
我正在为我的数据库使用Postgrex库,我有以下问题:数据库中的一列的类型为uuid。我正在elixir中使用UUID模块,但每当我尝试将某些内容持久化到数据库时,就会出现以下错误:Postgrex需要16字节的二进制文件,而得到“3c5fda26-ea3b-4c77-8f19-06e106a61eda”。我试着把它存储为
一个普通的字符串,但正如您所看到的,这是不可能的。在将uuid持久化到数据库之前,我应该如何转换它?uuid是一个字符串,但不是“人类可读的字符串”。您所看到的3c5fda
我有一张桥牌桌:
schema "rooms_units" do
field(:date_from, :utc_datetime)
field(:date_to, :utc_datetime)
belongs_to(:room, App.Room, primary_key: true)
belongs_to(:unit, App..Unit)
end
我有来自我的端点的映射列表,我为每个映射创建了一个变更集列表
[
#Ecto.Changeset<
action: n
我有一个产品模式,它有一个UPIunique产品标识符,例如A985748BNG6784C。这是自动生成的唯一产品标识符
我有一个函数upi_generate,它调用另一个外部函数gen_nano_id来生成这个随机唯一id
如果碰巧gen_nano_id生成的id已经生成,则函数upi_generate递归调用自己,直到gen_nano_id生成唯一id为止。从而生成唯一的upi
gen_nano_id有时会返回重复的id,为此,我使用递归调用编写了以下代码
def gen_nano_id
凤凰n00b在这里
如果模型存在,我需要预加载关联。我写道:
model = Repo.get(Model, id)
|> Repo.preload([:asso1, :asso2, :asso3])
但如果找不到模型,它将失败,因为Repo.preload无法忍受将nil作为第一个参数:
协议EXTO.Queryable未为nil实现,给定模块不存在。该协议的实现对象为:exto.Query、Atom、exto.SubQuery、Tuple、BitString
凤凰会是如何做到这一点的
在Phoenix应用程序中,我需要在服务器端特定文件夹中创建文件时触发任务
我研究了两种解决方案:
这些是适合这项工作的工具吗?我对这堆东西真的很陌生
谢谢phoenix使用inotify在代码更改时自动重新编译,我认为这是一个很好的起点OK,所以您建议直接使用inotify。不受支持的包装器是否存在?我很好,我不想重新发明轮子。看起来他们正在使用文件系统重新加载,所以看起来你的第一个选择是正确的。
社区
我对长生不老药很陌生,面临一个问题。
我正在凤凰城制作一个API并坚持一种模式:
{:好的,一些数据}关于成功
{:error,一些数据}错误
我的控制器请求域:
with {:ok, some_data} <- Organisation.create(...) do
end
与{:好的,一些_数据}
另外,使用大小写过滤返回不是一个选项,因为两个返回都是{:ok,[]}
不确定您的意思,但这确实适用于具有列表模式的案例:
case SomeService.get(...)
我正在尝试从elixir访问节点文件,但我不知道如何访问它?
我在谷歌上搜索了很多,但找不到实现这一目标的任何线索。请帮助我。我们可以使用系统命令从elixir.ex文件调用节点文件,正如您在下面提到的代码中看到的,它接受两个参数
第一个参数是您需要访问的文件类型,如:“node”
其次,它接受您将在节点文件中访问的其他参数
答:第一个参数应该始终是需要调用的文件的路径
b:其余的根据您的要求可以选择
调用“system.cmd”后,如果在调用文件中出现任何错误,如:“node”,则您将收到一个
我遇到了一个关于mix-release的问题,我不知道如何调试
以下是我正在做的:
验证我的应用程序在不使用mix-release生成的二进制文件时是否正常工作,方法如下:
访问localhost:4000,它就可以工作了
停止此正在运行的服务器
通过以下方式生成发布:
通过以下方式执行二进制文件:
此时,二进制文件似乎正在运行,但localhost:4000拒绝连接
我可以通过以下方式远程访问正在运行的elixir应用程序:
_build/prod/rel/test/bin/
我试图实现一个函数,该函数以列表和函数作为参数,然后将该函数应用于列表的每个元素,然后对结果求和,但每次我在iex中运行程序时,我都会得到错误-**(BadFunctionError)预期的函数,得到:1。我似乎不明白问题出在哪里。我不熟悉长生不老药和函数式编程
defmodule MyList do
def mapsum([], _func) do
0
end
def mapsum([head | tail], func) do
func.(head) + map
标签: Elixir
instrumentationtelemetryabsinthejason
我在找我的苦艾酒/凤凰服务器。我想了解使用Jason将数据编码为json需要多长时间
我的endpoint.ex文件如下所示:
defmodule AssessmentApi.Web.Endpoint do
use Phoenix.Endpoint, otp_app: :assessment_api
socket "/socket", AssessmentApi.Web.UserSocket
# Serve at "/" the stati
我正忙着学习长生不老药,了解原子是什么。在屏幕上,它们是这样介绍的:
:foo
然而,当我们遇到这样的原子时
list = [{:a, 1}, {:b, 2}] # list of tuples
list == [a: 1, b: 2] # evaluates as true
冒号的位置已被替换为显示在原子名称之后
似乎当一个原子是一个键时,冒号的位置就改变了。这确实使代码更容易阅读,因为它很有表现力,但我找不到任何直接的参考来说明为什么会出现这种情况(这不是我正在查看的唯
有没有一种方法可以在不经过控制器的情况下从路由器返回响应?我尝试过几种不同的方法,但没有成功
scope "/health_check", ZB do
get "/" do
text conn, "ok"
end
end
get "/health_check" do
text conn, "ok"
end
通过创建一个名为health_check_router.ex的新文件,我完成了两项工作:
defmodule ZB.HealthCheckRouter do
use
我试图在Elixir中启动子进程,但收到以下错误:
{:error, {:invalid_mfa, {Worker, :start_link, "MY_TEAM_ID"}}}
我的主管代码如下所示:
DynamicSupervisor.start_child(Worker.Supervisor, {Worker, "MY_TEAM_ID"})
从错误消息中,子规范应该以列表的形式传递其参数。相反,它应该是{:error,{:invalid_mfa,{Worker,:start_link,[“
我有一个将在视图中使用的查询结果,但是当我在视图中调用变量时,我得到了未定义的函数数据/0(因为数据不是函数)
我已经用不同的方式、地图等传递了数据
controller.ex:
def new(conn, _params) do
data =
Enum.map(
from(AccountTypeSchema)
|> Repo.all(),
fn elem ->
elem |&
我使用了import User,它是struct模块,但在运行测试代码时仍然有错误
已尝试使用使用用户和导入用户
defmodule User do
@enforce_keys [:username, :password]
defstruct [:username, :password]
end
在另一个模块文件中
import User
newUser = %User{username: username, password: hashpass}
== Compilation
上一页 1 2 ...
49 50 51 52 53 54 55 ...
下一页 最后一页 共 125 页