Elixir 如何限制进入凤凰城的某些路线?

我有一个小的Phoenix应用程序,允许用户登录并查阅他们的个人资料。我使用了以下简单的路线: resources "/users", MyApp.UserController 但这允许每个用户通过:index操作查看用户列表,以及删除或更新任何用户 限制管理员访问权限的最简单方法是什么?我应该在每个动作前加一张支票吗?或者我应该创建一个“/admin”资源来处理这些操作吗?推荐的方法是什么?您可以使用用户控制器中的插头0.4.x无法有条件地插入s,但您可以通过以下方式实现所需: defmod

Elixir 将操作推送到消息队列以便在能够

我的标题不是很好,因为我发现很难在一个小片段中解释我想要什么…所以我会深入尝试 我正在使用Phoenix web框架编写一个长生不老药应用程序 我想做的是: 调用一个web路由,phoenix处理该路由并将其传递给控制器 控制器,用于启动要移交给消息队列的进程 当资源可用时,队列中要处理的最新项目(即CPU/内存/etc) 流程不需要返回web路由(即其异步) 我知道如何在其他语言中通过使用消息队列(Beanstalk、RabbitMQ、sidekiq)来处理这一问题,并拥有将“作业”交给工

无法连接MacBook Pro上的Elixir节点

我似乎无法连接macbook pro上的两个节点。我正在使用 iex-sname foo和iex-sname bar在两个单独的终端会话中,它们彼此看不见。我试过设置防火墙并完全关闭它,但运气不好 在foo中,我使用Node.self查看全名是:“foo@ewHBook-Pro“然后在工具栏中,我尝试了Node.connect:foo@ewHBook-Pro“和Node.ping:”foo@ewHBook-Pro“这可能是主机文件中的一个问题。请查看pma在上的评论 这个问题的解决方案是使用ie

Elixir Phoenix:在模板中指定值的渲染模板

我正在努力使我的应用程序干燥和模块化。但是,当我试图将一个组件(小模板)放入另一个模板(较大的模块)中,该组件接收调用/“实例化”时传递的动态值时,我遇到了以下错误: assign @conn not available in eex template. Available assigns: [] 我在模块(大模板)中插入的组件(小模板)如下: 菜单 我使用以下方法将其插入我的模块: <%= render myapp.ComponentView, "menuButton.html",

Elixir 在where子句中由OR连接的多个列组成一个EXTO查询

假设我有这样一个疑问: User |> where([u], u.name == "John" or u.age == 24) 我想将其转换为一个函数,它可以获取字段名和字段值的关键字列表,并动态生成相同的查询。函数定义如下所示: def where_any(query, field_names_to_values) do ... end User |> where([u], any_expr(u, [name: "John", age: 24])) 这在Elixir和Ec

Elixir 与phoenix一起提供HTTP范围请求?

我目前正在开发一个网站与凤凰城,并有一个视频部分,应该在后台播放 虽然它在Chrome和Firefox上运行良好,但在Safari上不起作用 我怀疑这是因为cowboy没有正确地服务HTTP范围请求 是否有方法启用(如果默认禁用) 当它应该是如nginx服务器所示的206时: $ curl -H Range:bytes=16- -I http://localhost/videos/vid_home_1.mp4 HTTP/1.1 206 Partial Content Server: nginx/

Elixir 长生不老药-如何深度合并地图?

使用Map.merge我有: Map.merge(%{ a: %{ b: 1 }}, %{ a: %{ c: 3 }}) # => %{ a: %{ c: 3 }} 但实际上我想: Map.merge(%{ a: %{ b: 1 }}, %{ a: %{ c: 3 }}) # => %{ a: %{ b: 1, c: 3 }} 对于这种情况,有没有不编写递归样板函数的本机方法?如果在映射中只有一级映射嵌套,并且顶级映射的所有值都是映射,则可以使用map.merge/3: iex(

Elixir 无法在EXTO中创建多对多关联

