我定义了一个与相关的环境变量,my mix.exs是
然后我用iex-S mix或mix_ENV=dev iex-S mix开始项目,我想用:application.get_ENV(:basic,:foo),它变成:undefined;并使用:application.get_all_env(:basic),它返回[包含的应用程序:[],没有env变量。我的问题是如何获取环境值?使用env=:application.get_env(:example,Mix.env)。这将返回在mix.exs文件中
我如何才能得到下面的字符串作为结果,从我得到它现在在长生不老药
['x1', 'x2']
我尝试了enum.join,但没有获得所需的数据
到
如果我理解正确,您应该使用第二个参数来定义“joiner”。这应该起作用:
arr = ['x1', 'x2']
Enum.join(arr, ",")
# => "x1,x2"
如果希望结果为char list,可以使用以下方法将其转换为一:
另一个选项是显式使用和添加joiner:
Enum.reduce(arr, &(&2
我希望在Elixir应用程序中以编程方式运行混合测试任务。这可以通过Mix.Tasks.Test.run/1完成,但如果不先设置Mix\u ENV环境变量而尝试执行此操作,则会导致任务拒绝运行
我们可以使用System.put_env/2设置env,但一旦应用程序找到对标记为test only的依赖性中定义的模块的引用,就会崩溃
在这种情况下,如何加载这些依赖项
我们可以使用System.put_env/2设置env,但是一旦应用程序找到对标记为test only的依赖性中定义的模块的引用,它就
我有一个phoenix route,我想向其发布一些表单数据,但是表单中大约有4个字段是可选的(表单由最终用户构建,因此这些字段可能不存在于POST有效负载中)
在路线的凤凰控制器中,您将如何处理此问题
例如:
我的表格有
Field1,
Field2
Field3 (optional)
Field4 (optional)
Field5 (optional)
发布表单必须始终具有Field1和Field2,但可以具有其他字段的任意组合
到目前为止,我的控制器代码如下:
def create(c
我试图从控制器中的Phoenix配置文件中获取一个值
# config.exs
use Mix.Config
config :app_name, AppName.Endpoint,
url: [host: "localhost"],
debug_errors: false,
root: Path.expand("..", __DIR__)
例如,Application.get\u env(:app\u name,:url)似乎什么也不返回
我遗漏了什么吗?正如您在中所看到的,c
我试图编写一组宏,所有这些宏都必须依赖于关于同一模块的知识,因此,我试图避免将此模块显式地传递给每个函数(实际上我很乐意这样做,但在学习该语言时,我正在尝试探索所有的可能性!)
所以我在写(目标是访问SomeOtherModule,或者在生成的foo函数中调用SomeOtherModule.foo)
但这显然不适用于apply/3模块,而不是模块名称的字符串或符号表示
基本上,正如标题所说,我正在寻找某种方法来实现它,以便对于给定的字符串或符号,它可以访问相应的模块或调用该模块的函数
另外,我知
对于文件查看器项目,我希望从iex运行
我想我能做到
Mix.Task.run "espec", [file_path]
这只起作用一次。我找到时间通过
Mix.Task.reenable "espec"
这似乎奏效了。但后来我遇到了一些奇怪的事情。假设我有file1\u spec.exs和file2\u spec.exs。无论我先运行哪个,都将在shell中运行
Mix.Task.reenable "espec"
Mix.Task.run "espec", ["file1_spec.exs
我正在学习编程Phoenix的书,在这一部分工作,以实现对经过身份验证的用户的登录/注销,但收到一个错误,我不知道该如何处理:
mix phoenix.server
Compiled lib/rumbl.ex
Compiled lib/rumbl/repo.ex
Compiled web/channels/user_socket.ex
Compiled web/web.ex
Compiled web/models/user.ex
== Compilation error on file web
基于哈希表的dict/map结构提供了O(1)查找时间。然而,我一直认为在长生不老药中,找到一个匹配的函数头比在地图上查找要快
例如,Elixir的String.Unicode,因此,通过查找upcase中预期为“ee”的函数头,可以回答“ee的upcase版本是什么”的问题
我不知道为什么这会比使用单个upcase函数头在地图中查找“é”更快或更高效
类似地,当在“元编程长生不老药”中演示如何构建I18n库时,Chris McCord为每个翻译键提供了自己的函数头,并说:
“通过为每个转换映射
标签: Elixir
erlang-supervisorecto
我正在尝试使用在Elixir应用程序中配置两个回购。
我需要帮助来配置它们,这样它们都可以通过一对一策略独立地进行监督;我认为这是正确的,这意味着使用它们的进程将重新启动
回购A和回购B
mix.exs设置:
def application do
[applications: [:logger, :tds, :tds_ecto, :ecto, :httpoison, :csvlixir],
mod: {MyApp, []}]
end
MyApp\u app.ex
下面的片段:
def
例如,我使用HTTPotion
它在mix.exs中如下所示:
def application do
[ applications: [:httpotion]
end
我是否需要在test\u helper或setup宏中提供HTTPotion.start()
有时我的测试失败,因为HTTPotion没有启动,所以我在helper中添加了这一行。然而,过了一段时间,它可能会再次失败,所以我需要删除它,编译,然后再次添加它,再次编译,然后再次工作
我不明白问题出在这个领域还是别的
我正在拆分一个字符上的字符串,并希望修剪结果拆分中的所有项目。我希望以下各项能够继续发挥作用:
我收到一个UndefinedFunctionError指示函数字符串。trim/0不存在。通过将匿名函数传递到Enum.map,可以轻松实现我想要的功能:
iex> "My delimited ! string of doom" |> String.split("!") |> Enum.map(fn (word) -> String.trim(word) end)
["My d
在这篇文章之后,我最终得到了调用#content_标签的HTML信息的嵌套元组
{:safe,
[60, "div", " class=\"form-group \"", 62,
[[60, "label", " class=\"control-label\" for=\"_username\"", 62, "Username",
60, 47, "label", 62],
[60, "textarea",
" class=\"form-control\" id=\"
我想对返回(atom,var | atom)元组的命令进行模式匹配
当返回{:error,:timeout}时,它抛出异常。为什么不:超时在模式匹配中被视为变量?怎么
如果出现{:error,data},我可以匹配任何原子吗?我想你应该研究一下如何使用\uu下划线字符。看看这个文档,@Chris,我知道。数据应该匹配:timeout。如果未注释,您的第三个分支将永远不会匹配,因为数据将匹配:超时。你能发一封信吗?如果run\u command()返回{:error,:timeout}@Dogbe
标签: Elixir
phoenix-frameworkecto
对于给定的简单变更集示例:
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:email, :password])
|> validate_required([:email, :password])
|> validate_something
end
如果前一个验证失败,那么跳过验证的最佳方法是什么
最明显的是将所有内容包装在if/else语句中,如:
defp validate_
我有一个elixir Genserver模块,它使用defstruct初始化,但我不知道如何在它自己的私有模块中访问来自该模块的数据
以下是初始化时使用的结构:
defstruct info: "test_data"
...
这是部分代码。如果一个不同的进程想要从中获取信息,它需要知道它的pid。状态会自动传递
def get_info(pid), do: GenServer.call(pid, :get_info)
...
def handle_call(:get_i
我试图解决Euler项目中的第四个问题,但遇到了一个问题。我需要将两个范围相乘,但我不知道如何使用长生不老药。以下是我的工作内容:
def is_palindrome?(n) do
Integer.to_string(n) == Integer.to_string(n)|> String.reverse
end
def multiply do
range_1 = 100..999
range_2 = 100..999
for n <-
我希望能够调用一个函数或我的谓词(在“where”中)。我正在尝试这个:
items = where(Item, [x], Item.my_predicate?(x))
# items = where(Item, [x], Item.my_predicate?(x) == true)
它抛出一个异常:
`Item.my_predicate?(x)` is not a valid query expression
如何修复它?我认为这是不可能的
作为一种方法,您可以创建一个单独的策略模块,该
我有三个这样的函数
check_file(url) |>test |> foo
with {:ok, file} <- check_file(url) do
file |> foo |> foo
else
IO.puts "KO, debug and stop!"
end
检查文件返回
{:ok,_} or {:error,_}
我有两个用于模式匹配的函数
def test({:ok,_}) do
IO.puts "ok";
e
标签: Elixir
aliasphoenix-frameworkecto
我有一把长生不老药的伞
它有两个应用程序。一个API控制器和视图,一个唯一的数据库(Ecto)以及所有与之配套的东西
我想做我自己的混合文件,这样我就可以把我的别名和进口在那里。在iex中,每当我必须在测试代码之前导入alias和imports的bucket负载时,这会变得非常烦人
我已经用.iex.exs创建了一个文件,并将其放在一个应用程序根目录下,运行iex-S mix
以下是我的混合文件的内容:
db.iex.exs
alias Db.{Repo,Document}
以下是文件夹结构:
标签: Elixir
phoenix-frameworkecto
我正试图把地图发到前端。如果我像下面的代码一样在键中放一个原子,它就可以正常工作
defp build_select(queryable, opts_select) do
if opts_select == nil do
queryable
else
Enum.reduce opts_select, queryable, fn ({k, v}, queryable) ->
a = from q in queryable,
select:
我试图将布尔值传递给隐藏的输入。但Postgrex似乎不明白我想传递什么
这是我的错误:
表格:
%>
如果只是传入true我会得到这个错误:Postgrex需要一个布尔值,得到“值”
如何将布尔值传递给隐藏字段?我发现我做错了什么:
我的用户联盟模式设置如下:
schema "users_leagues" do
field :commissioner, :string
end
schema "users_leagues" do
field :commissioner, :boole
标签: Elixir
phoenix-frameworkecto
我想要一个虚拟的assoc,这样我就可以进行多态assoc。所以我有一个与用户(和其他人)相关的图片模式。我将在回调中有一个位置,在那里我将多态类型/id分配给模式,但是为了这样做,需要将它分配给更改,但是我很难做到这一点。目前我有
defmodule App.Picture do
schema "pictures" do
...
field :pictureable, :map, virtual: true
end
@attrs [:picture, :pictu
我有一个用户模式
schema "users" do
field :name, :string
field :username, :string
has_one :user_role, UserRole
end
def changeset(%User{} = user, attrs) do
user
|> cast(attrs, [:name, :username])
|> validate_required([:name
标签: Elixir
phoenix-frameworkguardian
我正在开发phoenix应用程序。身份验证部分是用实现的
与典型的网站一样,该应用程序有页眉、页脚和侧边栏。这些是布局文件夹中的静态页面
树视图
-解放党
|-管理应用程序网页
|-模板
|-布局
|-app.html.eex
|-header.html.eex
|-sidebar.html.eex
|-main.html.eex
app.html.eex看起来像这样
<!DOCTYPE html>
<html lang="en">
<head>
标签: Elixir
phoenix-frameworkplug
我正在编写Elixir/Phoenix json API后端,希望端点在一个请求中接收多个图像文件以及一些json格式的属性。我使用了multipart/mixed内容类型,下面是我的cURL请求
curl -4 -H "Content-Type: multipart/mixed" \
-H "Authorization: FNRM8ISXiUujh+I2X" \
-F "meta={"registration": "face"}; type=application/json" \
尝试使用List.to\u integer
iex(1)> List.to_integer("C5",16)
** (ArgumentError) argument error
:erlang.list_to_integer("C5", 16)
这同样适用于erlang
3> list_to_integer("C5", 16).
197
引用很重要
List.to_整数('C5',16)
#⇒ 197
在《长生不老药》中,应该用单引号引起来。双引号是为二进制文件保留的
如果要
大家好,我刚刚接触长生不老药,一般来说是FP的新手。因此,基本上我尝试学习Elixir,然后开始构建GraphQLAPI服务器
我阅读并遵循《苦艾酒灵丹妙药制作GraphQLAPI》一书,一直在测试GraphQL查询
这本书是这么说的:
test "menuItems field returns menu items" do
conn = build_conn()
conn = get conn, "/api", query: @query
assert json_response(
这个问题的后续问题
我大概也遇到了同样的问题。函数被认为是未定义的或私有的
以上链接中的解决方案有效!在$iex-S mix phx.server中,我运行recompile(),函数不再是未定义的或私有的
我的问题是,它在我的测试套件中仍然是未定义的或私有的。
当我运行混合测试时,我再次得到未定义函数错误
我正在从项目的根目录运行测试。测试模块缺少名称作为test后缀。换句话说,被测试的模块被称为MyApp.MyModule,进行测试的模块也是如此
如果要测试的模块名为MyApp.MyMod
标签: Elixir
phoenix-frameworkplug
我认为这是一个基本情况。我有一个POST操作,我想响应403状态并显示错误页面
def signup(conn, params) do
...
conn
|> Plug.Conn.send_resp(:forbidden, "Forbidden")
|> Plug.Conn.halt()
end
但是,它将返回403,但不会呈现错误页面。相反,它加载资源失败:服务器在浏览器中以403()状态响应,并下载一个奇怪的signup.dms文件
我有一个设计好的403.ht
我想在任务中运行一些代码,但它可能会抛出错误。我已经尝试过尝试/拯救,但没有发现错误
try do
Supervisor.start_link([ {Task, fn -> raise "kaboom" end}], strategy: :one_for_one)
rescue
RuntimeError -> "Error!"
end
我希望会有错误!无论我得到什么,都要打印出来-
(RuntimeError) kaboom
(stdlib) erl_eval.e
是否可以使用连接值架构来使用where子句
filtered = [name: "show", name: "comedy"]
query = from s in Core.Serie, join: t in assoc(s, :tags), where: ^filtered
结果就是下一个
#Ecto.Query<from s in Core.Serie, join: t in assoc(s, :tags),
where: s.name == ^"show" and s.name
我有一个型号用户,它有一个订阅。现在我想获取相关订阅中的数据。用户可能没有订阅
这是我的代码:
user = Repo.get(User, 1) |> Repo.preload(:subscription)
hash = %{name: user.name, subscription_type: user.subscription.type}
因此,在这里,当我尝试获取subscription\u type时,如果订阅为零,我将得到一个错误
在Ruby中,我可以使用try方法user.
标签: Elixir
phoenix-frameworkphoenix-live-view
我想在我现有的Phoenix应用程序中更改一个表单以使用LiveView,这样我就可以利用上面描述的更好的图像上传功能。然而,我看到的文档只谈到运行mixphx.newmyu应用程序--live来设置它。如何将其添加到现有的应用程序中?实际上主要是关于如何将其添加到现有的Phoenix项目中(基本上除了第一段以外的所有内容):
如果您使用的是Phoenix的早期版本,或者您的应用程序已经存在,请继续阅读
以前,我会在Elixir Plug服务器中使用和块来解析请求中的参数,并在失败时返回正常响应。然而,这似乎不再有效(Elixir 1.11)。有人能指出发生了什么事吗
下面是一个最简单的插件服务器,它将显示问题所在
defmodule MatchTest.Router do
使用插头路由器
插头(:匹配)
插头(:调度)
得到“/”做
其他=
使用{:ok,{}:error
结束
连接插头连接发送响应(连接400,“参数不正确”)
结束
结束
相配
插头连接发送响应(连接404,“未找到”)
结
所以我尝试在一个URL中将多个参数传递给plug。这是我用于测试的URL:
http://localhost:4000/uid=ToddFlanders&pwd=MyTestPword
这是代码:
defmodule Sci do
@userid "uid"
@password "pwd"
import Plug.Conn
import Plug.Conn.Utils
use Plug.Router
plug :match
p
我正在构建一个具有身份验证的Phoenix应用程序。在我的路由器中,我有如下功能:
pipeline :browser do
plug :accepts, ["html"]
plug MyApp.Plugs.Authenticate
end
scope "/", MyApp do
pipe_through :browser # Use the default browser stack
get "/", HomeController, :show
ge
我知道我可以在elixir中将一个偶数列表分成两等份,方法如下:
list = [1, 2, 3, 4, 5, 6]
len = length(list)/2 |> round
[a, b] = Enum.chunk(list, len) # => [[1, 2, 3], [4, 5, 6]]
但是,有没有一种内置的ruby风格的方法或者更有效的方法来处理奇数长度的列表呢?我不相信有任何“更惯用”的方法来实现这一点。我不知道有什么内置方法可以做到这
失败代码:
Enum.map(1..30, &(&1 * 2)) |> Enum.map &(&1 + 1) |> Enum.sum
** (Protocol.UndefinedError) protocol Enumerable not implemented for 3
(elixir) lib/enum.ex:1: Enumerable.impl_for!/1
(elixir) lib/enum.ex:112: Enumerabl
标签: Elixir
phoenix-frameworkecto
我在我的一个项目中使用和
我想在一个表中添加一列,我希望它是一个非空列。但我已经有一些现有数据,所以我决定添加列,将所有行更新为某个值,并将列修改为NOTNULL
我尝试了以下两种代码:
# solution 1
def up do
alter table(:channels) do
add :type, :integer
Exchat.Repo.update_all("channels", set: [type: 1])
modify :ty
My Phoenix API返回POST请求的200状态代码,而不是201。如果我没有设置状态代码,Phoenix默认使用200
下面是示例响应
conn |> json(%{created_at: response[:timestamp], notes: response[:notes], data: data})
您可以使用Plug.Conn.put\u status/2手动设置状态代码:
conn
|> put_status(:created)
|> json(%{cr
标签: Elixir
phoenix-frameworkecto
我有以下型号和图像,我使用Arc模块上传
defmodule.Info-do
使用Chemical.Web,:model
schema "infos" do
field :title, :string
field :shortdesc, :string
field :longdesc, :string
field :images, Chemical.ImageUploader.Type
field :regions, :string
field :
这似乎是一个简单的问题,我可能遗漏了一些明显的东西,但我不知道如何在Elixir中创建一个返回随机字节的函数。我想要像这样的东西:
def random_byte do
<<0>>..<<255>> |> Enum.random()
end
def random_byte do
.. |> Enum.random()
终止
但是你不能用二进制文件来确定范围。我可以手动键入所有256个字符的列表,但我希望有更好的方法。你是说一个有一个字
几天前我开始学习长生不老药,我真的很喜欢它。尤其是使用主管进程作为助手来创建容错应用程序的想法
然而,有一种我认为很自然但到目前为止我找不到任何参考的情况,那就是在发生故障时用不同的配置重新启动子进程(GenServer)
我的用例如下所示:
我有一个从数据库中获取数据并在某种程度上使用它的过程。数据库连接对于进程生命周期至关重要。
如果进程异常退出,我希望能够使用不同的数据库连接(备份数据库),因为它无法连接到数据库或从数据库获取数据给定N次(而不是释放地狱并抛出进程因数据库连接而死亡的通知)
我试图同时监视几个API。目前我正在启动我的应用程序,这会导致我的主管启动,进而启动监控过程。我虚弱的大脑已经成功地达到了一个地步,我正在产生所有4个孩子的过程
我的APIMon.Monitor模块一团糟,我真的不知道如何修复它。我想让它们中的每一个都作为主管的子级开始,然后无限期地在自己的scan()循环中运行,同时将所有信息独立地输出到控制台
我已经玩了一段时间,试图浏览任务文档,但我似乎找不到一种方法来实现这一点,因为我没有在iex-S mix中完全阻塞控制台,我认为这意味着我完全阻塞了。
标签: Elixir
phoenix-frameworkelixir-mix
[信息]正在运行的滑头。使用
您已经在您的应用程序中配置了application:Slicker
配置文件,但应用程序不可用
这通常意味着:
您尚未将应用程序作为依赖项添加到mix.exs文件中
您正在配置一个实际不存在的应用程序
请确保:Slicker存在或删除配置
我的项目存在于此处->
下面是mix.exs文件
defmodule Slicker.Mixfile do
use Mix.Project
def project do
[app: :slicker,
我在本地mac上有完全相同的代码和版本,可以很好地运行mix命令。我拿出了一份我的项目的全新副本来确认。没有_build、deps或tmp目录。此错误没有提供有关问题的信息。可能会发生什么,或者我可以研究什么来解决这个问题
问题出在Ubuntu 18.04 LTS上。我已经尝试了多个erlang/elixir版本,所有的结果都是相同的
root@instance-1:/srv/zipbooks/phoenix-api# elixir -v
Erlang/OTP 21 [erts-10.2.5]
我想向erlang vm发送参数,但是“-escript main parallel_tree_walk_escript”后面会出现“emu_args:+A32”,并且似乎会成为elixir程序的参数,而不会影响erlang vm
如果没有“emu_args:+A32”,则由“mix escript.build”创建的文件包含第三行
%%! -escript main parallel_tree_walk_escript
如果我用emacs(可以很好地处理非ascii内容)将该行更改为
但是,
如何处理POST和GET请求?
有必要在Elixir上实现一个web应用程序,该应用程序处理两种类型的请求:
POST/data\u in
{
"data":
["https://ya.ru", "https://ya.ru?
q=123", "yandex.ru", "https://stackoverflow.com/questions/118282"
]
}
及
GET/data_out?from=1545221231&to=154
我试图计算从范围1到范围4的每个范围内的数字的次数。范围1为1-10,范围2为11-20,范围3为21-30,范围4为31-40。我有以下资料:
range1=0
range2=0
range3=0
range4=0
arr=[1,11,2,22,33,23]
Enum.each arr, fn(x) ->
if x >=1 and x<=10 do
range1=range1+1
end
if x>=11 and x<=20 do
ra
上一页 1 2 ...
35 36 37 38 39 40 41 ...
下一页 最后一页 共 125 页