我正在学习长生不老药,并试图编写一个简单的长生不老药hello world示例,但我在“混合运行”时一直遇到这个错误
我做错了什么?这是我的代码减去mix.exs和其他非关键文件
defmodule Collector do
use Application
def start(_type, _args) do
Collector.Supervisor.start_link
end
end
我只想在控制台中运行“mix run”时转储“Hello World”,我不知道
长生不老药:
在尝试编译Exto的依赖项时,我在Mix和poolboy中遇到了以下错误:
>mix compile
**(混合)应用程序池男孩指定了非语义版本“cat版本”。Mix只能将要求~>1.2.1与语义版本匹配,若要与任何版本匹配,请使用正则表达式作为要求
我使用的是Windows 8.1
这是我的混音部:
注意:我必须为postgrex使用“~>0.6.0”,否则它会抱怨依赖解析。(在EXTO文档中,它只是说使用“>=0.0.0”)
从编译错误消息来看,似乎mix没有正确处理某
我正在尝试让multiple select与phoenix_html表单助手一起工作
<%= select f, :challenge_ids, ["foo": "1","bar": "2","baz": "3"], class: "form-control", multiple: "" %>
我还尝试将:challeng_id改为:challenge_id[]尝试为多选标记获取类似于rails输出的内容,但这没有任何区别Aaron的被合并到phoenix_html中。这里有一个
如何将此SQL转换为EXTO查询
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 1 DAY)
不使用片段
这对我来说很有效,但我想知道是否有一种异位惯用的方法来进行这种查询
iex(22)> query = from n in Table,
...(22)> where: fragment("updatedAt > DATE_SUB(now(), INTE
苹果对视频聊天的部分要求是,双方在进入视频聊天之前必须明确按下“接受”
我有一个“接受”按钮,按下时调用此功能:
我的看法是:
channel.on("match_accepted", payload => {
if (payload.matched_client_email == matchedClientEmail) {
this.setState({ clientQueued: true });
}
});
acceptMatch() {
标签: Elixir
phoenix-frameworkecto
我是凤凰/长生不老药的新手,需要帮助
我尝试将一个exto.query的结果放在变量中,如下所示
owner =
(from ex in "executors",
where: ex.email == ^account_name,
where: ex.pass_hash == ^pwd,
select: ex.id )
|> Repo.all()
我需要'owner'是一个像ex.id一样的整数,但它像一个字符-'\a',M',等等
如何正确地从整数类型的查询中获取结果,或者如何将其从代
我正在试验EXTO,在验证changeset()函数中的数据时遇到问题
模式如下所示:
defmodule Barakuda.TestData do
use Ecto.Schema
schema "test_data" do
field :username, :string
field :age, :integer
end
def changeset(data, params \\ %{}) do
data
|> Ecto.Changes
是否有类似于Elixir cond语句的故障排除功能,允许我匹配多种情况?我想这样做是为了避免重复同一行代码。我还希望避免在if块中使用长链逻辑或| |析取语句。现在,我重复这样的代码:
cond do
top == nil -> eval(rest, [operator | output_queue], opstack)
top == "(" -> eval(rest, [operator | output_queue], opstack)
compare_to(ope
我对长生不老药/凤凰非常陌生。我所要做的就是用查询结果呈现一个模板,并在视图中显示查询的所有记录。为此,我在模板中添加了以下代码:
<% Enum.each(@items, fn(item) -> %>
标签: Elixir
delete-rowectophoenixchangeset
我们是否可以根据用户在Repo.delete中的电子邮件地址限制其从数据库中删除!(变更集)elixir和phoenix web开发中的条件
这就是我现在使用的代码。我想在删除过程中限制从数据库中删除两个用户:-
def delete(连接、参数、当前管理员)do
changeset=AdminUser.common_变更集(conn.assigns.admin_user,%{},whodoneit(当前_admin))
删除!(变更集)
msg=gettext(“%{name}已成功删除”,名
不知道如何创建默认值来自同一模块内函数的结构。以下是我的例子:
defmodule Poker.Deck do
alias Poker.Deck.Card
@values [:a, :"2", :"3", :"4", :"5", :"6", :"7", :"8", :"9", :"10", :j, :q, :k]
@suits [:spades, :clubs, :diamonds, :hearts]
def new do
(for x <- @values, y
在我的Phoenix应用程序中,我的用户模型如下:
defmodule MyApp.User do
use MyApp.Web, :model
schema "users" do
field :username, :string, unique: true
field :email, :string, unique: true
field :crypted_password, :string
field :password, :string, virtu
我在玩长生不老药,我偶然发现了一些让我困惑的东西
我定义了这个匿名函数,它匹配以数字开头的字符串:
digits = &(&1 =~ ~r/^\d/)
如果我尝试在流中使用此函数。拒绝/2,然后打印流的内容,我会得到一个错误:
File.stream!("foobar") |> Stream.reject digits |> Enum.to_list
** (FunctionClauseError) no function clause matching in E
我刚刚写了封凤凰城的电子邮件。当我通过应用程序发送电子邮件时,外部css不会被呈现,而且mailer.html布局也没有被拾取
我下面做错什么了吗
def invitation_email(conn, to_email) do
html = View.render_to_string(MailerView, "invitation.html", layout: {LayoutView, "mailer.html"}, conn: conn)
send_email to: to
根据iex中的h require,require“需要编译和加载给定的模块”,“如果您想使用模块中的宏”,则需要
然而,似乎即使模块被编译和加载,我仍然需要调用require来调用它的宏。例如:
# "require" the file in the sense of "go compile it right now"
# Without doing this (or something equivilent, like `elixir -r macro_module.ex`),
# a cal
当我在iex上写下这些的时候
iex> 'hełło'
它向我展示了代码点
[104, 101, 322, 322, 111]
我知道,因为单引号字符串表示字符列表。但当我在iex中输入带有上述数字的列表时,它会显示一个带有数字的列表,而不是hełło
iex(13)> [104, 101, 322, 322, 111]
[104, 101, 322, 322, 111]
为什么不显示字符?
我打字的时候
iex(3)> a = [67,55,44]
进入ie
我不熟悉凤凰和长生不老药。我想在聊天应用程序中添加一个后台作业,该作业应每分钟运行一次,从另一台服务器获取数据并将其广播到聊天室。
在凤凰城我怎么能做这样的事情呢?Jose Valim提供了一种实现后台工作的简单方法
对于广播,您可以使用Gazler在评论中指出的MyApp.Endpoint.broadcast()。定期运行后台作业的简单方法-广播-非常感谢。还有一个问题,我必须在代码中的何处开始一项工作,以及如何将套接字传递给它?您可以使用MyApp.Endpoint.broadcast(记录
我有一个map事件,如果其中一个键为空,我想为它指定默认值。我该怎么做
在ruby中,我们有event[:done]| |=value用于散列
Map.put_new(event, :key, "value")
我的数据库设计有两个实体:雇员和经理。
经理是一名雇员
我是这样定义employees and managers表的:
create table(:employees) do
end
create table(:managers, primary_key: false) do
add :id, references(:employees, on_delete: :delete_all), primary_key: true
end
我不确定MyApp.Manager模块应该如
当我在我的开发环境中使用
iex -S mix phoenix.server
我可以使用:dbg.tracer查看我的代码。但是当我构建一个exrm版本并使用
bin/myapp console
当我尝试使用:dbg.tracer时,它告诉我“module:dbg不可用”。有没有办法使:dbg在exrm版本中可用?这将非常方便。看起来您的服务器没有安装erlang运行时工具,但是您的开发环境安装了。要在Debian中解决这个问题,可以运行sudoapt-get-install-erlang运
我想渲染没有布局的错误视图:
defmodule MyApp.ErrorView do
use MyApp.Web, :view
def render("404.html", assigns) do # renders my_404.html.eex template
render(__MODULE__, "my_404.html")
end
和行动:
def my_action(conn) do
if something_wrong do
conn
我试图将数据植入数据库,但它不起作用,因为我找不到一种方法来并行地迭代列表,就像下面的伪代码一样
for elem1, elem2, elem3 in list1, list2, list3 do
Repo.insert{elem1, elem2, elem3}
end
这是我的数据
@list_of_names ~w(Daniel Admin Goran Tomislav User1)
@list_of_usernames ~w(daniel admin goran mare
在我的项目中,我必须通过将十进制价格乘以整数数量来计算产品的总价格。当我这么做的时候,我在算术表达式中得到了一个异常错误的参数。如何解决这个问题?如果必须对结果进行四舍五入,我不想丢失数据。Elixir不允许运算符重载,因此decimal包无法使*运算符在decimal上工作。该软件包确实提供了一个函数Decimal.mult/2来乘以十进制值,该函数接受2个十进制值,您可以使用它们。您需要首先使用Decimal.new/1将整数转换为十进制,然后使用Decimal.mult/2:
Elixir
我正在使用Phoenix呈现html。它进行得很顺利,但返回的HTML在prod环境中没有被压缩。我知道有gzip,但这是另一回事:我说的是删除注释、换行符等,而不是归档
是否有任何方法可以压缩编译步骤中可能从模板返回的html?要动态缩小文件,可以使用自定义插件:浏览器管道:
路由器
我无法快速谷歌现有的一个,也许你需要自己实现它
另一种可能是使用任何早午餐迷你食品e。G或者希望在生产中生成中间.eex文件。这样,您就可以将模板放在通用的phoenix tree e之外的某个地方。G在/web
我有一个用户模型,它与其他模型有很多关系。
我有一个搜索互联网的功能Search。我想做的是,仅当有很多关系不是空数组时才搜索internet
所以我想知道我是否可以对非空数组进行模式匹配?正如您在下面看到的,额外的搜索会导致嵌套分支,因此我使用with语句,希望找到一个干净的解决方案
query = from a in Model, where: a.id == ^id, preload: [:some_associations]
with %{some_associations: some
标签: Elixir
phoenix-frameworkelixir-mix
我已经设置了我的Phoenix应用程序,以便它连接到两个数据库。我在管理我的迁移和各种EXTOmix任务时遇到了一些问题,特别是创建新迁移和回滚迁移
首先,这里是config/dev.exs
config :phoenix_backend, PhoenixBackend.Repo,
adapter: Ecto.Adapters.Postgres,
username: "postgres",
password: "postgres",
database: "phoe
假设map=%{1=>1,2=>2,3=>3}
我正在尝试为选择选项构建一个字符串,如:
<option value=1> "One" </option>
<option value=2> "Two" </option>
<option value=3> "Three" </option>
如何实现这一点?代码的问题在于,函数采用两个参数,一个作为累加器,另一个作为枚举表中的元素,枚举表本身就是一个两元素元组
您试图
标签: Elixir
list-comprehensionelixir-mixex-unit
我对长生不老药很陌生,试图使用列表理解生成一个新的结构列表,就我的一生而言,我似乎无法做到这一点:
holdings = ServiceX.update_holdings(
fn() -> for n <- 1..3, do: n end,
&(for n <- 1..100, do: %Holding {
client_id: &1,
标签: Elixir
phoenix-frameworkcowboy
我的目标是能够在phoenix控制器中处理分块HTTP请求。我认为解决方法是使用Plug.Conn.read\u body,但是我遇到了一个错误或超时
目前我认为最好的解决方案是定制解析器
defmodule Plug.EventStreamParser do
@behaviour Plug.Parsers
alias Plug.Conn
def parse(conn, "text", "event-stream", _headers, _opts) do
Conn.rea
标签: Elixir
phoenix-frameworkecto
有两个结构,一个是Camera,另一个是changeset changes,我正在寻找一种方法来保存两个结构中的新旧值,例如
%Camera{__meta__: #Ecto.Schema.Metadata<:loaded, "cameras">, access_rights: [],
alert_emails: nil, cloud_recordings: nil,
config: %{"external_host" => "46.126.223.13", "externa
如何设置如下数字的格式:
95263.51
带小数点(逗号):
95.263,51
甚至小数点(更常见):
95263.51?找到了解决方法,
使用包:
iex>Number.different.Number_到_分隔(98765432.98,分隔符:“.”,分隔符:“,”)
"98 765 432,98"
我将这个问题标记为适度关注。
在长生不老药项目中,您可以使用
Path.expand
将文件或目录定义为当前文件的相对路径
例如:Path.expand(“../../../lib/file.ex”)
但是,从项目的根级别查找路径如何?如果要获取项目的根目录,请使用
File.cwd!
资料来源:
(注意:我把这个放在这里只是为了不让它埋在Google auth wall后面的一个死气沉沉的论坛里&受Google数据保存政策的约束)实际上,这不是项目的根目录。这是当前的工作目录(可能会有所不同)@Motine你看过论坛讨
我想在elixir中使用String.to_现有的_atom来避免内存泄漏
这100%适用于REPL:
iex(1)> defmodule MyModule do
...(1)> defstruct my_crazy_atom: nil
...(1)> end
{:module, MyModule,
<<70, 79, 82, ...>>,
%MyModule{my_crazy_atom: nil}}
与之相比:
iex(3)> String
假设我有一个模块App.a,它有以下代码
defmodule App.A do
defmacro __using__(_) do
quote do
alias App.B
end
end
end
因此,当使用时,它会自动为App.B添加别名
现在,还有另一个模块名为App.C,定义如下:
defmodule App.C do
defmacro __using__(_) do
quote do
use App.A
def
您可以通过iex上的module thorugh t命令显示类型规格,即:
iex(1)> t Enum
@type t() :: Enumerable.t()
@type acc() :: any()
@type element() :: any()
@type index() :: integer()
@type default() :: any()
但是如何从例如Enum.reverse中查看类型规格
如果我去看源代码,我就会明白
@spec reverse(t) :: lis
我有一个元组列表(表示http请求头),
在保存到数据库之前,我检查了它。
例如,原始值:
[{“内容类型”、“应用程序/json”}、{“x-request-id”、“fatlud3104arjj91jtig2qrj3u7320la”}]
保存为:
“[{\'Content-Type\',\'application/json\',{\'x-request-id\',\'fatlud3104arj91jtig2qrj3u7320la\'””,“
有没有办法将这些值恢复到原始类型(从数据库加载时)
我尝试了各种方法生成一个列表,如:
n = 3
nodelist_master = Enum.into 1..n, []
但是当我尝试用IO.puts“List:{nodelist\u master}”或inspect输出它们时,我得到了
^A^B^C
我期待着
[1,2,3]
您使用的字符串插值(“{{list}”)隐式调用参数
iex | 1▶ list=Enum.into 1..3,[]
#⇒ [1, 2, 3]
iex | 2▶ to_字符串(列表)
#⇒
对于小于12
给定一个列表,如何将其拆分为N个子列表?它们不一定要大小相等。例如,给定9个元素并将其拆分为N=3个子列表=>3x3。或进入N=4个子列表=>2、2、2和1
我该怎么做?长生不老药库中没有函数吗
Enum.split将列表拆分为两部分
更新:
如果我有7个元素,我想把它们分成3个子列表,那么应该创建3个子列表:
[[3 elements], [2 elements], [2 elements]]
即,我想保留所有的元素,可以考虑将列表拆分为n个元素的子列表:
some_list = [1,
我在这里读过。但是文档看起来很混乱。我想为整个关联构建一个变更集,并在一个事务中执行它以进行更新。这是我的模型
;
这是我想要构建单个变更集的数据
data= %User{
__meta__: #Ecto.Schema.Metadata<:loaded, "users">,
id: 4606,
name: "Test",
occupation: "Artist",
paintings: [
我的GenServer中有以下功能:
def add_event(param1, param2) do
Enum.each(:pg2.get_members("some_group"), fn pid -> GenServer.cast(pid, {:new_event, param1, param2}) end)
end
def handle_cast({:new_event, param1, param2}, state) do
#do something
我知道我们可以在中的捕获/救援块中使用\uuuu stacktrace\uuuuu获得完整的stacktrace,但正确的打印方式是什么?在我的例子中,我从错误中解救出来,但我仍然希望将其记录到控制台。这就是我现在正在做的:
def不可靠_方法(项目)do
#用“物品”做点什么`
:好的
营救
_呃->
Logger.error(“项:#{inspect(项)}失败”)
记录器错误(检查(uu堆栈跟踪)
{:错误,:处理_失败}
结束
只需Stacktrace
MichałMuskała回答了这
我可以手动建立一个conn,然后像调用函数一样调用它们吗?如果您不理解它们的含义,请查看下面的代码
例如,定义路由/ping
我知道这可以通过使用Plug.Test中的conn函数来完成,但它基于HTTP客户端,而不是运行时函数调用,这太低效了。标准方法是如您所说,使用它来构建%Plug.conn{}结构,从而导致调用该路由
所有的插件都有一个函数,这是运行时可用的
例如:
conn=Plug.Test.conn:get,/ping,
conn=YourModule.Router.callcon
我正在尝试为elixir设置一个echo服务器,为了简单起见,它采用简单的HTML,并只显示它。我必须在服务器中做些什么才能让它这样做
我试着看看其他人是如何用Elixir为工作服务器进行最小构建的,例如,似乎很有希望,但我仍然不知道如何在这方面实现它
提供的EchoServer
defmodule EchoServer do
require Logger
def accept(port) do
{:ok, socket} = :gen_tcp.listen(port,
我提出了以下解决方案,我称之为演员阵容前的解决方案:
attrs = payload_fields_to_payload(attrs)
问题是,传入的属性可以是基于原子的,但不一定是基于原子的。有没有比我在这里做的更快更干净的方法?我只是在属性中重命名一个键。这项任务似乎有很多代码
def payload_fields_to_payload(attrs) do
attrs = cond do
Map.has_key?(attrs, "payload_fields") -&g
我正在尝试将ejabberd包括在elixir应用程序中,如中所述。一切正常,但当我想使用mix-release从应用程序创建发布包时,出现错误:
** (Mix) :p1_utils is listed both as a regular application and as an included application
你知道怎么解决这个问题吗?我的exs很简单,只是ejabberd没有其他DEP
defmodule Ejapp.MixProject do
use Mix.Proje
我正在尝试将主键从:id重命名为:account\u id
我有以下模式和迁移。当我尝试插入一条记录时,我从Postgres的account\u id列中得到一个“cannot be null”错误
我是否正确设置了自动生成位?我觉得这应该是在迁移中
def change do
create table(:accounts) do
add :account_id, :integer, primary_key: true
add :email, :string
我有一个片段,它是重复的,非常复杂。我想将它提取到变量/函数中,并多次重用它,而不是多次编写它。下面是一个简化的示例,到目前为止,我尝试了许多不同的方法:
f = dynamic([u], fragment("order by name desc"))
query = from(u in User)
|> order_by([u], ^f)
Repo.all(query)
据了解,使用dynamic应该是可能的,但是我尝试在order_by、select、having或其
标签: Elixir
phoenix-frameworktelemetry
我们的团队正在开发一个凤凰城项目,本周一位新成员加入了我们。他试图在Ubuntu20.04机器上的Docker环境中工作
他从我们的GitHub repo中提取源代码,发现我们的应用程序无法启动,并显示以下错误消息:
[error] beam/beam_load.c(1883): Error loading module telemetry_app:
This BEAM file was compiled for a later version of the run-time system
大家好
我对长生不老药有点陌生,对在长生不老药中为员工设置员工姓名和id很迷茫,我希望有人能帮我一点忙
我的申请文件
defmodule Squareup.Application do
# See https://hexdocs.pm/elixir/Application.html
# for more information on OTP Applications
@moduledoc false
use Application
def start(_type, _ar
我有以下代码:
def show(conn) do
conn
|> put_resp_header("content-disposition", ~s(attachment; filename="tmp.png"))
|> Plug.Conn.send_file(200, "tmp.png")
end
我试图在发送后删除tmp.png文件,但是如果我这样做了
def show(conn) do
conn
上一页 1 2 ...
10 11 12 13 14 15 16 ...
下一页 最后一页 共 125 页