我正在开发一个多用户、多聊天室的聊天应用程序,我的模型如下(为了简单起见,省略了应用程序模型): 及 接下来,我从iex创建了一些房间和用户(每个三个)。现在我想知道:假设我希望user1属于room1和room2,user2属于room2和room3。。。怎么做 在我看来,虽然定义模式很好,但必须有一个中间步骤来执行类似于user1.rooms=[room1,room2]的操作。最后我看到了一个build\u assoc的示例: Ecto.build_assoc(current_user, :

Elixir Postgres在派生进程内运行查询时断开连接?

我有一个生成进程的函数,它执行如下查询: def trigger_schedule(u = %User{}) do spawn(fn -> (Repo.preload(p, :tasks)).tasks |> Enum.map(fn ts -> trigger_schedule(ts) end) end) u end 这段代码是由某些操作触发的,只是为了在后台运行。但是,当我运行测试时,我开始看到: 00:37:33.3

Elixir 长生不老药枚举图

我正在为 其中,要选择的主题是: def subjects_to_select(subjects) do subjects |> Enum.map(&{&1.title, &1.id}) |> List.flatten end 但是,是否不仅可以显示标题(在选择器中),还可以显示其他变量?从db中,我返回选择:%{title:p.title,teacher:u.names,lvl:p.lvl,id:p.id},我需要提供类似lvl,titl

elixir constantize字符串以获得模块(string.to_module/1)?

我正在会话中存储一些元数据,以便根据字符串访问不同的模块 有没有办法做到这一点 String.to_module("MyApp.Vendor") #=> MyApp.Vendor String.to_module("MyApp.Customer") #=> MyApp.Customer 然后,最终目标是使用account\u type按id查找结构,以执行特定于该类型的操作 account = Repo.get(String.to_module(account_type), a

有没有办法在编译时向elixir模块添加函数?

我正在使用长生不老药,并听从医生的建议 博客文章 我遇到了跟踪哪个模拟函数对应的问题 哪个测试。我为api包装器的测试环境添加了一个模拟模块。当我将模拟函数添加到模拟api模块时,我发现我不记得编写了哪些函数来返回哪些测试的结果 我一直在试图找到一种在测试附近使用宏来定义模拟方法的方法。作为一项学习练习,我对这个问题也很感兴趣 以下是我对其工作的设想: defmodule SomeMockModule do end defmodule MockUtil do defmacro add_mo

Elixir 现代Phoenix web应用程序中的OTP和EXTO代码分离

在看了演讲之后,我明白了如何将web界面和OTP应用程序分开,然而,如果OTP应用程序和Ecto代码有区别的话,应该如何分开呢 目前,我正在编写一个OTP应用程序,在handle\u call/3回调中调用EXTO函数或EXTO函数的包装函数: @doc”“” 生成一个训练。 iex>Pullapi.Database.delete_workouts() iex>Pullapi.Database.delete_set() iex>result=Pullapi.GenServerWorker.han

Elixir 在每个块中添加元素时,列表的值不变

我有一张空名单 val = [] 当运行下面的代码时 Enum.each [1, 2, 3], fn x -> IO.puts x end 我们得到以下输出 1 2 3 :ok 这意味着,可以在每个块中访问元素 现在,当我运行以下代码时: Enum.each [1, 2, 3], fn x -> IO.puts x val = val ++ [x] end 这将得到以下结果 1 2 3 :ok 但是val的值没有改变,它仍然是[] 如果我单独在iex上运行 va

Elixir 在长生不老药保护伞项目中创建“escript”

我想在一本书中建立一个描述。 我有两个兄弟应用程序压缩器和打印机 压缩器取决于是围绕谷歌snappy压缩算法的nif包装器 # apps/compressor/mix.exs defmodule Compressor.MixProject do # .. defp deps do [ {:snappyer, "~> 1.2.4"}, ] end end # apps/compressor/lib/compressor.ex defmodule

Elixir 如何在wallaby中获取html页面

我尝试运行fin函数,但由于某些原因,我得到了nil。 我搜索的项目必须在那里,我怎样才能让html看到哪里出了问题?我不知道这是否是您的问题,但当我尝试wallaby使用此html时: <p class="results"><div class="green">That's all folks!</div></p> 我得到了一个错误: **(Wallaby.QueryError)应找到1个与css“.results”匹配的可见元素,但找到0个可

Elixir 长生不老药;“混合试验”;有时通过“启动时挂起”;Mix.shell.cmd“;

在我的Mix应用程序中,有一组特定的情况似乎导致运行测试套件的进程挂起。下面是一个场景- 在test/test\u helper.exs中,在调用ExUnit.start()之前,我调用了Mix.Shell.IO.yes?,其中用户确认测试行为的某些方面 if Mix.Shell.IO.yes?("Set up additional test assets?") do Mix.Task.run "run", ["test/support/fetch_and_start.exs"] end

Elixir 什么';这个匿名函数语法是怎么回事?

刚刚开始我的长生不老药之旅。在书中阅读: “运算符将后面的表达式转换为函数。” 好的,我想我明白了 iex(70)> f = &(&1 * &2) #Function<12.80484245 in :erl_eval.expr/5> iex(72)> f.(2,3) 6 iex(70)>f=&1*&2 #作用 iex(72)>f.(2,3) 6. 好的,符号是匿名函数及其参数的缩写。但是,为什么下一个电话不起作用 iex(73)> &am

Elixir 长生不老药混合编译优先级

是否可以为模块指定编译优先级?假设我有两个文件a.ex和b.ex,我想在使用混合编译时首先编译b.ex。可能吗 您可能需要特殊的表单。因此,如果我确实需要a.ex中的b.ex,它是否能保证b.ex首先得到编译?它在模块级而不是文件级工作。在模块栏中,您可以要求使用Foo,这将保证首先编译Foo。如果您将这些模块放在单独的文件中,它仍然可以工作。

Elixir 如何在长列表上使用IO.inspect而不进行修剪?

当我这样做时: IO.inspect [:right, :top, :left, ...very_long_list] 我只得到第一个项目(这是一个解决15个难题的移动列表),如下所示: [:right, :top, :left, :bot, :bot, :left, :top, :top, :right, :right, :bot, :left, :bot, :left, :top, :right, :bot, :right, :top, :top, :left, :bot, :le

在Elixir中有没有一种方法可以迭代传递给函数的所有参数?

我知道可以将一个列表传递给一个函数,然后对其进行迭代。但是,我更喜欢具有更明确签名的函数。所以我真正想知道的是Elixir是否有任何东西与Javascript中的参数对象等价 据我所知,答案是否定的。我所见过的关于这个话题的最接近的讨论是对的答案 我之所以寻找这个特性,是因为我有好几次发现自己将相同的转换应用于多个参数,这有点乏味。这可能是通过宏实现的吗?这是可能的,但我很少使用它: 在函数顶部调用binding()将为您提供范围内绑定及其值的关键字列表,如果您将其作为函数的第一行调用,则这些关

Elixir 究竟什么是凤凰;布局;?

在Elixir IRC中,josevalim,通过定义然后使用布局辅助对象,例如: <%= with_layout Layout, "app..." do %>hello<% end %> 你好 我对Phoenix非常陌生,但是我假设在与上面的模板对应的视图中定义了with_layout辅助对象,但是我不知道在哪里/如何定义和/或访问此布局。我现在熟悉“模板”和“视图”,但找不到有关Phoenix布局或布局助手的更多信息 所以我的问题是,Layout在这里到底指的是什

Elixir 长生不老药是不是没有定义?我应该用什么?

我想使用is_range()guard。例如: def foo(bar) when is_range(bar) do # stuff end 但是范围是否不存在?我在用长生不老药1.0.5 我试过了 def foo(bar) when Range.range?(bar) do # stuff end 但这也不起作用 我该怎么办?您可以在guards中使用的函数类型非常有限 范围是一个结构,它是映射,因此您可以使用is\u映射 功能 iex(1)> foo = 1..

Elixir Phoenix控制器中的当前用户通过插头传递

将此代码示例作为处理身份验证的插件: defmodule Financeweb.APIAuth do ... def call(conn, _opts) do ... if authenticated_user do conn |> assign(:current_user, user) else conn |> send_resp(401, "{\"error\":\"unauthorized\"}")

Elixir更新嵌套关键字列表

是否可以更新elixir中的嵌套关键字列表? 例如,我正在努力使以下工作 Keyword.put(conn.private.phoenix_endpoint.config(:url), :host, conn.host) 但是无论如何,更新的主机不会反映在conn变量中。您可以使用该变量,它将与映射和关键字列表组合使用 put_in(conn, [:private, :phoenix_endpoint, :config, :url, :host], conn.host) Edit正如@ma

elixirc命令正在编译和执行代码

我写了一个程序用Elixir打印两个数字的和。我将文件保存为solution.ex,当我使用elixirc as elixirc solution.ex编译它时,它会编译并执行代码。我认为elixirc只会编译代码并生成一个二进制文件,使用elixir运行二进制文件将执行它。任何帮助都将不胜感激 defmodule Solution do defp sum(a, b), do: a + b def main() do a = IO.gets("") |> String.s

Elixir-在主管的领导下获取流程的所有PID

我有一个主管,我想知道在任何给定时间在该主管下运行的所有流程。似乎应该有一种简单的方法来获取主管下或节点中所有进程的所有PID、名称等,但我找不到任何东西 有什么建议吗?您可以使用: iex>Supervisor.who_儿童(MyApp.Supervisor) [{MyApp.SubSupervisor,#PID,:supervisor,[MyApp.SubSupervisor]}, {MyApp.Endpoint,#PID,:supervisor[MyApp.Endpoint]}] 返回一

Elixir 长生不老药外键

我有一个具有以下模式的用户配置文件模型: schema "user_profiles" do field :birthday, Ecto.Date field :gender, :string field :first_name, :string field :last_name, :string field :description, :string field :username, :string # Associations

Elixir 克隆一个外胚层记录。是否有嵌入和相关记录?

克隆体外模型/记录的最简单方法是什么?我有一个包含许多成分和嵌入标签的样本配方模型 模型 克隆配方记录 如何克隆配方记录并创建用于插入新配方记录的变更集 recipe = Repo.get(App.Recipe, 1) recipe_changeset = Ecto.Changeset.change(recipe) # ... Steps for cloning record with embeds? new_recipe = Repo.insert(recipe_changeset)

Elixir 变更集中字段的默认值

我有一个模型和变更集方法。我希望有一个可选字段,如果它没有传递到chargeset,我希望设置一个默认值。我如何才能做到这一点?当您创建模式时,您可以通过将:default原子传递给它一个默认值 schema "foo" do field :name, :string, default: "bar" end 如果你的需求很简单,贾斯汀的回答肯定是最优雅的,但在我的情况下,我需要多一点灵活性。我需要能够生成一个唯一的、加密安全的值 我是在我的变更集管道中完成的: def changeset(

Elixir 如何使用通道插入外键id?

我有表格,类别和子类别 类别有许多子类别,子类别属于类别 在中的我的频道handle_中,有一个插入子类别的函数,如下所示 def handle_in("create:subcategory", %{"name" => name, "category_id" => category_id}, socket) do changeset = Subcategory.changeset(%Subcategory{name: name, category_id: category_id})

Elixir 体外转换装置和透析器错误

我有一个雨伞应用程序。我看到了透析器的价值,我正试着开始使用它。我已经走了相当远,但我有一个关于外太空的问题,我无法解决 这是一个用于处理身份验证的小型应用程序。我可以用最简单的例子把它全部删减 使用Elixir 1.4.2和Dialyxir 0.4.0 有问题的代码 defmodule Auth.Account do use Ecto.Schema import Ecto.Changeset schema "auth_accounts" do field :email,

重命名Elixir/Phoenix代码库后:变量;X";不存在,并且正在扩展为;X();

我将我的代码库从Livestory重命名为Citybuilder。我对文件中的文本使用查找和替换,然后使用mv重命名目录。Livestory的代码基搜索返回零结果 当我运行mix phx.server时,我得到: variable "citybuilder" does not exist and is being expanded to "citybuilder()", please use parentheses to remove the ambiguity or change the va

Elixir 如何禁用EXTO插入缓存?

我的应用程序插入数百万条记录。数据表每秒钟的大小ets都会增加几mb 在deps/exto/lib/exto/query/planner.ex中,我找到了将数据插入ets的cache\u insert函数。如何禁用此行为 我的插入功能: defp to_cache(links) do recs = Enum.uniq(links) |> Enum.filter(fn (link) -> (link != nil and link != "") end)

Elixir String.replace在长生不老药中

我需要转换这个字符串 "/{foo}/{bar}.{format}" 在 因为我有一个包含这些属性的列表。 比如说 a["foo"] = "home" a["bar"] = "picture" a["format"] = "jpg" 我试着做这样的事情 String.replace(a,"{",~s(#{)) 但我犯了这个错误( SyntaxError)iex:8:意外标记:) 我甚至尝试用一个regexp创建一个列表来获得结果,但我不明白如何应用这个regexp([^{]*?)\w(?=

Elixir Tesla中如何定义方法函数调用?源代码在哪里?

我正在查看HTTP客户端包的源代码,并试图找到Tesla.get/2函数的源代码,但在这里找不到它,就像其他HTTP方法的函数一样。顺便说一句,在线文档中的“查看来源”链接也无法打开。我很困惑,有人能解释一下吗 该包使用元编程为每个HTTP谓词生成函数。动词的名称已定义 此列表被迭代,并为每个列表动态生成函数。每个函数的实际主体在generate\u api函数中定义。因此,Tesla.get/2的实际来源是: 如果将方法替换为:get,则可以得到Tesla.get/2的有效定义: def ge

Elixir Wallaby-Ecto.Registry.lookup错误

我正在努力做一个新的凤凰城项目。我已经按照自述文件中的安装说明进行了操作,但是当我尝试运行基本测试时,我遇到了一个EXTO注册表错误: 1) test home page has welcome message (WallabyTestWeb.HomePageTest) test/wallaby_test_web/features/home_page_test.exs:6 ** (ArgumentError) argument error stacktrace:

Elixir MyApp.MyStruct未实现协议枚举

我试图创建一个联接表,但在构建结构时遇到了这个错误 错误 未为%Statcasters实现协议可枚举。UsersLegues{meta:#exto.Schema.Metadata,专员:nil,id:nil,插入地址:nil,联盟:#exto.Association.NotLoaded,联盟id:nil,更新地址:nil,用户:#exto.Association.NotLoaded,用户id:nil}。此协议的实现对象为:DBConnection.PrepareStream、DBConnecti

Elixir 使用表名获取模型名的惯用方法

在阅读exto.schema.metadata时,我发现我们可以使用模型名来获取该模型的表,如下所示: [ Ecto.Schema.Metadata, nil, {nil, table_name}, :built ] = Map.values(model_name.__struct__.__meta__) 我的问题是,我们可以使用表名来获取该表的模型吗?AFAIK,没有明确的方法来实现这一点,但由于我们使用的是Elixir,一切都是可能的: 与{:ok,mods}Enum.fi

Elixir 将地图列表转换为单个地图

像some_-maps=[%{“test”=>[1]}、%{“test2”=>[2]}、%{“test”=>[3]}]这样的映射列表如何转换为一个巨大的单一映射,并合并其值 single_map = %{"test" => [1, 3], "test2" => [2]} 因为我不能在像for这样的迭代中修改映射,所以我不知道如何构建这个映射 在另一种语言中,我会定义一个空映射并遍历列表并填充映射,但从功能上看,我不知道如何才能做到这一点。这里有一种方法: Enum.reduce(s

HMAC,Elixir,Plug.Conn(尝试多次调用read_body)

我正在努力解决一个问题,即在Plug.Parsers.JSON进入管道之前,有东西正在读取http请求的主体。因此,在插件中读取json的主体超时——您不能读取主体两次 我们在管道中的早期插件中有一个HMAC实现,它在某些情况下读取主体。在插头中,身体的使用有什么模式吗?我的意思是,如果我们只能读一次,并且必须在Plug.Parsers.JSON中进行解码,那么……它就不起作用了 接下去的问题。生成HMAC散列时是否需要包含请求主体?我的意思是,我觉得我们必须这样做,但我认为我自己在这一点上是一

elixir中的退格转义\b不是';行不通 退格逃逸

根据我在C的经验 你真的应该回来吗 "Hello Wol!" 这意味着\b实际上将其前面的字符退格。 所以我试着用长生不老药做同样的事情,用同样的方法得到了不同的结果。 结果如下 “你好,世界!” 换新行时也会发生同样的情况\n 请帮忙。。试图解决一个问题。 转义的其他字符如下 \a BEL (0x07) \b BS (0x08) \d DEL (0x7f) \e ESC (0x1b) \f FF (0x0c) \n NL (0x0a) \r CR (0x0d) \s SP (0x20

Elixir 返回正确的时间戳

现在我正在使用DateTime.utc\u,它返回以下内容: ~U[2019-07-27 19:44:24.834413Z] 这很好,但我想要一个函数,它将返回: ~U[2019-07-27 19:44:24] 就我的一生而言,我似乎找不到我想要的东西。有人能帮我吗?你可以使用这个功能 iex(1)> dt = DateTime.utc_now() ~U[2019-07-28 01:56:57.902304Z] iex(2)> DateTime.truncate(dt, :secon

Elixir 为什么一个字符列表不能显示为一个列表?

我试图用Enum.map函数迭代一个字符列表,但它的行为与我期望的不一样 第一行没有将charlist视为char列表,第二行我不理解为什么修改匿名函数会这样做 iex(32)> Enum.map('ABCD',fn(char)->char end) 'ABCD' iex(33)> Enum.map('ABCD',fn(char)->[char] end) ['A', 'B', 'C', 'D'] 我希望第一行返回['A','B','C','D'],第二行返回['A

Elixir 如何修复“**”(混合)任务“;编译.all";“找不到”;当我运行混合测试时`

最近开始使用exercism学习长生不老药,我在使用mix时遇到了一些问题。我对使用这个工具是完全陌生的,所以我可能错过了一些基本的东西 当我在带有tests子目录的目录中运行mix test时,我得到一个错误 **(混合)找不到任务“compile.all” 当我运行mix deps.get或mix deps.compile时,我得到另一个错误 **(混合)找不到任务“archive.check” 我做错了什么?我想我需要安装一些任务吗 我希望在通过/失败的条件下运行一些单元测试,但是我在上面

Elixir 如何编写嵌套关系的EXTO代码

我有下面的DB表关系 州1-1Member1-NMemberAction 如果是SQL,我想获取数据 SELECT A.action, M.member_name, FROM MemberAction A JOIN Member M ON M.id = A.member_id JOIN Prefecture P ON M.prefecture_id = P.id 然而,我不知道如何用EXTO编写代码。 以下代码不起

Elixir 从EXTO查询映射到关键字列表

我一直在RubyonRails世界中学习长生不老药 我有下表: release_track_id | release_id | track_id | release_side_id | track_number ------------------+------------+----------+-----------------+-------------- 347 | 70 | 211 | 3 |

上一页 1 2 ...  29   30   31   32    33   34   35  ... 下一页 最后一页 共 125 页