使用和导入之间有什么区别
use是在当前上下文中使用给定模块的简单机制
从其他模块导入函数和宏
看起来有一个区别是,import让我们来选择特定的函数/宏,而use将所有内容都包含进来
还有其他区别吗?什么时候使用一个而不是另一个?use用于将代码注入当前模块,而import用于导入函数以供使用。您可以构建一个自动导入函数的use实现,例如,当您将use Timex添加到一个模块时,就像我对Timex所做的那样,这是一个非常简单的示例,说明了如何构建一个可以使用的模块
导入模块将模块的所有函数
标签: Elixir
otpphoenix-framework
我想在Phoenix应用程序旁边反复运行相同的操作序列(当然,如果worker出现故障,不会导致整个web应用程序崩溃),但我真的不知道我应该使用GenServer、Elixir的任务、代理还是完全不同的东西,我到目前为止还没有想到
当我启动Phoenix应用程序时,工作程序也应该启动,它会定期提取串行连接的一些值,通过Phoenix频道进行广播,收集这些值,直到达到@save_interval,然后计算中值,通过其他频道广播该中值并将其写入XDB。现在我有这样的工作:
def do_your_
我需要能够生成随机的url安全字符串,这样我就可以在链接中使用这些字符串(比如在发送到用户电子邮件的激活链接中),那么我如何生成它呢?有没有办法只使用Elixir就可以做到这一点,或者我必须使用一些库?您可以做的是生成一个Base64编码的字符串,用作确认标记。然后,此确认令牌将保存到您的DB中,并作为参数传递到激活链接。您的激活url类似于:
activation_url(MyApp.Endpoint, :confirm, confirm_id: confirm_id)
上面的url帮助程序
我已经使用Phoenix的内置gen.HTML生成了一个简单的视图,但它不起作用
<%= link "Delete", to: event_path(@conn, :delete, event), method: :delete, data: [confirm: "Are you sure?"], class: "btn btn-danger btn-xs" %>
在页面上,它看起来像是假定的,但它只是将#附加到地址
生成的结构:
<form action="/event
如果一个模块导入多个其他模块,则给定函数的来源可能不明显。例如:
defmodule Aimable do
import Camera
import Gun
def trigger do
shoot # which import brought it in?
end
end
我知道有一些方法可以减少这种混淆:良好的命名、重点模块、有针对性的导入,如导入枪、仅:[:shot],等等
但是如果我遇到这样的代码,是否有办法检查Aimable并查看函数shot的起源?您可以直
elixir新手,我尝试运行,在控制台上键入“elixir bob_test.exs”时收到以下错误:
**(ExUnit.DocTest.Error)无法检索模块的文档。模块未使用文档进行编译,或者无法访问其beam文件
(ex_单元)lib/ex_单元/doc_测试。ex:378:ExUnit.DocTest.extract/1
(ex_单元)lib/ex_单元/doc_测试。ex:202:ExUnit.DocTest.doctests/2
bob_测试。exs:6:(模块)
根据一些初步研
我一直在搜索作为html文件的Elixir文档的可下载档案,但找不到任何
那么,是从源代码生成它的唯一解决方案,还是我应该给自己买一副眼镜?对于linux,您可以使用(Dash For linux)
或
自Elixir v1.1.0以来,我们将文档作为发行版的一部分:。只需滚动到页面底部,您就会找到下载它们的链接
我还更改了elixir-lang.org以提供指向文档的链接。更改应该在明天网站上发布1.2时进行。使用Dash-@Vetal4eg Dash看起来不错,但它是一款iOS应用程序(除非
我已经按照从控制器中的帖子中获取原始正文,但是只有当编码设置为application/x-www-form-urlencoded时,正文才会显示。当我使用curl进行测试时,我可以读取文章正文,但是当编码设置为text/xml时,正文显示为空。在我的router.ex中我有:
pipeline :api do
plug :accepts, ["xml"]
end
在我的控制器中,我有:
def parse(conn, params) do
xml = conn.private[:raw
我正在使用设置JWT身份验证。建议使用JWK(Json Web密钥)对JWT进行加密/签名。生成我使用的JWK
因为我的密钥文件可能存储在源代码管理中,所以我希望它有密码保护。密码通过系统传递到elixir应用程序。获取_env(访问环境变量)
我可以生成文件,也可以使用密码将其读回。但是它在我的配置文件中失败,比如config/dev.exs。错误是
**(Mix.Config.LoadError)无法加载Config/dev.exs
**(CompileError)config/dev.ex
我有一个用户,我想确保用户至少有一个姓或昵称。用户不必拥有所有字段。一个就够了。默认代码仅为所有字段提供验证。如何重写它以检查OR而不是AND
defmodule Vutuv.User do
使用Vutuv.Web,:model
模式“用户”做什么
字段:名字,:字符串
字段:姓氏,:字符串
字段:昵称,:字符串
时间戳
结束
@必填字段~w(名字姓氏昵称)
@可选_字段~w()
@“医生”
基于'model'和'params'创建变更集。
如果未提供参数,则返回无效的变更集
没有进行验证。
"
作为一个彻底的长生不老药新手,我尝试过这样的方法:
defmodule ConstantDoodleElixir do
@constants [:con1, :con2]
def constants, do: @constants
end
defmodule ConstantReceiver do
def receive_constant(constant) when constant in ConstantDoodleElixir.constants do
标签: Elixir
phoenix-frameworkelixir-mix
我想在自定义混合任务中通过EXTO显示数据库中的数据。我如何在我的任务中获得(或启动)异位回购
我尝试过类似的方法,但没有成功:
defmodule Mix.Tasks.Users.List do
use Mix.Task
use Mix.Config
use Ecto.Repo, otp_app: :app
@shortdoc "List active users"
@moduledoc """
List active users
"""
def run(
标签: Elixir
slack-apielixir-poison
我使用毒药将一个映射编码为JSON,并将其发送到SlackAPI。这就是毒药带给我的:
"{\"text\":\"changed readme fad996e98e04fd4a861840d92bdcbbcb1e1ec296\"}"
当我将其放入JSON lint中时,它表示它是有效的JSON,但Slack响应“无效负载”
如果我将JSON更改为如下所示
{"text":"changed readme fad996e98e04fd4a861840d92bdcbbcb1e1ec296"}
然后
标签: Elixir
phoenix-frameworkecto
假设我有3个模式:标记、Post、用户
Post和带有联接表的标记之间存在多对多关系,Post和带有联接表的用户之间存在多对多关系
我想选择属于给定标签和给定用户的帖子
user_posts_query = user |> assoc(:posts)
tag_posts_query = tag |> assoc(:posts)
是否有任何方法可以组合这两个查询对象,并在使用Repo.all()时仅从每个查询对象获得重叠的结果 我没有机会测试它,但我认为类似的方法应该有效:
Post
我有一个受监督的elixir应用程序,我运行的方式是:-MIX\u ENV=dev MIX run。现在,如果我更改了代码,那么如何通过不先杀死它来优雅地重新启动应用程序呢。(就像我们使用HUP优雅地重新启动supervisord进程一样)您可以在这个问题的答案中找到实际代码热交换的细节:
至于如何自动化重新加载的过程,你可以看看phoenix以及它是如何重新加载的。总结一下,它使用fs lib监控文件系统更改,并调用类似于上述问题答案中所述的流程。这是一篇很好的文章,但由于我没有使用gen_
标签: Elixir
phoenix-frameworkecto
我在Phoenix控制器中有一个查询,它获取一个学生列表,对于列表中的每一行,在其id上与bloodgroup进行连接,并获取bloodgroup名称。我想在我生成的eex模板中显示它,但出现了错误
以下是学生模式:
schema "students" do
field :firstname, :string
field :lastname, :string
field :birthday, Ecto.Date
field :joined_on, Ecto.Date
fiel
标签: Elixir
phoenix-frameworkecto
我有一个资源用户,控制器中有此显示功能:
def show(conn, _params) do
user =
Repo.get!(User, conn.assigns[:user_id])
display_welcome_message = false
conn
|> assign(:user, user)
|> assign(:display_welcome_message, display_welcome_message)
|> rend
标签: Elixir
phoenix-frameworkplatform
我有一个应用程序一直在系统上运行,在localhost:4000上提供所有服务
过了一段时间,我决定添加更多功能并添加另一个应用程序(也是elixir/phoenix),该应用程序从#1应用程序数据库中获取一些数据,并在其内部显示,例如在localhost:4001上。但是作为一个独立的应用程序,我不需要重新编译#1应用程序
我相信这可以称为一个平台。有一个主应用程序始终运行,其他辅助应用程序可以安装和访问
以下是我的问题:
1) 让多个应用程序在同一台机器上运行在不同的端口上是否是一个好主意?
在EXTO中,是否有一种方法可以将many\u-to\u-many关联设置为仅使用ID(以提高效率)?在ActiveRecord中,我可以说:
object.association_ids = [1,2]
在EXTO中,我似乎不仅需要预加载关联,还需要为与完整对象的关联设置新值。我可以看到需要加载ID,以便您可以在内存中比较它们,并且只添加/删除需要/不需要的行。我也可以只使用一个表示“删除不在此列表中的ID”的查询和一组用于插入ID的查询(或使用一个查询插入所有ID。我的SQL有点生疏,因此
我正在玩弄一套使用phx 1.3和伞形应用程序的新产品的体系结构
我有一个现有的基于Phoenix的企业级WebRTC软电话(多个按键、一个显示器、多个输入和输出音频设备选择等等)。
我已经与Phoenix一起开发了Slack clone消息传递应用程序原型。
这两个应用程序都相当大
我需要将手机与聊天应用程序集成到一个前端,该前端可以是手机,也可以是聊天客户端,两者都可以。
我将需要添加许多新的功能,以聊天客户端前进
我还希望该体系结构能够支持使用同一个客户机在呼叫服务器上提供额外的设置(基于
标签: Elixir
phoenix-frameworkecto
我的Phoenix应用程序中有以下架构:
defmodule TattooBackend.Accounts.Account do
@moduledoc """
Contains schema and changesets for Account resource.
"""
use Ecto.Schema
import Ecto.Changeset
alias TattooBackend.Accounts.Account
schema "accounts" do
我正在发送此PUThttp请求:
我得到了这个错误:
18:31:31.575 [error] #PID<0.505.0> running Api.Router terminated
Server: 192.168.20.7:4000 (http)
Request: PUT /products/?id=76
** (exit) an exception was raised:
** (FunctionClauseError) no function clause matchi
我无法用长生不老药将列表写入文件。如果我试图写整个列表,我会出错;如果我试图枚举列表,我会出错。这是一个整数列表
{:ok, file} = File.open "loop_issues.csv", [:write]
for item <- find_common_items(list_one, list_two) do
IO.write(file, item <> ",")
end
File.close file
这里是我用来测试它的地方:
iex(2)>
我可以通过以下方式获得当前的日期时间:
Ecto.DateTime.utc
但是我怎样才能得到明天的约会呢
Ecto.DateTime.utc + timedelta 1 day
?这个问题的答案是什么
Ecto.DateTime.utc
|> Ecto.DateTime.to_erl
|> :calendar.datetime_to_gregorian_seconds
|> Kernel.+(86400)
|> :calendar.gregorian_sec
标签: Elixir
phoenix-frameworkecto
道歉,如果这听起来像一个愚蠢的问题,但我被埃克托抛出的错误难住了
我试图实现一对一的多态关联。我已经阅读了有关如何在EXTO中实现多态关联的文档,但我的需求需要一对一的关系
guard -> guard_user -> user
operator -> operator_user -> user
在哪里
operator和operator\u user表也是如此
defmodule Example.Guards.Guard do
use Ecto.Schema
标签: Elixir
phoenix-frameworkectoseeding
使用Exto v2.2.6,Phoenix 1.3
我正在尝试为使用phx.gen.json创建的链接表种子
首先,一个简单的链接表。我创建了一个用户模型、一个组模型和一个链接表,通过多对多关系将它们连接起来
主表:
mix phx.gen.json Account User users email:string
mix phx.gen.json Account Group groups name:string
对于用户组,我创建了一个迁移和一个没有phx.gen的模式
迁移:
create
我将一些代码从post/index.html.eex移动到app.html.eex
<%= if @user do %>
<ul class="nav navbar-nav navbar-right">
<li>Hello <%= @user.username %>!</li>
</ul>
<ul class="nav navbar-na
标签: Elixir
unionphoenix-frameworkecto
我在我的Phoenix应用程序中的三个表上运行搜索功能,我想使用类似SQL的UNION操作符的东西加入它们
我有三张桌子:
mix phx.gen.json Accounts User users handle:string email:string
mix phx.gen.json Content Post posts title:string content:string
mix phx.gen.json Content Category categories name:string
假设
我正在尝试制作一个简单的搜索表单来过滤我的资源列表。我制作了一个这样的表单,但它没有像我使用method::get那样将q作为查询参数放置在url中
<%= form_for @conn, post_path(@conn, :index), [as: :search, method: :get], fn f -> %>
<%= text_input f, :q, placeholder: "Search by title, content, etc." %>
&
标签: Elixir
jsonparserelixir-poison
我已经使用Posion.decode解析了以下JSON
json = %{"color-Black|size:10" =>
%{"attributes" => %{"color" => "Black","size" => "11"},
"isAvailable" => true,
"pricing" => %{"standard" => "$415.00", "sale" => 415}},
"
我正在尝试编写一个工具,它将从File.ls中获取文件/文件夹列表,添加它们的完整路径,并根据它们是否为目录进行筛选
这项工作:
directory_contents = File.ls!(directory_path)
contents_with_full_paths = Enum.map directory_contents, fn(item) -> Path.join(directory_path, item) end
only_dirs = Enum.filter content
我正在尝试运行两个不同的脚本,v1_to_v2_migrator.exs和update_images.exs
defp aliases do
["ecto.reset": ["ecto.drop", "ecto.create", "ecto.migrate", "run priv/repo/v1_to_v2_migrator.exs", "run priv/repo/update_images.exs"]
只有第一个文件运行。我已尝试重新启用运行,但无法转义文件名
“运行'priv/rep
在iex中,术语的颜色很好。我可以在自己的程序中利用这一点吗?是否有类似于IO.color\u inspect的功能?IO.inspect和inspect都允许您传递syntax\u colors选项,您可以在其中为记录的每种术语指定所需的颜色。不幸的是,IEx使用的配置似乎没有公开,因此您必须复制粘贴或制作自己的配置
iex(1)> syntax_colors = [number: :yellow, atom: :cyan, string: :green, boolean: :magen
标签: Elixir
list-comprehensioncontrol-flow
有没有办法打断理解
我在考虑用类似Python的东西来休息一下。
例如,假设我正在遍历一个整数列表,当我从中生成一个新列表时,我想检查它是否不包含0
我可以这样做吗:
for x <- [1, 2, 0, 3] do
case x do
0 -> break
_ -> x
end
end
if broke do
:error
else
:ok
end
for x <- [1, 2, 0, 3], x !=
标签: Elixir
phoenix-frameworkecto
这就是我想做的:
project =
Repo.get!(Project, id)
|> Repo.preload([rows: from(r in Row, order_by: r.index)] [images: from(i in Image, order_by: i.index)])
但我得到了一个错误:
** (ArgumentError) the Access calls for keywords expect the key to be an ato
标签: Elixir
phoenix-frameworkecto
我试图找出有多少项目属于某个特定用户
我知道您可以这样做来获得模型的计数:
count = User |> Repo.aggregate(:count, :id)
但是我如何才能找到属于该用户的项目计数呢?项目表属于用户表,因此它有外键,所以您可以在项目模型上进行聚合计数,其中项目。用户id==^user id
import Ecto.Query
def count(user_id: user_id) do
query = from project in Project,
具有此功能:
Enum.map(%{1 => 2, 3 => 4}, fn {k, v} -> k * v end)
是否可以捕获匿名函数?我试着这样做:
Enum.map(%{1 => 2, 3 => 4}, &*/2)
Enum.map(%{1 => 2, 3 => 4}, &(&1 * &2))
或者像这样:
Enum.map(%{1 => 2, 3 => 4}, &*/2)
Enum.m
我有这样的结构列表
[ %Phonebook{name: "Family", id: 3}, %Phonebook{name: "Friend", id: 2},
%Phonebook{name: "Relatives", id: 1} ]
["Family": "3", "Friend": "2", "Relatives": "1"]
我想成为这样的人
[ %Phonebook{name: "Family", id: 3}, %Phonebook{name: "Friend", i
我有一张表格地图:
%{"browser_name" => "Chrome", "platform" => "linux"}
我需要将其转换为关键字列表:
[browser_name: "Chrome", platform: "linux"]
实现这一目标的最佳方法是什么?这不管用吗:
def convert_to_klist(map) do
Enum.map(map, fn({key, value}) -> {String.to_existing_atom(key
标签: Elixir
phoenix-frameworkdistillery
当我尝试使用蒸馏器升级正在运行的Phoenix应用程序时,生成失败,并显示以下消息:
Generated teamgenik app
==> Assembling release..
==> Building release my_app:0.10.7 using environment prod
==> Generated .appup for artificery 0.2.6 -> 0.4.1
==> Generated .appup for db_connec
我可以成功向Stripe API发送curl请求,如下所示:
curl https://api.stripe.com/v1/customers?limit=3 \
-u sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx: \
-G
如何使用Elixir dependency:HTTPoison发送HTTP请求?HTTPoison模块有一个get函数来发出httpget请求
您可以在iex中运行hhttpoison.get,以获取有用的帮助消息
在加
标签: Elixir
importerrorpassword-hash
因此,我使用了最新版本的Phoenix和Comeonin 5.0以及bcrypt_elixir 2.0来散列我的密码,但不知何故,它无法使用我当前使用的函数,这表明它是未定义的
因为在我使用hashpwsalt(pass)传递密码以创建哈希之前,函数已经更改。但是现在我使用的是hash\u pwd\u salt(pass)。但它仍在向我显示错误
defp put_password_hash(changeset) do
case changeset do
%Ecto.Chang
我正在运行一个查询,并使用Postgrex将结果加载到流中,如下所示:
{:ok, host_pid} = Postgrex.start_link(hostname: "somewhere.hostname.io", username: "myuser", password: "mypass", database: "mydb")
Postgrex.transaction(host_pid, fn(conn) ->
# do query that takes 5 seconds
来自elm前端的图像需要存储在静态/图像中的图像:
background : Model -> Html Msg
background model =
img
[ src "assets/static/images/main_bg.jpg)"
]
[]
我尝试过使用priv/static/images/main_bg.jpg,但得到了相同的错误:
** (Phoenix.Router.NoRouteError) no route
标签: Elixir
ectodataloaderabsinthe
使用Elixir/Absince/Ecto/Dataloader,您如何通过多个字段查询/过滤源
例子:
假设您希望通过两个字段筛选名为User的架构(和数据加载器源),一个名为的字段是\u admin(仅true值),另一个名为的字段可以是列表中的任何值,例如[1,5,9]
这看起来怎么样
这来自架构定义:
alias App.Data
# ...
object :app do
field :users, list_of(:user) do
resolve fn app, _a
标签: Elixir
database-migrationecto
类似于这个问题:,我有一个EXTO迁移,我想创建一些新表,但也从不同的存储库迁移一些数据。例如:
defmodule MyApp.Repo.Migrations.CreateFoo do
使用异位迁移
导入外部查询
def更改do
创建表(:foo)do
添加(:状态,:文本)
结束
刷新()
从其他应用程序执行并导入应用程序/0
结束
从另一个app()导入
foos=from(另一个app.Foo中的f,其中:…)
|>另一个app.Repo.all
枚举每个(foos,fn(foo)->
标签: Elixir
phoenix-frameworkecto
我有一个模型有几个“属于”和“有很多”
我想用新生成的“id”和其他字段的新值来复制它
m1 = Repo.get(MyModel, 123)
|> Map.delete(:id)
m2 = Repo.insert!(m1, %{my_field: "aaa"})
# or
# m2 = Repo.insert!(MyModel.changeset(m1, %{my_field: "aaa"}))
和错误:
(RuntimeError) attempting to cast or ch
快速提问,在Scient文档中,它建议您可以与任何场景交互,就像与任何GenServer交互一样:
你可以自由地向场景发送你自己的消息,就像你想要的那样
使用任何其他GenServer进程。您可以使用句柄\u info/2,
像平常一样处理\u cast/2和\u call/3回调
我理解这是如何工作的,但我不确定如何实际获取场景的PID以向其发送消息
使用observer,有一个名为\u scenet\u scenes\u table\uu的表,但我猜这不是一个公共API
我希望我没有错过任何
标签: Elixir
phoenix-frameworkecto
我有一个名为Requests的表,其中有字段更新人、状态、备注、开始日期、文件号等。我希望跟踪请求的历史记录,并创建了一个名为continess的表,该表属于Requests,其中有字段更新人、状态和备注
我有它,所以你可以添加遭遇,并显示在请求页面上。我想做的是在每次创建或编辑请求时自动保存到Conferences表。我正在为这两个变更集如何共存而挣扎
以下是请求控制器
alias Id.AccessId
alias Id.AccessId.{Request, Encounter}
我希望通过连接多对多关联的联接表上的排序字段过滤has_one
我有两种模式:
schema“thing1”do
字段:名称
多对多:thing2,thing2,通过“thing1\u thing2”加入
结束
模式“thing2”do
字段:名称
多对多:thing1,thing1,通过“thing1\u thing2”加入
结束
和一个如下所示的联接表:
schema“thing1\u thing2”do
字段内容1\u id
字段内容2_id
字段创建日期:utc\U日期时间
结束
我
上一页 1 2 ...
25 26 27 28 29 30 31 ...
下一页 最后一页 共 125 页