正如我们可以让Ruby中的任何对象(或类)列出其方法一样,Elixir中是否有函数列出属于某个模块的所有函数?像String.functions(其中String可以被任何其他模块名替换)这样的东西(至少是远程的)Elixir中的每个模块都定义了一个\uuu info\uuu函数,您可以调用该函数来获取有关该模块的信息
根据,您可以传递它:functions,以获取模块包含的函数列表
Map.__info__(:functions)
[delete: 2, drop: 2, equal?: 2
标签: Elixir
phoenix-frameworkecto
使用以下混合DEP:
[{:phoenix, "~> 0.15"},
{:phoenix_ecto, "~> 1.0.0"},
{:postgrex, ">= 0.0.0"},
{:phoenix_html, "~> 2.1"},
{:phoenix_live_reload, "~> 0.5", only: :dev},
{:cowboy, "~> 1.0"}]
以及以下型号:
# foo.ex
has_many: :bars, App.Bar
我正在尝试扩展Phoenix中现有的异常
我从文档中看到了这样做:
defimpl Plug.Exception, for: Ecto.NotSingleResult do
def status(_exception), do: 404
end
但这是怎么回事
另外,我有两个管道,一个用于:browser,一个用于:api
是否可以在一个管道而不是另一个管道中进行扩展?您可以将Plug.Exception协议的dempl放在任何需要的地方,只要它所在的文件是由Mix加载的,例如lib或we
在Ruby中,您可以使用以下工具轻松查看应用程序中使用的gem版本的源代码:
$ bundle open devise
“长生不老药”中有等效物吗?没有与捆绑开放GEM等效的长生不老药,例如混合开放DEP
例如,有一个包来添加一个mixopen任务,将不会带来什么便利,因为mix依赖项是特定于项目的,而不是全局的。您必须将包指定为每个项目的依赖项,除非您将其安装为存档
相反,可以从项目的根目录中使用deps/查看源代码。执行mix-deps.get后,所有依赖项的完整源代码都应位于deps/中
假设这个数据集
%{"ACTION" => "avail.datacenters",
"DATA" => [%{"ABBR" => "dallas", "DATACENTERID" => 2,
"LOCATION" => "Dallas, TX, USA"},
%{"ABBR" => "fremont", "DATACENTERID" => 3,
"LOCATION" => "Fremont, CA, USA"},
%{"ABBR" =&
例如,我希望有一个函数可以这样调用:
foo :bar, key: "value" do
"some block value"
end
def foo(bar, opts \\ [], [do: block])
或
或
或者干脆
foo key: "value"
首先,函数定义如下所示:
foo :bar, key: "value" do
"some block value"
end
def foo(bar, opts \\ [], [do: block])
当我需要适应只传递
根据此问题–可以使用模块在Elixir中动态创建模型。创建
是否也可以在运行时为该模型在数据库中创建一个表,即不使用Ecto迁移文件?PostgreSQL和MySQL用于Ecto2.0+的适配器能够执行原始SQL:
qry =
"""
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
我是来自Python的长生不老药新手。如果,这将相当于。这是否存在于Elixir/Erlang中
谢谢大家! 老实说,我不能确定我是否正确理解了你的问题,但我认为你在寻找的是
你会这样做的
function_exported?(:main, your_func, your_funcs_arity)
比如说,
function_exported?(:Kernel,function_exported?,3)
内核函数应该始终可用,因此通常不需要指定函数名的内核部分
希望有帮助
我的GenServer中有一个原子数组作为状态。我不想只弹出队列中的最后一项,我想一次弹出所有状态
当前代码不工作
GenServer的状态:
我想在调用GenServer.callpid时返回[:code,:hello,:world],:pop我该如何实现这一点?更改
@impl true
def handle_call(:pop, _from, [state]) do
{:reply, [state]}
end
到
您基本上是返回状态并将当前状态设置为空列表
返回格式为的元组
{:回复
标签: Elixir
protocolsphoenix-frameworkenumerable
对于一个学校项目,我们必须用elixir制作一个网络商店,通过上传一个csv文件来创建新产品。我们试图通过以下方式实现这一点,但总是出现错误(请参阅标题)
有人能帮我们吗?这是我们的代码:
表格
<%= form_for @changeset, @action, [multipart: true], fn f -> %>
<div class="form-group">
<label>File</label>
假设我有一张带有一些用户数据的地图:
iex(1)> user_map
#=> %{name: "Some User", email: "user@example.com", password: "*********"}
如何将其加载到%User{}结构中(希望使用一些Rubyish长生不老药)?
我目前已经试过了,但都失败了。正在浏览Elixir网站上的部分
user_struct = %{ %User{} | user_map }
user_struct = %{ %User
标签: Elixir
phoenix-frameworkecto
如何验证在外太空中存在相关模型
schema "foo" do
has_many: bar, Bar
timestamps
end
@required_fields ~w(bar) # invalid
有没有办法做到这一点?并验证这些字段的最小/最大数量?还没有任何内容。但是,您可以在变更集函数中自己运行这些验证:
def changeset(model, params) do
model
|> cast(...)
|> validate_bar_assoc
是否有人知道(或可以提供)如何使用ecto DSL更改表列名的示例
我猜我只是使用mix-exto.gen.migration,但是我会用我的自定义代码填充创建的空文件吗(如果是这样,您将如何编辑列名,文档显示修改以更改列类型)
或者我可以传递一个命令行标志来生成迁移代码吗?我们还没有重命名列的选项。您需要查阅数据库文档,并使用execute发出一条SQL语句。现在,您可以使用:
OK酷,我将创建空白迁移,并添加我自己的SQL:)工作,因为它应该。
rename table(:posts), :
标签: Elixir
phoenix-frameworkecto
我有一个模式:
schema "editables" do
field :title, :string
field :content, :string
timestamps
end
现在我想将一个字段的类型从:integer更改为:binary。
因为使用add不起作用,所以编写迁移的正确方法是什么
def change do
alter table(:editables) do
add :title, :binary
add :c
标签: Elixir
phoenix-frameworkelixir-mix
所以,我对长生不老药和凤凰是全新的。我已经做了一个hello world应用程序。跟踪一个人的博客应用程序。遵循Phoenix框架的初始步骤。到目前为止,一切顺利
然而,今晚,我有了新的东西
每次运行混合测试时,我都会得到以下结果:
hail2skins@elixir:~/workspace/phoenix/test_blog $ mix test
** (ArgumentError) argument error
:erlang.exit(nil, :normal)
(ecto)
我已经为长生不老药建立了一些有用的库。我已经把他们两个都放进了魔咒。我已经在库B中使用了库A,我刚刚合并了库B作为库A的依赖项。现在库A当然不会构建
加载项目时出错:a at/Users/me/fun/a/deps/ar
**(Mix)尝试从“/Users/me/fun/a/deps/a/Mix.exs”加载ArgumentParser.Mixfile,但在“/Users/jistone/fun/a/Mix.exs”上已定义了另一个同名项目
以下是我迄今为止所尝试的:
从deps文件夹中删除a
所以我知道表单帮助器,比如说text\u input你从模式中传递字段的原子,然后在new表单中它将提供一个输入框,在edit表单中输入框将被填充
但是,您可以使用selectformhelper执行相同的操作吗
我有一个模式Foo,它有一个bar\u id,它是对bar的引用,我想在FooPhoenixHTML表单中显示所有bar字段的选择下拉列表
然后在编辑表单中选择框,以显示先前保存的所选条
但是选项值需要是bar项目列表中的bar\u id(使用bar模式中的另一个字段作为选项文本)
这
我试图在列表中添加新元素,如下所示:
iex(8)> l = [3,5,7,7,8] ++ 3
[3, 5, 7, 7, 8 | 3]
iex(9)> l
[3, 5, 7, 7, 8 | 3]
iex(2)> l = [1,2] ++ 3
[1, 2 | 3]
iex(3)> Enum.each(l, fn(x) -> IO.puts(x) end)
1
2
** (FunctionClauseError) no function clause matching
Mix.env/0在Mix phoenix.server中正常工作,但在使用exrm构建的生产环境中无法调用。这是有道理的,因为发布版本中不包含mix,但是是否有mix.env/0的等效版本
(UndefinedFunctionError) undefined function Mix.env/0 (module Mix is not available)
我在一些代码中使用了Mix.env/0,如下所示:
if Mix.env == :dev do
# xxxxxx
else
# x
不确定我为什么会收到此编译器警告。我做错了什么
defmodule T do
def get_length do
with {:ok, file} <- File.read("<file>"),
content <- String.downcase(file) do
IO.puts content
end
end
end
deft-do模块
def get
我对跟随马可有疑问。考虑下面的代码片段:
defmodule Assertion do
defmacro __using__(_options) do
quote do
import unquote(__MODULE__)
Module.register_attribute __MODULE__, :tests, accumulate: true
@before_compile unquote(__MODULE__)
end
end
我有一个用户模型,有许多组
web/models/user.ex
defmodule MyApp.User do
使用MyApp.Web,:model
使用Arc.exto.Model
模式“用户”做什么
字段:名字,:字符串
字段:姓氏,:字符串
有很多:群组,MyApp.Group
[...]
在user#show模板中,我希望呈现现有的组(如果有)。如果没有,我什么也不想渲染
web/templates/user/show.html.eex
[…]
组
您可以检查组集合是否不是空列表,
假设我想创建一个resources,在其中添加一些自定义操作,rails中的类似功能是:
resources :tasks do
member do
get :implement
end
end
这将使我不仅返回7条标准路线,而且返回1条新路线:
GET /tasks/:id/implement
如何在phoenix中执行此操作?您可以在do块的resources中添加get
web/router.ex
$mix phoenix.routes
task_path
我来自rails,我正在尝试在凤凰城做一些类似的事情
resources :sessions, only: [:new, :index] do
collection do
post 'claim', to: 'sessions#claim'
end
end
这是我能做的最好的了
resources "/session", SessionController, only: [:index, :new]
post "/session/slackLogin", SessionCont
我目前正在通过网站exercism.io学习长生不老药。
我遇到了“倍数之和”的问题,即:
如果我们列出所有不超过20的自然数
乘以3或5,我们得到3,5,6和9,10,12,15和18。
这些倍数之和是78
我用这个代码解决了这个问题:
defmodule SumOfMultiples do
@doc """
Adds up all numbers from 1 to a given end number that are multiples of the factors provid
我不熟悉长生不老药,甚至不熟悉函数式编程。我懂python和Java。我把它们用于我的数据科学项目。学习长生不老药需要了解ErlangVM吗?如果是,那么我如何理解Erlang VM
如果有一个学习长生不老药的指导方针,对我这样的人来说将是非常有益的。关于Erlang VM最重要的一点是过程模型,它在Erlang和Elixir中是相同的。这是一篇博客文章,里面有一些实际的例子
流程模型还影响垃圾收集的方式;这与它在其他语言中的工作方式不同。更详细地讲,但最重要的一点是进程根据进程本身的内存使用情
我正在实现一个排序算法来对结构集合进行排序。我需要根据每个结构中特定键的值对集合进行排序。我可以将键硬编码到函数中,但我想对其进行推广。正如您在下面看到的,专用实现比通用实现快3倍
有没有比defp get_value(x,key),do:get_in(x,[Access.key(key)])更有效的方法来获取结构中的键的值?它来自于
专业化
defmodule QuickSort do
def qsort([]) do
[]
end
def qsort([pivot | r
标签: Elixir
phoenix-frameworkotp
我在使用Elixir和Phoenix实现以下流时遇到问题:
来自用户A的请求第三方API缓存为空
通过HTTP启动第三方API获取
获取尚未完成,来自用户B的请求进入
用户B等待提取完成
提取完成,将提取的数据写入缓存(如Redis)
为所有等待的用户提供缓存数据
不同的路由或路由参数应使用不同的队列。当第三方API数据仍在获取时传入的请求在任何情况下都不应触发具有相同参数的额外获取。等待部分(2.2.)对我来说至关重要
从我目前所读到的内容来看,使用标准Elixir/Erlang/OTP功能
标签: Elixir
phoenix-frameworkphoenix-channels
如何更改此代码以连接到不需要身份验证的通道,同时仍允许在某些通道上进行身份验证
phoenix.js:701 WebSocket连接到“ws://localhost:4000/socket/WebSocket?token=&vsn=1.0.0”失败:WebSocket握手期间出错:意外响应代码:403
user_socket.ex
defmodule App.UserSocket do
use Phoenix.Socket
## Channels
channel "collecti
在Elixir/Phoenix应用程序中,我希望在html页面上显示git中的当前提交哈希和mix.exs文件中的版本号。我该怎么做?也就是说,是否可以访问此类信息?要提取当前提交哈希,我有以下解决方案:
{hash, _} = System.cmd("git", ["rev-parse", "HEAD"])
# => {"5f6910ce1f42d5026d0ec5544ce6df9c3f8caf17\n", 0}
String.trim(hash)
# => "5f6910ce
我想重载一个函数,它将map作为几个不同情况的参数。调用函数时,将根据映射中的键执行不同的函数
例如,在这个查找用户!()功能,我可以通过id、email或mobile数字字段找到用户,这些字段都在数据库中索引
def find_user!(%{"id" => user_id}) do
Repo.get(User, user_id)
end
def find_user!(%{"email" => email}) do
IO.puts "get user
我跟随一段老视频学习流程。我试图发送一个ping,但是我的测试返回了这个错误lib/ping_test.ex:4:未定义的函数pid/1我不确定我做错了什么,因为我还不太熟悉Elixir。这是我的密码:
defmodule Ping do
def start do
receive do
{:pong, pid} -> send(pid {:ping, self()})
end
end
end
试验
错误
那么我做错了什么?在Ping.start/0中的
标签: Elixir
phoenix-frameworknested-attributes
在phoenix变更集中是否有一种方法可以拒绝嵌套属性,而不强制转换或验证嵌套属性(如果嵌套属性都为零)
我正在寻找与rails相当的产品
接受:地址的\u嵌套\u属性\u,如果::all\u为空则拒绝\u
这不应该返回地址的验证错误,并且仍然允许持久化未列出的参数。我希望电子邮件和名字仍然被保存,而地址被忽略
# Example attrs
%{"addresses" => %{"0" => %{"address_type" => nil, "city" => n
我正在使用Phoenix1.3.0-rc,我想使用user\u path(…)在我的json返回中打印一个url
我的控制器:
...
def show(conn, %{"id" => id}) do
user = User.find(id)
render(conn, "show.json", user: user)
end
...
def show(conn, %{"id" => id}) do
user = User.find(id)
render(conn,
在Elixir中,我如何记录函数将返回实现特定行为的模块
举一个简单的例子,假设我创建了一个由两个模块实现的GreeterBehavior行为:
defmodule GreeterBehaviour do
@callback say_hello(String.t) :: String.t
end
defmodule FormalGreeter do
@behaviour GreeterBehaviour
def say_hello(name) do
"Good day t
标签: Elixir
phoenix-frameworkelixir-mix
我有一个phoenix应用程序,但是我需要在每次后端更改后手动重新启动服务器代码重新加载已启用,并且正在使用插件代码重新加载
我尝试过生成一个新项目(mix phoenix.new——没有早午餐),我尝试过不同的编辑器(vim、vscode、atom和textdedit),我尝试过总是在端点中要求plug CodeReload,我已经尝试手动将MIX_ENV设置为dev——但是当我更改文件时,我的项目仍然无法编译。我应该如何追踪问题所在
运行mix phoenix.server或iex-S mi
我有一个带有两个默认参数的函数
defpfoo(bar,baz,qux\\”,garply\\nil)
我有两个用法,一个只提供前两个参数,另一个全部4个参数。透析器抱怨永远不会调用函数foo/3。我假设这是因为它是私有的,两个默认值允许展开节点/2,展开节点/3,和展开节点/4。表面上,我可以放弃默认值,并在当前的foo/2调用中提供它们,但仅仅安抚透析器似乎很愚蠢。有没有办法在规范中指定这一点?您可以使用@dialyzer属性抑制透析器警告:
@dialyzer {:no_unused, [
标签: Elixir
phoenix-frameworkedeliver
我正在用edeliver部署aws。部署运行正常,但当我尝试使用curl localhost:8888访问控制台中的站点时,我收到了一个连接被拒绝错误
如果我尝试使用/rel/bin/app\u name console启动应用程序,我会得到一个(RuntimeError),希望设置端口环境变量。但是,我的config/prod.exs如下所示
use Mix.Config
config :elixir_deploy, ElixirDeployWeb.Endpoint,
load_from
标签: Elixir
phoenix-frameworkecto
在我的Phoenix应用程序中,我试图在我的一个变更集上使用validate_format(),以确保可选整数值不是负值(如果已提供)。然而,当使用该方法时,我得到了一个错误,我不确定我做错了什么
这是我的模式和变更集-因为:duration已经定义为整数,所以我只关心确保它不包含负号:
embedded_schema do
field :content, :string
field :title, :string
field :duration, :integer
times
我想创建一个类似以下内容的Elixir代码:
def infinite_loop(created_workers \\ []) do
case next_from_queue do
{:ok, queue_msg} ->
new_worker = Task.async(fn -> crawling(queue_msg) end)
infinite_loop([new_worker | created_workers])
{:error, :
我目前正在使用Elixir构建一个软实时事件处理系统,现在我正试图了解GenStage/Flow是否是构建的正确抽象。不幸的是,大型应用程序的示例很少,大多数都是关于过时数据的并行处理。我使用无限的事件流作为源
我的问题是,如果我订阅一个无限的外部事件流,将事件推送到我的应用程序,那么在GenStage/Flow上构建是否有意义。我希望事件到达服务器时立即进行处理。也就是说,我不想缓冲它们,直到我得到500的流量来启动需求。但是使用最小需求量1有意义吗?我想说,对于任何接近实时的GenStage
我不熟悉长生不老药和分布式编程。我在Youtube上的Jose Valim示例中尝试了从其他节点派生方法的示例。但它不起作用,也找不到正确的答案
iex(bob@local)2> Node.spawn(:"alice@alice.local", fn -> Hello.world() end)
#PID<0.116.0>
22:05:12.657 [warn] ** Can not start :erlang::apply,[#Function<20.12862
我正在写一个POST请求,它应该使用elixir向REST api发送一些信息,这些信息应该可以在conn.body_参数中访问,但是它看起来是空的
我的代码如下:
conn2=conn:post,玩家ID/猜测,毒药。编码!%{guess:p}
|>GameRouter.call
断言conn2.status==201
我的插头还具有以下配置:
plug-plug.parser,解析器:[:urlencoded,:multipart,:json],pass:[*/*],json\u解码器:Po
我想在我的函数get_color(image)中获取Elixir中字节列表的前3个字节,其中image是一个定义为字节列表的结构,其中hex
现在我知道这种模式匹配的方式是这样的:
def get_color(image) do
[a,b,c | _] = image.hex
[a,b,c]
end
然而,我最初的代码是:
def get_color(image) do
{color, _rest_of_array} = image.hex |> Enum.spl
标签: Elixir
phoenix-frameworkotp
我有一些代码需要在Elixir Phoneix应用程序启动时调用。代码的某些部分需要向数据库发出请求,以检索将用于初始化的数据
虽然我可以在
如果我理解正确的话,不应该从MyAppWeb.Endpoint
这是正确的吗?如果是这样的话,我应该从哪里开始编写这样的代码来进行初始化 首先,不要将与Phoenix本身无关的代码放入其助手中
创造你自己的,做任何你需要的,然后优雅地停止它
GenServer初始化过程分为三个阶段:
第一个在调用进程中执行,最后两个是回调,在已启动的GenSer
我有一个简单的待办事项/作者/评论
Todo has_many comments
Comment belongs_to Todo
Todo belongs_to Author
Author has_many todos
Author has_many comments
Comment belongs_to Author
如果我将todo_view.ex渲染为如下所示:
def render("todo.json", %{todo: todo}) do
%{id: todo.id,
标签: Elixir
phoenix-frameworkecto
我必须查询数据库:
Repo.all(from d in ScannerData,
where: d.unixdate >= ^dates.start_date,
order_by: [desc: fragment("?", ^order_by)],
group_by: d.host,
limit: 10,
select: %{
recipient: d.host,
我正在Elixir/Phoenix中实现一个后端API。出于安全原因,决定在URL上显示尽可能少的内容,以便将要执行的操作嵌入POST请求的JSON负载中。例如,而不是像请求一样使用RESThttps://my.server.com/api/get_user/42,我们将在https://my.server.com/api/ 具有以下有效载荷:
{
"action" : "get_user",
"params" : {
我通常会检查我的测试是否返回如下所示的预期结果:
company=company_fixture()#在数据库中插入具有默认属性的公司
断言Profile.get_公司!(company.id)=公司
但这失败了
Assertion with == failed
code: assert Profile.get_company!(company.id) == company
left: %MyApp.Profile.Company{
我试图了解Elixir的内核是如何工作的2函数工作,有人能用一些使用示例解释吗?我试图理解以下函数,但我不清楚
def multiple_three_five do
1..999
|> Enum.filter(fn(n) -> rem(n, 3) == 0 or rem(n, 5) == 0 end)
|> Enum.reduce(&Kernel.+/2)
|> IO.puts
end
如果您在IEx,则可以使用h回调来显示模
上一页 1 2 3 4 5 6 7 8 9 ...
下一页 最后一页 共 125 页