标签: Elixir
phoenix-frameworkecto
运行访问多个数据库的测试的正确方法是什么
我正在编写一个小API,它必须访问多个数据库
我定义了两个repo,每个repo包装一个不同的数据库:
# config/dev.exs, config/test.exs, ...
config :my_app, MyApp.DbStatusRepo,
adapter: Ecto.Adapters.Postgres,
....
config :my_app, MyApp.DbDefinitionRepo,
adapter: Ecto.Ada
我想随机路由传入请求
到目前为止,我只想到了这个:
defmodule Test.PageController do
use Test.Web, :controller
plug :assign_random_number
def index(%{assigns: %{random_number: random_number}} = conn, _params)
when random_number > 0.1 do
render conn, "index.
标签: Elixir
erlang-shellelixir-iex
在IEx 1.2.4中键入()时,光标将“跳”到匹配的括号中1s并向后移动。虽然它不是真正的跳跃,但它的眼睛有点恼人。有没有办法在IEx中禁用此功能
编辑:
虽然问题最初与IEx有关,但实际问题(正如@tkowal在下面的评论中指出的)实际上是在IEx运行的Erlang Shell中。因此,我在这个问题中添加了erlang shell标记。光标跳跃发生在中(在erlang的stdlib中)。具体地说,它似乎发生在第205行到第213行,在这里,)、]和}似乎被捕获并转换为移动光标的指令(然后通过
标签: Elixir
phoenix-frameworkecto
如何在给定的ID列表中查找帖子
这不起作用:
posts = Post |> where(id: [1, 2]) |> Repo.all
Rails中的示例:
Post.where({ id: [1, 2]})
# SELECT * FROM posts WHERE id IN (1, 2)
以下方面应起作用:
posts = Post |> where([p], p.id in [1, 2]) |> Repo.all
接受的答案为我提供了未定义函数p/0,因此我得
标签: Elixir
phoenix-frameworkecto
我的Users表中的用户名和电子邮件都有一个标准的唯一性约束。现在,我正在测试我的UserController在用户创建期间是否存在重复,我的模型上的unique\u约束在单元测试期间似乎不起作用,但在手动测试中效果良好。我做错了什么
迁移:
defmodule MyApi.Repo.Migrations.CreateUser do
use Ecto.Migration
def change do
create table(:users) do
add :usern
我有一段简单的代码,在大多数语言中都非常简单。我真的很想知道怎么做。我如何将其转换为长生不老药而不得到可怕的变量不安全警告
dc = 1
sd = 5
sdi = 6
calc = 1
bc = 1
dd = 10
if (dc == 1)
csd = sd
bd = sd
p = sdi
if (calc == 1 && bc != 1) do
count = 1
else
count =
我只有两个问题:)
怎么了
我如何在不询问Stackoverflow的情况下了解问题所在
长生不老药代码:
导入WxConstants
...
wx=:wx.new
frame=:wxFrame.new(wx,wxID_ANY,“生命的游戏”,大小:{500500})
输出:
** (FunctionClauseError) no function clause matching in :wxFrame.new/4
gen/wxFrame.erl:111: :wxFrame.new({
标签: Elixir
phoenix-frameworkecto
在Phoenix Framework应用程序中,我有一个型号产品,字段为名称。我想创建一个混合任务,列出所有产品名称
在Ruby on Rails中,这是解决问题的代码:
namespace :list do
desc "List all products"
task products: :environment do
Product.all.each do |product|
puts product.name
end
end
end
在凤凰城,我甚至
我们最近将phoenix应用程序部署到生产环境中,但有时会间歇性出现此错误
Error in process #PID<0.2328.0> on node :"competition@127.0.0.1" with exit value:
{:function_clause,
[{:cowboy_protocol, :parse_method,
["",
{:state, #Port<0.5743>, :ranch_tcp, [:cowboy_router
标签: Elixir
integration-testing
我正在使用(0.17.0)对phantomjs(2.1.1)、最新的Elixir(1.4.5)和Erlang(20)进行验收测试。我已经写过,每一个单独运行时都通过了,但是当我一起运行时(通过混合测试测试/验收),它们失败了,因为页面上应该显示的内容没有通过。就好像所有的测试都在同一个浏览器中运行,即使Wallaby应该“为您管理多个浏览器”
我相信我已经根据设置好了一切,尽管我没有使用async:true运行测试,因为我的应用程序使用套接字和Phoenix.exto.SQL.Sandbox。要
我正在学习Elixir,我想知道使用apply调用模块函数的好处是什么:
apply(Enum, :reverse, [[1, 2, 3]])
而不是使用常规调用:
Enum.reverse([1, 2, 3])
什么时候第一个更好?当模块的名称、函数以及希望传递给它的参数的数量在编译时已知时,就不需要调用apply/3。如果在运行时选择了其中任何一个选项,apply/3是进行适当调用的唯一方法。在某种程度上,它就像“eval”函数的一个非常有限的子集:它允许您将模块和函数的名称以及要传递给
在Elixir 1.5中,我曾经使用\uuuu info\uuuu函数,并将:exports原子作为种类参数
在1.6中:导出已作为选项删除。我查看了1.6版本的变更日志,没有看到任何关于变更的内容
# Used to work
MyModule.__info__(:exports)
现在怎么做
1.5文件:
1.6文档:您可以使用MyModule.module\u info(:exports),这是Erlang变体。闻起来像是清理了一些无用的复制品。1.5文档明确引用了Erlang模块文档
我正在Phoenix编写一个查询,我需要检查字段的位置false
例如where(查询[x],x不是真的)
令我惊讶的是,关于如何习惯性地检查elixir中的错误或不正确的信息并不多
为了更清楚起见,请使用一些psuedocode:
iex(1)> x = nil or x = false
iex(2)> x is not true #desired idiomatic expression
> true
你可以这样做:
x = false
if x do
"truth
我目前有一个名为leagues\u questions的表,但在开发过程中,我意识到该表应称为seasures\u questions,并引用seasure表,而不是question表。我正在努力理解做出这一改变的最佳方式。我的第一个想法是创建一个新的迁移来修改这个表。以下是我的尝试:
旧移民:
新移民:
我还需要更改表名,但我想我可以处理
我认为这不会奏效,我甚至还没有真正尝试过,因为我不知道如何更改引用部分。如何在迁移中修改表的references列?要重命名需要执行的列,请执行以下操作
r
假设我有这个
%{
“联系人全名”=>[“简”、“乔”、“工作”],
“联系人手机号码”=>[“1234”、“5678”、“9012”],
“联系人关系”=>[“兄弟姐妹”、“员工”、“员工”]
}
我如何遍历该地图,获得
“简,1234,兄弟姐妹”,“琼斯,5678”,“东西”,等等
试用
Enum.each(联系人,fn{k,v}->
IO.puts(“{k}-->{v}”)
(完)
但这产生了
联系人全名-->JaneJoeJob
联系人手机号码-->123456789012
联系人关
我生成了两个模型地区和商店。
商店属于州
我会犯错误
关键字:在以下位置找不到地区名称:
未加载
我编写了以下代码
地府
defmodule Sample.Prefecture do
use Ecto.Schema
import Ecto.Changeset
schema "prefectures" do
field :prefecture_name, :string
has_many :shop, Sample.Shop
times
如何使用()访问Enum.split_之后的第一个列表
我只想使用[4,2,0]访问列表,并通过另一个Enum.filter()函数运行它
差不多
m =
Enum.split_with([5, 4, 3, 2, 1, 0], fn x -> rem(x, 2) == 0 end)
|> Enum.filter(fn -> ) //Filter only first list after split
尝试elem(元组,索引)
或者,您可以只使用Enum.filte
我希望有一个Elixir映射,其中任何键都有特定类型的默认值。使用或实现类似功能的最佳方法是什么?最简单的方法是使用Map。获取/3如下:
iex(1)> map = %{foo: "bar"}
%{foo: "bar"}
iex(2)> Map.get map, :foo, "baz"
"bar"
iex(3)> Map.get map, :fiz, "baz"
"baz"
如果不希望每次都指定默认值,可以创建“隐藏”默认值的函数:
iex(4)> my_get =
标签: Elixir
phoenix-frameworkecto
我正在开发我的第一个Phoenix应用程序,并尝试使用Exto迁移创建我的第一个DB表。但是,每当我尝试使用mix-exto.migrate-Repo运行迁移时,都会出现一个错误:
(elixir) lib/regex.ex:157: Regex.match?(~r/^[^:\/?#\s]+:\/\//, nil)
(ecto) lib/ecto/utils.ex:29: Ecto.Utils.parse_url/1
(ecto) lib/ecto/repo/backend.ex:16: Ect
标签: Elixir
brunchphoenix-frameworkelixir-mix
我正在使用Phoenix 0.14.0,并计划使用reactjs创建用户界面
我这样做的方式就是将react.min.js放在web/static/vendor文件夹中。
问题是,我希望在开发中使用react的非小型版本,因为它有调试代码
当我使用react.min.js时,缩小后的app.js的最终大小约为150K,如果我使用react.js时,最终大小为550K,我不认为这是一个可以忽略的差异
有没有一种方法可以在phoenix中使用不同的静态文件进行生产和开发?您可以将常规的react.j
我正在使用Enum.reduce,试图在reduce中添加一些调试输出,但它似乎没有在Enum.reduce/2中输出。在Enum.reduce/3中按预期工作
nodes = [%{"value" => "x"}]
Enum.each(nodes, fn (node) ->
IO.puts "Each"
IO.inspect node["value"]
end)
Enum.reduce(nodes, fn (node, acc) ->
IO.puts "Red
我已经在elixir中定义了一些结构,现在我想以我决定的方式比较这些结构
基本上我想写>,>=,不,这是不可能的。但是,您可以使用Enum.sort/2或Enum.sort\u by/2以任何方式进行排序。例如:
iex> Enum.sort_by [%{name: "foo"}, %{name: "bar"}], fn data -> data.name end
[%{name: "bar"}, %{name: "foo"}]
您也可以在模块中定义一个比较函数来进行适当的比较,类
如何在EXTO中使字段唯一
我认为它与Ruby中的活动记录相同,但它似乎不是您想要使用的。这与活动记录不同,因为它使用数据库来确保唯一性。活动记录将查询具有相同值的记录,如果返回任何记录,则将失败。这有一个竞争条件,如果在获取以检查唯一性和插入记录之间插入一个值,则最终会出现重复数据或引发错误(取决于是否在数据库上设置了索引。unique\u constraint/3没有此竞争条件
值得注意的是,由于在尝试插入之前不知道唯一性,因此唯一约束将在验证后发生。不可能同时显示验证和约束错误
您正在使用
所以我一直在玩长生不老药,我有点困惑:
iex> [ 1 | [ 2 ] ] // [ 1, 2] (expected)
iex> [ 1 | 2 ] // [ 1 | 2 ] (huh?)
我的困惑在于为什么第二个版本会这么做。我知道2不是一个列表,所以它不能将“头”和“尾”连接起来,但是,在我看来,当尾不是列表时,它应该抛出一个错误。我一直在想一个有这种行为的用例,但都是空手而归。如果有人能解释为什么这是理想的行为,我会非常感激。谢谢 列表的尾部实际上可以是任何术语,而不仅仅是
标签: Elixir
phoenix-frameworkecto
我怎样才能与星外2建立多对多关系?作为一个例子,我想
创建可以包含多个类别的帖子。这些类别已经存在。例如:
[%Category{id: "1", name: "elixir"}, %Category{id: "2", name: "erlang"}]
我用的是外星2β0。示例项目称为ECOTO2
我定义了两个模型:
defmodule Ecto2.Post do
use Ecto2.Web, :model
use Ecto.Schema
schema "posts" do
对长生不老药还不熟悉,但到目前为止还很喜欢:)
我的许多混合任务都依赖于HTTPotion
我的mix.exs文件被声明为
def application do
[
applications: [:logger, :cowboy, :plug, :httpotion, :poison],
mod: {BiddingAgent, []}
]
end
因此会自动调用HTTPotion.start。但是,当我运行需要调用http请求的任务(如mix c
长生不老药的证明文件
除了Elixir文件扩展名.ex外,Elixir还支持
.exs文件,用于编写脚本。Elixir对这两个文件的处理完全相同
当然,唯一的区别在于意图。ex文件是指
编译的while.exs文件用于编写脚本,无需
汇编
但我仍然不确定何时使用哪种文件类型。.ex和.exs的缺点和用途是什么?.ex用于编译代码,.exs用于解释代码
例如,ExUnit测试位于.exs文件中,这样您就不必每次更改测试时都重新编译。如果您正在编写脚本或测试,请使用.exs文件。否则,只需使用.ex
标签: Elixir
phoenix-frameworkectotirexs
我们正在寻找一种最好的方法,将Elastic整合到我们的项目中,同时保留phoenix Exto提供的所有优点,即变更集验证和phoenix.HTML.Form兼容性
有了Ecto 2.0,这项任务似乎比以往任何时候都要容易
因此,问题是:
是否有NoSQL外部适配器的框架
初步要求是什么?陷阱
这种适配器处理EMBBED的最低要求是什么
Michal Muskala写了一篇关于为Exto创建NoSQL适配器的好文章:
这是三个实质性问题,每个问题都有各自的特点。也许你想从第一个问题开始,然后
我有一个长生不老药伞形项目。此项目中的每个应用程序都可以使用mix-escript.build编译成可执行文件
我试图从伞形项目的根运行此命令,但出现以下错误
** (RuntimeError) Trying to access Mix.Project.app_path for an umbrella project but umbrellas have no app
我明白为什么这行不通。因此,尝试在伞形项目的根目录下创建自定义混合任务。由于根目录没有lib目录,我添加了一个目录,并在其中创
我通过以下方式在Ubuntu中运行bash命令:
不幸的是,系统输出太重,所以我不想看到它,尤其是在我的测试中。如何使System.cmd不出现在我的日志中?在测试中捕获(而不是显示)输出
为了演示,让我们首先执行一个System.cmd,而不捕获IO:
iex(1)> hostfun = fn -> System.cmd("hostname", [], into: IO.stream(:stdio, :line)) end
#Function<20.52032458/0 in
标签: Elixir
phoenix-frameworkecto
我正在使用elixirs Arc和Ecto以及AmazonS3来存储我以前下载的文件。一切似乎都正常,它们最终在S3上运行。但我的数据库中没有存储任何内容。因此,如果我试图生成一个URL,我总是会得到默认的URL
这是我存储文件的方式:
iex > user = Repo.get(User, 3)
iex > Avatar.store({"/tmp/my_file.png", user})
{:ok, "my_file.png"}
但是user.avatar字段仍然为零
我的用户模
我想在Phoenix中调试控制器,就像我以前对Rails所做的那样,只需将binding.pry放在任何我想放置断点的地方,因此,我使用IEx.pry对Phoenix进行了同样的尝试,如下所示:-
defmodule Rumbl.UserController do
use Rumbl.Web, :controller
require IEx
def index(conn, _params) do
IEx.pry
users = Repo.all(Rumbl.User
我正在尝试使用Elixir语言编写简单的应用程序HTTPoison.get返回HTTPoison.Response带有body键的结构。是否可以将此逻辑包含到管道中
Repo.one(Site).sitemap_url
|> HTTPoison.get!
|> ...
|> Floki.find("sitemap loc")
|> Enum.map(fn(element) -> Floki.text(element) end)
如前所述,结构只是映射。因此,
创建嵌套管线时,它会为成员创建嵌套管线
resources "/my_items", ItemController do
get "/route123", Item.SubItemController, :route123
end
路线将为“/my_items/:id/route123”。如何为集合创建相同的嵌套管线
“/my_items/route123”资源中没有收集路线,但您始终可以这样做
get "/my_items/route123", Item.SubItemC
对于我的特定用例,如何控制伞式项目中的哪些应用程序启动:
仅当某些应用程序尚未在群集中运行时才启动它们(例如单例应用程序)
仅根据节点名称启动某些应用程序(例如,某些应用程序可能使用具有IP地址限制的远程系统)
打开控制台时不要自动启动任何应用程序(例如iex-S mix)
谢谢您可以通过使用OTPs分布式应用程序功能来处理#1。您需要像这样配置内核应用程序:
config :kernel, :distributed, [
{:app1, 5_000, [:"node1@<x.x.x.
标签: Elixir
phoenix-frameworkgen-servergenstage
如果我的GenStage的handle\u demand/2方法如下所示:
def handle_demand(demand, _state) when demand > 0 do
case Queue.dequeue do
nil ->
Logger.debug("Queue empty.")
{:noreply, [], []}
{job, updated_queue} -> {:noreply, job, updated_que
我需要在应用程序稍后开始使用加密验证时加载证书文件。我不想每次调用正在使用其内容的函数时都读取此文件,加载此文件一次并多次使用的最佳方法是什么?最终通过使用GenServer解决了这个问题,该GenServer的密钥加载在其init函数中并存储在其状态。不要忘记指定@external\u resource:看起来您需要它。
如果我的Phoenix/Elixir应用程序中已经有资源“供应商”,并且我想在其下面添加资源“设备”作为嵌套资源,那么如何使用mix phx.gen.html生成资源?我遇到的问题与路径函数的助手有关。即,当我想要的是供应商设备路径时,设备控制器具有设备路径功能
如果顶级生成器无法工作,我可以使用什么方法获得此功能?如果答案是手工编码,那就好了
更新为了澄清,我打了个电话mix phx.gen.html目录设备名称:字符串vendor\u id:references:vendors,其中Cata
我想使用使用xvfb(虚拟X服务器)的节点脚本。我有这个命令:
xvfb-run -a --server-args="-screen 0 1366x768x24" node something.js
在候机楼工作。但当我试图把它改写成长生不老药时:
System.cmd“xvfb运行”、[“-a”、“--server args=\”-屏幕0
1366x768x24\“”、“节点”、“something.js”]
然后我的错误是,我需要xvfb。这与我运行node something.js时遇
是否允许我在Elixir中执行此操作,例如对命名列表排序
list = [9,1,2,3]
Enum.sort(list)
产生
[1,2,3,9]
因为我不知道列表中的数字是什么,所以我无法具体输入它们。如果通过对命名列表进行排序,您想对其进行适当排序,我认为这是不可能的,因为在elixir中值是不可变的
但是,您可以重新绑定原始变量,使其指向新值:
iex(1)> l = [9,1,2,3]
[9, 1, 2, 3]
iex(2)> l = Enum.sort(l)
[1,
比如说,我喜欢
var1 = %{someprop: 123}
IO.inspect var1
我需要的行的背景是黄色和文本的颜色是黑色。如何操作?可以使用IO.ANSI中的函数更改文本或其背景的颜色。您可以定义自己的inspect函数,该函数将背景更改为黄色,文本更改为黑色,并打印检查的值:
defmodule A do
def my_inspect(term) do
IO.puts IO.ANSI.format([:yellow_background, :black, insp
a、 exs:
b、 exs:
defmodule A do
def greet, do: IO.puts "hello"
end
~/elixir_programs$ tree .
.
├── a.exs
├── app1.exs
├── b.exs
....
结果:
defmodule B do
import A
def say_hello, do: greet
end
因此,如何使用限定名调用另一个模块中定义的函数:
b、 exs:
defmodule A do
d
我试图使用Erlang wxImage库操作Elixir中的“test.jpg”图像,但我得到了一个错误。我不知道如何将array/const输出转换为列表,以便在Elixir中使用它
我也不知道为什么在语法似乎正常的情况下会出现子句函数错误
defmodule Imedit2 do
def readimg(image) do
{:ok, _file} = File.open("happy737.txt", [:write])
IO.puts("hi there")
我试图通过调用genServer模块“Cache”来创建“Cache warter”,以便在应用程序启动时运行一次
我创建了一些代码:
GenServer“Cache warter”,用于在应用程序启动时处理单个异步调用,配置为[restart::temporary]。其主要思想是在cast之后返回{:stop,:normal,state},以关闭进程
defmodule TlgmBot.Application do
...
def start(_type, _args) do
标签: Elixir
integration-testingex-unit
我有一个测试模块,一个接一个地运行同步测试。
我希望在所有测试完成后清除测试对数据库所做的所有更改,即我希望数据在一次测试与另一次测试之间保留在数据库中。
我的应用程序正在使用PostgreSQL数据库(MyRepo)。
当我在setup\u all函数中使用exto.Adapters.SQL.Sandbox.checkout(MyRepo)时,每次测试后都会清理数据库。
这是我的condig/test.exs文件:
config :my_repo, MyRepo,
pool: E
如何使用Elixir编写这个Ruby代码
value=0
如果条件为1,则值+=3
如果条件为2,则值+=2
如果条件为3,则值+=8
如果条件为4,则值-=3
如果要使用管道,可以创建助手函数
def add_if(总计、条件、值)do
如果是条件,则do:总计+值,否则:总计
结束
价值观=
0
|>如果(第1、3条)出现,则添加
|>添加_if(第2、2条)
|>如果(第3条、第8条)添加
|>如果(条件4,-3),则添加
根据您正在做的事情,在修改数据的任何函数中设置条件/逻辑也是有意
我通过HTTP请求下载图像,通过该请求我获得一个二进制图像,并将其写入一个文件,如
File.write(image_with_dir, image, [:binary]) |> File.close
获取HTTP请求并将其写入磁盘的整个操作都是在中完成的
|> List.flatten()
|> Enum.sort()
|> Task.async_stream(&(inline_process.(&1, images_directory)), max_
我想计算给定模型铁路上的可用路线
假设:
所有列车仅在定义的点(称为火车站)启动和停止
火车在旅途中不会相撞。不用担心
我们不必考虑火车的长度。我们假设它是一个火车头,占据了原子的空间
在一个火车站,只有一列火车可以停下来
一列火车可以在同一个火车站启动和停止
所有列车的起始位置和结束位置都存储在地图中。所有排列都存储在一个列表中。例如:
iex(1)> Trains.list_routes(["ICE"], ["Hamburg", "
标签: Elixir
phoenix-frameworkelixir-mix
我正在编写一个小的测试应用程序,它只在运行测试时存在,否则就不存在。因此,我希望webpack在启动时执行资产复制
在package.json中,我添加了
"scripts": {
"test_pack": "webpack --mode development"
},
现在我不知道如何正确地捆绑npm run test\u pack以在调用mix test时工作?在您的mix.exs中可以创建。可能已经有了test的别名
我是elixir的新手,我尝试做的是计算用户购物车中物品的总价格,并将其显示在购物车页面中。我写了一个函数,它是我在互联网上找到的函数的组合。我将感谢任何帮助
这是我购物车的index.html.eex
<h1>Your Cart</h1>
<%= if @books do %>
<ul>
<%= for book <- @books do %>
<li>
上一页 1 2 ...
17 18 19 20 21 22 23 ...
下一页 最后一页 共 125 页