我注意到在elixir版本0.10.1中,您向这样的进程发送消息
my_process <- :message, self
Process.send my_process, :message, self
此更改的原因是什么?在此更改之前,列表理解如下所示:
lc x inlist my_list do
# ...
end
然而,这种语法对于新手来说很奇怪,因此Elixir团队开始寻找替代方案。获胜的语法是
for x <- my_list do
# ...
end
标签: 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-frameworkecto
我们在Rails中使用include或其他类似的方法或SQL;
那么ElixirEcto中解决这个问题的函数是什么呢?看起来像是在寻找预加载
JoséValim的以下博客文章中的示例应该会让您有所收获:
Repo.all from p in Post,
join: c in assoc(p, :comments),
where: c.votes > p.votes
preload: [comments: c]
在EXTO中,您具有预加载功能
我想在单机上使用带有Erlang的Exrm
我需要创建多个仅在节点名称上不同的版本
我知道,我可以在rel/vm.args中配置节点名称,但它将是静态的。我是否可以用不同的节点名生成多个版本?我正在研究同一个问题。一种可能的办法:
rel/vm.args支持操作系统环境变量参数化。所以你可以做一些像
## Name of the node
-name ${MY_NODE_NAME}
## Cookie for distributed erlang
-setcookie ${MY_COOKIE}
我正在尝试使用以下代码逐行散列文件(16 MB):
def hash(data, protocol) do
:crypto.hash(protocol, data)
|> Base.encode16()
end
File.stream!(path)
|> Stream.map(&hash(&1, :md5) <> "h")
|> Enum.to_list()
|> hd()
|> IO.puts()
在大约2
Elixir似乎每个操作有2个布尔运算符:
|| , or
&& , and
唯一的区别是对于or和etc,第一个参数本身必须是布尔值。当| |,&&&等似乎能够处理所有事情时,第二组运算符的意义是什么?在我看来,当您不想将任何其他值(或数据类型)解释为true时,想要将布尔值作为第一个参数可能会有所帮助,因为elixir将接受除nil和false之外的任何其他值。用户可能希望确保参数是布尔值(true或false),并且除了任何其他类型的值之外,不会意外
像or、and这样的
我想从MyMod转到%MyMod{},以便与我正在制作的库中的旧配置格式保持向后兼容性
模块已经定义并调用defstruct宏。内核函数应该可以正常工作:
struct(MyMod) # => %MyMod{}
啊,我没想到要看内核。非常感谢。
您可以使用计数器计算事件的发生次数。此外,您还可以从如下所示的iterable创建计数器:
>>> from collections import Counter
>>> Counter("asdasdafasdasdasd")
Counter({'a': 6, 's': 5, 'd': 5, 'f': 1})
>>> Counter([1,2,3,2,1,2,2,5])
Counter({2: 4, 1: 2, 3: 1, 5: 1})
我对Elixir/Phoenix非常陌生,我想知道如何在Phoenix中引入Rails引擎功能
我想要的很简单,我希望能够创建一个核心应用程序,比如一个小型crud应用程序
我希望能够将该应用程序的功能(控制器、视图、模型)导入到一个全新的phoenix应用程序(克隆)中,因此基本上所有内容都是从我的核心应用程序扩展而来的。我可以运行全新的应用程序,所有内容都将作为核心应用程序运行。我希望能够通过创建的新应用钩住/扩展核心功能(进行新的迁移/模型,调整一些视图等等…)
我听说过伞形项目,但我不确
我想在Elixir中创建一个枚举。可能吗?我所说的枚举是指来自C/C++或Ruby或许多其他语言的枚举。我知道Enum模块,但那只是一个模块——基本上是函数的容器。你可以使用原子。对于静态分析,可以定义只接受特定值的类型,并在TypeSpec中使用该类型。然后,您可以使用示例检查代码
@type state :: :a | :b | :c
@spec set_state(pid, state) :: :ok | {:error, term}
def set_state(pid, state)
标签: Elixir
phoenix-frameworkelixir-mix
当使用混合测试运行一组测试时,我得到
** (DBConnection.OwnershipError) cannot find ownership process for #PID<0.414.0>.
When using ownership, you must manage connections in one
of the three ways:
* By explicitly checking out a connection
我有一张表格
如果我只使用英语,它会非常好用。但中文,或任何其他返回错误
** (ArgumentError) argument error
:erlang.binary_to_atom("刺繡等等我", :utf8)
(elixir) src/elixir_parser.yrl:512: :elixir_parser.yeccpars2_93/7
我相信这与编码有关。如何将字符串转换为可接受的格式
提前谢谢 自当前版本的Erlang(19)起,Atoms不能包含255以上的代码点
二元到二
如果我有一个assigns变量,如何将其传递给Javascript标记?以下内容在Ruby Slim中有效,但在Elixir的Slime中似乎无效
javascript:
window.currentUser = { username: @username }
可以使用{}注入值:
您可能希望对变量进行JSON编码,以便将字符串作为双引号转义JavaScript字符串插入。使用毒药,您可以:
javascript:
window.currentUser = { username: #{
在模板中:
<%= @key %>
给我nil。根据文件
@实际上是一个将@key转换为Map.get(assignments,:key)
那么为什么上面返回的nil不是预期值?
更让我困惑的是,当我打字的时候
conn.assigns.key
在视图中,它为我提供了所需的值。在模板中@conn.assigns和assigns是两个不同的东西赋值映射来自EEx,它启用了@var语法conn.assigns来自插头,是不同插头中所需数据的公共存储空间。
调用Phoenix.Cont
我现在正在努力在我的伞式应用程序的另一个应用程序中使用GenServer
结构:
应用程序:
a项目
b项目
Project_a和Project_b都是--sup应用程序,我想在Project_b中使用Project_a中的GenServer。我已将该项目包含在我的deps.exs文件中,但我不知道下一步要做什么
如果我打开observer,我会在菜单中看到这两个应用程序,但由于project_b无法使用project_a,我会不断出错
有人知道我忘记了什么吗?我忘了在project\u b
我有一个地址列表,我需要修复记录,一些记录以门牌号为范围,我需要将其拆分为多个记录。我如何列举清单并修复/复制记录
defmodule EnumTesting do
def list_stuff() do
list = [ %{street: "street", nr: "2" }, %{street: "street", nr: "4" }, %{street: "street", nr: "6-10" } ]
list |> Enum.filter(&ne
创建流之后,人们通常会运行流来开始流!听起来很直接
比如:
但是,我如何才能推迟运行流,直到我需要运行它?我能看到的唯一方法是在分散引用中注册流,然后使用该引用运行流
这可能吗?怎么做
编辑
以下是我试图做的:
File.Stream返回一个值,您可以根据需要多次存储和运行该值。流作为函数的组合在Elixir中实现。像这样的
stream_maps = Map.put(%{}, client_tag, File.Stream!(path) )
过了一段时间
stream_maps |>
如何对OR逻辑进行条件验证,检查2个值中是否有1个值存在,或者两个值都存在
因此,例如,如果我想检查以确保电子邮件或移动字段已填充。。。我希望能够将列表传递到validate\u required\u inclusion的字段,以验证列表中至少有一个字段不为空
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:email, :first_name, :last_name, :password_h
我必须使用外部API来生成屏幕截图。在第一步中,我触发屏幕截图的生成并接收一个job\u id。然后我必须等待并可以下载带有给定作业id的屏幕截图。不幸的是,我不知道我要等多久。有时结果在10秒后就准备好了,有时则没有。如果未准备好,函数image\u url/1将返回nil。如果准备就绪,则返回图像URL
目前我使用45秒的睡眠时间,这是次优的
我不明白如何使用递归的概念来实现函数生成屏幕截图/1,首先运行新的作业id(url),然后尝试图像url/110次,其间或直到不是nil
我如何用递归
据说函数是Elixir/Erlang中的一等公民。函数可以作为消息传递吗
在探索Elixir API时,我遇到了Agentget_和updateagent、fun、timeout\\5000。我认为get和update操作是原子的。我认为这是唯一可行的方法,如果乐趣是在代理进程上运行的,而不是在与代理交互的客户端进程上运行的
如果fun在客户端进程上运行,那么它会引发很多关于保证原子性和客户端进程失败的问题。是的,您可以
从
函数fun被发送到代理,代理调用传递代理状态的函数
代理进程本身运行函
我试图用长生不老药解决经典的起泡问题。我找到了几种不同的方法来解决这个问题,但最好的方法是:
fizzbuzz = fn
(0, 0, _) -> "FizzBuzz"
(0, _, _) -> "Fizz"
(_, 0, _) -> "Buzz"
(_, _, a) -> a
end
fb = fn n -> fizzbuzz.(rem(n, 3), rem(n, 5), n) end
fb.(10)
我现在的问题是我想调用fb匿名函数100
我有一个AgentTest作为保持状态的工作人员,还有一个Supv作为监视器AgentTest
defmodule AgentTest do
use Agent
def start_link(state) do
Agent.start_link(fn -> state end, name: :test)
end
def incr do
Agent.get_and_update(:test, fn state -> {state, state +
标签: Elixir
phoenix-frameworkedeliverdistillery
当我运行mix-edeliver-build-release-production--verbose时,我遇到了这个错误
A remote command failed on:
deploy@80.111.111.80
但是当我登录到服务器时,Elixir(和Mix)似乎安装得很好
ssh deploy@80.111.111.80
deploy@80.111.111.80:~$ mix -v
Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:4
所以我有一个只做json的凤凰城大项目。早午餐等甚至没有安装。现在,我们正在创建需要SEO友好的面向公众的页面,因此我们将使用标准浏览器管道和呈现html模板等。这个面向公众的应用程序可能会部署到自己的实例中并独立扩展。我想分享我的核心模式/模型代码和一些UTIL。我应该如何设置?雨伞单独的项目?(但仍将采用相同的回购协议)
我收到了一些建议,建议我开始使用雨伞应用程序,但我有两个问题:
1) 如果我为不同的端口配置了它们,从根目录运行mix phx.server会同时运行它们吗
2) 我是否应
有没有可能将健忘症用于酿酒厂。由于Dillery版本中没有mix,因此我不确定如何创建mnesia db。提供了一些有关运行迁移等任务的指导
似乎只需调用数据库模块create功能:
def run(args) do
options = parse_args(args)
copying = parse_copying(options)
db = ensure_database_module(options[:database])
if options[:sc
如果模块名为字符串,如何调用模块的方法?我知道如何使用apply。如果模块的名称是字符串,如何使用它?您必须将字符串转换为atom。所有Elixir模块都位于Elixir名称空间中(基本上是为了防止名称冲突),因此表示Elixir模块的原子都以Elixir开头。:
iex(1)>defm模块,do:def foo,do:IO.puts“BAR”
iex(2)>name=“M”
iex(3)>apply(String.to_atom(“Elixir.”名称),:foo,[])
酒吧
您必须将字符串
我的应用程序中有一个Foo模式,其中包含许多模式栏
我想要一个函数,它为一个Foo获取一个id,创建该Foo的一个副本并插入它,然后创建所有与新Foo关联的条的副本。给定一个具有多个子条的Foo,此函数将一次性复制该Foo和所有这些条
我使用EXTO.Multi来处理类似的事情,但我不确定如何设置它来执行不同数量的操作。到目前为止,我有:
resolve fn (%{foo_id: foo_id}, _info) ->
oldfoo = Repo.get!(Foo, foo_id)
我正试图围绕Flow构建一个具有以下特征的并行处理管道:
传入事件的形式为{offset,%{“id”=>id}
偏移量是一个单调递增的整数
id是一个任意数字
我只需要保留每个id的顺序,这样就可以并行计算出不同的id。因此划分
下面是一个示例流,用于生成无限数量的这些元组:
stream = Stream.unfold(1, fn i ->
offset = i+1
element = {offset, %{"id" => Enum.random(1..10_000)}}
标签: Elixir
introspectionguard-clause
给定一个模块有两个具有相同算术性但不同保护子句的函数,我(理想情况下)如何看到这些子句是什么,或者至少有两个函数
defmodule Test do
def greet(name) when name == "foo" do
IO.puts("Hello, bar")
end
def greet(name), do: IO.puts("Hello, #{name}")
end
Test.\uuu info(:functions)不起作用,因为它只返回[greet:1]您可
标签: Elixir
phoenix-frameworkecto
如果第二个测试用例在第一个测试用例之后运行,那么它将失败,因为数据库具有在第一个测试用例中创建的ReservationInfo条目
defmodule MyProj.TestABC do
use ExUnit.Case
alias MyProj.Models.ReservationInfo
alias MyProj.Repo
test "Create Coordinates" do
reservation_result = Reservation
假设我现在有这样的东西:
session = conn.assigns[:session]
user = User.find_by_id(session.user_id)
我怎么能在这个场景中使用|>系统
conn.assigns[:session]
|>User.find_by_id
如何传递以前的调用并从中获取属性用户id
我还看到人们使用|>并且我认为他们也在指定算术,这是如何工作的
some_code
|> some_function(&/2)
some
查看下面的select()行:
def query_group(user, group_by, filters \\[]) do
from(Click)
|> select([c], {c.^group_by, count(c)})
|> where([c], c.link_user_id == ^user.id)
|> where([c], ^filters)
|> group_by([c], ^group_by)
|&g
此代码用于向messages变量添加字符串,然后在http响应中将其发送回。现在,没有任何内容添加到messages变量中。:ok和:error块中的代码行不再运行。我现在应该在哪里处理错误和成功案例,以添加关于错误和关于成功的消息
messages = {}
changeset = Api.UserProduct.changeset(
user_product, %{:voted_vegan => true}
)
case Api.Repo.update(ch
标签: Elixir
phoenix-frameworkcowboy
我已经在我的phoenix应用程序中实现了websocket。在成功连接并加入我的websocket之前,但现在我遇到了以下错误:
error] Ranch listener MarketPlaceDisbursementServiceWeb.Endpoint.HTTP had connection process
started with :cowboy_clear:start_link/4 at #PID<0.499.0> exit with reason: {%Jason.D
我想从if-else语句的else部分调用一个plug
我尝试调用plug SpiderWeb.AdminAuth,但是我得到了ArgumentError:无法在函数/宏中设置属性@plugs。
我还尝试了SpiderWeb.AdminAuth.call(conn),但在get/user/1处出现了错误UndefinedFunctionError:function SpiderWeb.AdminAuth.call/1未定义或私有。
我也可以在else部分重写整个插件,但这违背了DRY原则
这是用
我正在尝试打印一个值到控制台,而不使用换行符。例如,如果我尝试以下内容
IO.puts("Hello ")
IO.puts("World")
我希望它打印成一行
Hello World
编辑:我需要做的是直接从以下位置打印,不带尾随CR:
write/2的行为类似于put/2,但不添加换行符。您可以使用字符串插值来获得更好的效果:
greeting = "Hello"
subject = "World"
IO.puts "#{greeting}, #{subject}!"
输出:
Hel
我有一个简单的todo/author模型,其中todo有一个author\u id字段
模型定义如下:
defmodule TodoElixir.User.Author do
use Ecto.Schema
import Ecto.Changeset
schema "authors" do
field :email, :string
field :name, :string
field :password, :string, virtual: true
我有3个总括项目:
业务逻辑;
RESTAPI;
网状物
我在root mix.exs中有以下配置:
问题是每次运行mix release_name时,运行时配置都是从根项目加载的,而不是从指定的项目加载的
我甚至尝试通过以下方式加载其他配置:
for config <- "../apps/*/config/releases.exs" |> Path.expand(__DIR__) |> Path.wildcard() do
import_config config
end
标签: Elixir
phoenix-frameworkphoenixphoenix-live-view
我有一个Phoenix(1.4)LiveView(0.8)应用程序,我希望在启动服务器时自动打开浏览器窗口。有人知道这是否可以做到,如果可以,如何做到
我试着看看我是否可以像在FE应用程序中那样在Webpack中配置该选项,但我无法让它正常工作
谢谢 最清晰的方法是使用自定义的mix任务,唯一的问题是如何实际打开浏览器。这已在以下方面实施:
现在剩下的就是创建一个自定义任务,从配置中获取主机和端口,并在其中调用phx.server任务,然后打开浏览器:
defmodule Mix.Tasks.H
我有一个简单的、独立的模块,可以产生:
elixir impl_bad.ex
** (ArgumentError) argument error
长生不老药
**(ArgumentError)参数错误
在iex中:
=> iex
Erlang/OTP 23 [erts-11.1] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1] [hipe]
Interactive Elixir (1.9.4) - press Ctrl
遵循本教程
是什么导致了这个问题?
是什么导致了这个问题?
是什么导致了这个问题?
是什么导致了这个问题?
是什么导致了这个问题?
是什么导致了这个问题?
是什么导致了这个问题
代码:问题中的写作比例是一个愚蠢的验证我使用的是一个过时的ecto版本(2.2)
我以为我在3号,但我没有
alias Ecto.Multi
alias ElixirRest.Account
import Ecto.Query, only: [from: 2]
require Logger
def
如果我启动phoenix应用程序的一个实例并发出请求,我的插件将相应停止。然而,在测试环境中执行相同的操作时,halt不会阻止下游的插件被调用,这会导致测试失败。我认为问题可能来自我在测试期间调用路由器的方式。下面是我使用的helper函数,它大量借用了phoenix框架中的类似函数:
def call(router, verb, path, params \\ nil, headers \\ []) do
add_headers(conn(verb, path, params), he
标签: Elixir
phoenix-frameworkecto
我想知道是否有人能帮我解决我一直在努力解决的问题
长话短说,我有一个模型“用户”和另一个“个人资料”。配置文件属于用户,并且用户有一个配置文件。到目前为止一切都很好
当用户注册时,我需要用户模型的电子邮件和密码以及属于配置文件模型的名字和姓氏。
那么我的问题是。。如何在myRegistrationController中插入带有配置文件的用户记录
以下是控制器当前的外观(基于我从Jose关于关联和嵌入的帖子中收集到的内容-
def create(conn, %{"user" => user_
在开发Rails应用程序时,我经常使用需要供应商前缀的特定样式的跨浏览器兼容性
Phoenix Framework是否有一个等效的“gem”(或“plug”)或包(提供autoprefixer功能的东西)?我对此表示怀疑。你不需要菲尼克斯为你这么做。我怀疑。你不需要菲尼克斯为你做这些,只要使用它或其他任何东西就行了。看看这个:
这应该可以让您在早午餐时使用Autoprefixer
我还没试过,但它在明天的名单上。
我会更新,如果我遇到任何抓到的,但它似乎很简单 看看这个:
这应该可以让您在早
我正在试验ElixirExto,现在我需要在代码中实现从STDIN复制。我在github上的postgrex.ex中找到了一个示例:
Postgrex.transaction(pid, fn(conn) ->
query = Postgrex.prepare!(conn, "", "COPY posts FROM STDIN",[copy_data:true])
stream = Postgrex.stream(conn, query, [])
Enum.into(File.s
标签: Elixir
Jwt
phoenix-frameworkemail-verification
我正在一个实现用户身份验证(使用Comeonin和Guardian)的网站上工作
我正在实施电子邮件验证。我想我可以利用Guardian中的函数,使用JWT令牌生成url。根据,这似乎是一个合理的解决方案(只要url使用https并且令牌在相对较短的时间内过期)
以下是我迄今为止编写的代码:
def email_verification( user = %User{} ) do
if ( user.email != nil ) do
claims = Guardian.Claims.
我正在读《编程长生不老药1.3》(PragPub),偶然发现了一些对我来说没有多大意义的东西。在第42页,作者描述了闭包,指出
greeter = fn name -> (fn -> "Hello #{name}" end) end
返回的函数“记住”提供的name参数的值。这就是闭包的本质。然而,在2页之后,他给出了以下示例:
defmodule Greeter do
def for(name, greeting) do
fn
(^name) ->
标签: Elixir
otperlang-supervisor
假设我设置了以下主管树,其中一个父级启动一个子级,子级启动其孙子级:
defmodule NestedSupervisorTree do
# this will be the top line supervisor
use Supervisor
def start_link, do: Supervisor.start_link(__MODULE__, :ok, name: __MODULE__)
def init(:ok) do
children = [
标签: Elixir
phoenix-frameworkecto
我正在尝试使用由提供的tsvector扩展。但是我如何在我的Phoenx项目中实际使用它呢?这是我在dev.exs中的设置
config :project, Project.Repo,
adapter: Ecto.Adapters.Postgres,
username: "postgres",
password: "postgres",
database: "project_dev",
hostname: "localhost",
pool_size: 10,
ext
我有一个通过Cronjob触发的函数。这个cronjob在晚上10:00pm启动函数,但是假设函数没有正确处理所需的数据。我想失败,但让功能重试1小时。我将如何处理这个问题
代码:
从这段代码中可以看出。如果查询没有找到问题,我会将case语句发送到failure,但在该faily case中,我希望在1小时内返回函数。我怎样才能用长生不老药/凤凰做到这一点?谢谢你的帮助 您可以使用genserver发送消息,在1小时后执行检查问题
如果服务器关闭,计时器将不会继续倒计时
如果给定的目标是PID
上一页 1 2 ...
45 46 47 48 49 50 51 ...
下一页 最后一页 共 125 页