使用Dynamo启动多个应用程序的最佳方式是什么。当我们创建项目时,dynamo会生成一个默认应用程序。我想在lib中再添加一个应用程序,并在启动服务器后立即启动它
但是,我尝试将它放在lib文件夹中,apps文件夹也修改了mix.exs,但是mix compile没有生成应用程序文件。明白了
要在同一个项目中使用多个应用程序,请创建伞式项目,在应用程序内部,您可以创建一个dynamo应用程序和一个普通应用程序,在dynamo内部,您可以在mix中添加其他应用程序作为依赖项。exs明白了
要在同
我正在处理模型的crud部分,我已经为其添加了图像支持。理想情况下,如果您正在编辑一个模型,我希望显示该图像,我希望这样做
<%= Logo.url({@company.logo, @company}, :thumb) %>
问题是company变量仅在edit操作中可用,因为新操作中还有一个company,所以我需要检查是否设置了@company
<%= unless @company do %>
<%= Logo.url({@company.logo,
我正在尝试编写一些插件,以减少项目中不需要的代码量,我希望获取一些会话数据,并将其放入控制器操作中的_参数中。但是我不知道怎么做。我遇到了functon assign/3,但据我所知,它分配了要在模板中使用的数据
def logged(conn, _opts) do
case get_session(conn, :login) do
nil -> conn
|> Phoenix.Controller.put_flash(:error, "Musis
我有一个简单的GenServer,我希望在其中创建一个循环,每两秒钟调用一个函数:
defmodule MyModule do
use GenServer
def start_link(time) do
GenServer.start_link(__MODULE__,time)
end
#Start loop
def init(time) do
{:ok, myLoop(time)}
end
#Loop every two seconds
d
第一次尝试凤凰和长生不老药。在项目运行的最后阶段被卡住了
mix phoenix.server
有人有同样的问题吗?这是错误跟踪。(postgrex作为依赖项添加)
**(混合)无法启动应用程序日志:blog.start(:normal,[])返回错误:shutdown:无法启动子项:blog.Repo
**(退出)关机:无法启动子项:exto.Adapters.Postgres
**(退出)引发了一个异常:
**(RuntimeError)找不到exto.Adapters.Postgres.
使用phoenix框架,将自动生成:id,:integer。
但我不希望它自动生成并使用自定义id字段,例如:id,:string,就像这样
设定
defmodule MyApp.Item do
使用MyApp.Web,:model
#@primary_key{:id,:id,autogenerate:false}
模式“项”是什么
字段:id,:string,自动生成:false#一些唯一的id字符串
字段:type,:integer
它会引发**(ArgumentError)字段/关联
我在用长生不老药数一数字符串上的重复字母。
我确实尝试过一些尝试,但直到现在都没有成功
让我们以这个字符串为例:“AAABBAAC”
所需输出为“3A2B2A1C”
将此字符串转换为列表,我可以计算每个字母,结果是“5A2B1C”,但我必须按照顺序进行计数
这是我正在做的代码:
string
|> String.graphemes
|> Enum.reduce([], fn(letter, acc) -> Keyword.update(acc, letter, 1, &
我正在编写一个用作数据库的简单web应用程序。Exredis文档说,使用以下命令初始化客户端:
{:ok, conn} = Exredis.start_link
我的问题是,我应该把conn放在哪里?现在我正在调用Exredis.start\u link\1,它位于需要进行DB查询的每个函数的顶部,但这感觉既嘈杂又低效。我可以将conn传入,但这只会将问题转移到我的路由器上
我想在主应用程序启动时启动它一次,然后在整个应用程序中重复使用单个连接。我可以将其作为工作程序添加到我的主管,但我不知道
标签: Elixir
phoenix-frameworkecto
来自Rails活动记录,我想知道如何实际获取今天创建的记录
在Rails中,我们可以这样做
User.where(created_at:Date.today.beginning_of_day..Date.today.end_of_day)
或者非常简洁
scope :created_today, ->(date = Date.today) { where(created_at: date..date.end_of_day) }
User.created_today
用EXTO实现相同
标签: Elixir
phoenix-frameworkexrm
昨天我遇到了一个很奇怪的问题
配置:
- Erlang 19
- Elixir 1.3.1
- Exrm 1.0.6
- Phoenix 1.2.0
- Ubuntu 15.10
步骤如下:
使用MIX\u ENV=prod MIX Compile编译项目
使用MIX\u ENV=prod MIX-release构建发布
尝试使用rel/susuu_online/bin/susu_online控制台测试生成的项目
然后我得到一个错误,不明白为什么会发生这种情况
以下错误:
Erlang/OTP
假设我有一个普通的phoenix应用程序。我想通过在其上实现ExcetpionTracker.action来跟踪其中的每个异常(操作可以是从json post到mailer send的所有内容)。我该怎么做
另外,我知道我可以使用airbrake,Honeybacker和很多类似的东西,但我不喜欢使用它们。你可以创建一个插件,将其插入你的应用程序,并在插件的处理错误功能中处理报告,如文档页面所示。这只是针对控制器的。那么全局OTP处理呢?所以你想跟踪VM中任何进程中任何函数引发的所有异常?你可以
我想解析app deps树并生成一个映射。
我目前正在阅读顶级DEP,如:
top_level_deps = Mix.Dep.loaded([]) |> Enum.filter(& &1.top_level)
我在递归方法中使用Enum.reduce用于顶级deps,然后用于dep.deps
在第四级之前一切都很好,没有deps…
例如:
应用程序A需要B需要C需要D-我在检查C DEP时看到空列表(这里也没有十六进制软件包)。
当我将应用程序A或B修改为需要D,而C不需
我需要随机访问英语词典文件(“/usr/share/dict/words”)中的所有单词,其中每个单词都在一行中
现在,我想以随机顺序访问所有这些单词,我想将文件读入允许随机访问的元组
我知道我可以将文件读入如下列表:
words =
File.stream!("/usr/share/dict/words")
|> Stream.map(&String.trim_trailing/1)
|> Enum.to_list
但这并不能让我随机访问这些单词。如何将
我有一些模式,如下所示:
defmodule Busiket.LanguageCode do
use Busiket.Web, :model
schema "languages_code" do
field :code, :string
field :text, :string
timestamps
end
end
defmodule Busiket.Repo.Migrations.CreateLanguageCode do
标签: Elixir
phoenix-frameworkecto
这是否会像定义您的模式和def changeset一样简单,并且从不编写任何Repo.insert(changeset)?我没有看过以后的文档:
您可以在不定义模式的情况下使用变更集,这是可能的,我发现它是验证API请求的完美方式
您可以将没有后端的模型定义为:
defmodule MyApp.Models.File do
schema "" do
field :description, :string, virtual: true
field :url, :
标签: Elixir
phoenix-frameworkecto
当涉及到向现有模型添加新关联时,我对Ecto感到相当困惑。假设我有一些讨论板,用户可以在其中查看帖子,我有以下模型:
schema "discussion_items" do
many_to_many :likes, XXX.Tag, join_through: "discussion_items_likes"
timestamps()
end
schema "likes" do
belongs_to :user, XXX.User
timestam
我想生成一个令牌并将其插入我的mysql数据库,这是当前的代码,我只是传递“123”。mix phoenix.gen.secret可以生成随机字符串如何将其用于控制器
def create(conn, %{"token" => token_params}) do
token_params = Map.merge(token_params, %{"value" => "123"})
changeset = Token.changeset(%Token{}, token_params)
跑步时
1..10000000000000000000 |> Enum.sum
结果是在似乎恒定的时间内计算的-我假设它使用公式1+2+…+n=n(n+1)/2
是什么让elixir能够进行这种优化?1..n表示法是否不同于将普通列表声明为[1,2,3]。当我检查1..100000时,它似乎返回一个字符串。这是怎么回事?1..100000000000000000是一个范围,Elixir在枚举和中有一个特例,用于使用整数求和公式的范围:
def sum(first..last) when
我有以下控制器:
defmodule Campaigns.CampaignController do
use Campaigns.Web, :controller
alias Campaigns.Campaign
alias Campaigns.ApiParams
plug :ensure_account_id
def index(conn, %{"account_id" => account_id}) do
query = from c in Campa
有一种方法可以作为独立应用程序运行exq:。但问题是我真的不明白如何让它工作。如果exq作为依赖项添加到我的phoenix应用程序中,那么当我运行应用程序时,它已经在运行了。我可以让作业排队,它们正在运行。所以我的问题是,如何不将其与我的应用程序一起运行,而是将其作为单独的应用程序运行?(例如,可以在Heroku上的单独工作程序上运行它)。您是否尝试在Phoenix应用程序中运行Exq,可以排队,但不让它运行该实例中的作业
有两种选择:
1) 您可以将Exq设置为仅在排队器模式下启动。使用此选项
标签: Elixir
phoenix-frameworkphoenix-channels
我目前正在Phoenix 1.2.1版和Elixir 1.4.1版上编写一个即时消息服务器,遇到了一个涉及频道的问题。我开始这个项目时没有html,也没有早午餐,如果这会影响什么的话
当我尝试将此JSON字符串发送到服务器时:
{ "topic": "mailbox:tom"
, "event": "join"
, "payload": {"hello": "world"}
, "ref": 1234}
我从命令提示符处获得忽略InstantMessenger.UserSocket中不匹配的主
标签: Elixir
phoenix-frameworkecto
作为附加问题:
如何更改查询以返回包含月份整数和分组计数的元组列表?因此,您的结果如下所示:
[{1, 2}, {2, 2}, {3, 2}, {4,2}]
这是从对这个问题的评论中得出的
query
|> group_by([e], fragment("date_part('month', ?)", e.inserted_at))
|> select([e], {fragment("date_part('month', ?)", e.inserted_at), count(e
我有一个genstage应用程序的例子,在它的使用者中,我需要使用与redis的连接。我不明白我需要如何通过这个连接来处理事件
如果我写:
defp connection do
{:ok, conn} = Redix.start_link(host: "0.0.0.0", port: 6379)
conn
end
然后,每次在handle_events函数中调用连接时,它都会创建一个新连接
如何解决此问题?您可以将连接保持在GenStage消费者的状态(就像您在GenS
我正在把我的Phoenix应用程序推到Kubernetes集群进行审查。我使用GitLab为web服务器创建一个服务,为临时postgres pod创建另一个服务
我想做的是自动化mixexto.create和mixexto.migrate。然而,有一个时间问题——postgres服务器还没有准备好的时间很短
在创建web应用程序服务之前,我可以在部署脚本中轮询postgres服务。但是,这是最实用的方法吗?库伯内特斯有一种方法,可以帮助你
根据文档,这里是一个等待dB容器的应用程序容器的示例
发件人:
:应用程序-应用程序在运行时依赖的所有应用程序。默认情况下,此列表将根据依赖项自动推断。任何额外的Erlang/Elixir依赖项都必须在:extra_applications中指定。Mix和其他工具使用应用程序列表,以便在启动应用程序本身之前启动依赖项
:额外的应用程序-您希望在应用程序启动之前启动的Erlang/Elixir应用程序列表。例如,Elixir的:logger或Erlang的:crypto
如果自动推断出:applications的列表,那么当我们应该将应用程序添加到:
在凤凰伞应用程序中,我可以跑步
mix phoenix.server编译并运行所有应用程序。我想有一个单独的命令来编译和运行每个子应用程序独立
他们说这是可能的,但我试过了,没能猜出命令的格式
我们可以从任何目录运行mix phx.new来引导我们的
凤凰城申请。菲尼克斯将接受绝对或绝对的
新项目目录的相对路径
从@Dogberts的回复来看,这是对文档的误解。可以通过@Dogberts response传递路径来创建具有phx.new的新应用程序,而不是使用phx.server编译和运行,这是
因此,看看本文中的源代码,我看到一个向后的箭头,如pid是的,运算符被弃用,取而代之的是send/2和。修复起来很简单:只需更改所有a
官方文件中说:
请注意,这仅适用于元组本身,而不适用于其内容。对于
实例,当您更新元组时,所有条目都在
旧元组和新元组,已替换的条目除外。在里面
换句话说,Elixir中的元组和列表能够共享它们的
目录这减少了语言的内存分配量
需要执行,并且由于不可变
语言的语义
这是否意味着:在更改元组时,新旧元组使用相同的内存地址共享数据,而不是像erlang中那样分配新内存?这意味着元组中的值不会被克隆
例如,Erlang中的一个小整数占用1个字的内存,一个元组占用2个字+每个元素的大小。如果你现在创建一
标签: Elixir
phoenix-frameworkpolymorphic-associationsecto
建议在Phoenix中处理多态关联的方法似乎是添加一个中间模式,其中包含对其他模式的引用:
)
因此,如果我想用不同种类的动物创建模式,我会:
defmodule Animal do
use Ecto.Model
schema "animals" do
belongs_to(:dog, Dog)
belongs_to(:cat, Cat)
belongs_to(:owner, PetOwner)
end
end
defmodule Dog do
标签: Elixir
typecheckingdialyzer
我有以下代码:
@spec test_pass(String.t) :: (:failed | {:ok, map()})
def test_pass(pass) do
db_user = %{password_hash: @hash_for_foo}
with {:ok, ^db_user} <- Comeonin.Argon2.check_pass(db_user, pass) do
{:ok, db_user}
else
_ -> :failed
我想知道为什么会出现这个错误,以及如何修复。这可能是由于数据库中的用户id冲突造成的吗?另一件事是,这甚至可能不是发出此错误的文件
这是我在注释掉id:user.id和user:user.username并用静态整数替换hash_email后得到的结果
我删除了整个数据库,并再次运行mixecto.create&&mixecto.migrate
和mix phx.server并创建了一个新的用户帐户
还使用不同的浏览器进行了测试。因此,我清除了以前浏览器的cookies,现在可以使用了 我做
我正在尝试编写帮助器宏,它允许我在没有大量样板的情况下编写一堆长生不老药结构,因此我编写了宏:
defmodule Events do
@moduledoc false
defmacro defevent(module, fields \\ []) do
keys = Keyword.keys(fields)
quote do
defmodule unquote(module) do
@type t :: %__MODULE__{unquo
考虑一下这个简单的函数:
def myfun(first \\ :a, middle \\ :b, last \\ :c) do
{first, middle, last}
end
我想为第一个和最后一个参数传递函数特定的值,并让它推断中间的参数。我以为这样的事情可能会奏效:
{:foo, :b, :baz} = myfun(:foo, _, :baz)
但事实并非如此
完成我要做的事情的正确方法是什么?正如Aleksei Matiushkin在评论中提到的,当所有参数都是可选的时,使用
标签: Elixir
phoenix-frameworkgen-server
我试图在Phoenix应用程序中用作的事件处理程序,但由于某些原因,我似乎无法理解为什么没有调用句柄转换函数。我使用:observer.start()检查了进程是否处于活动状态
在GenServer正确处理cast调用时,我是否缺少一些东西
本质上,流程函数应该处理传入事件并将其强制转换到GenServer,其中GenServer将处理强制转换并对该事件执行域逻辑
----发电机服务器模块----
defmodule App.Notifications.EventHandler do
使用Gen
我希望删除小数部分的尾随零,并将整数部分保持为中性形式(因此不会将其从100更改为1e2。正确使用会删除尾随零,但也会切换到科学记数法
iex(30)> d = Decimal.new("1.00000")
#Decimal<1.00000>
iex(31)> Decimal.reduce(d)
#Decimal<1>
iex(32)> d = Decimal.new("100.00000")
#Decimal<100.00000>
iex(
我有一个带有时间和操作列的表。操作列包括create、update和delete值,时间有灵丹妙药utc datetime。我想基于日期时间进行排序,如果基于同一时间戳存在多行,我想首先获取删除行,然后创建和更新
错:
1. { time: TIME1, operation: "create" }
2. { time: TIME1, operation: "delete" }
3. { time: TIME1, operation: "updat
标签: Elixir
database-migrationecto
我想从这里开始:
schema "products" do
field :name, :string
field :brand, :string
...more fields...
end
为此:
schema "products" do
field :name, :string
...more fields...
end
schema "brands" do
fi
我是Elixir的新手,尝试将Rails API移植到Phoenix作为一个学习项目
我有一个博士后时间域,我已经将它添加到了一个外部培训计划中:
问题:我想输出一个12小时格式的时间版本,例如16:30,作为字符串:例如,4:30pm。我一直很难找到一种简单/标准的方法来做这件事
这是我迄今为止最接近的解决方案:
def format_time(time) do
{:ok, {hours,minutes,y, z}} = Ecto.Time.dump(time)
{hour, ampm
我在iex中尝试了以下代码:
iex(13)> String.valid?(<<128>>)
false
iex(14)> String.valid?(<<191>>)
false
iex(13)>String.valid?()
假的
iex(14)>字符串。有效?()
假的
为什么两个字符串都无效?就像Ramon Snir所说的,您需要使用utf8。从入门指南中:
字符串是UTF-8编码的二进制文件。为了准确理解我们的意思,我们需
我在编写函数子句时遇到了问题,我需要根据映射进行模式匹配,并保留它以便在函数中使用。我无法理解语法将是什么。基本上我想要这样的东西:
def check_data (arg1, %{"action" => "action1", ...}, arg2) do
# access other keys of the structure
end
我相信这是非常基本的,但这似乎是我无法理解的。我已经阅读了许多教程,但似乎找不到一个可以处理此用例的教程。要匹配地图的某些键并将整个地图存储在一个变
我对phoenix form submit进行了一些自定义,使用jquery防止重新加载(因为我的登录表单处于模式),表单:
jquerys preventdefault()是否可能是原因:闪存未显示错误?我遗漏了什么?据我所知,你基本上破坏了你想要使用的机制put_flash功能将数据放入flash会话范围,您可以在渲染中访问该范围。但是您不再加载页面,而是使用ajaxpreventDefault()使页面不重新加载(这可能是您想要的)
您可以按照您对ajax的设想使用它,只将数据作为json
标签: Elixir
phoenix-frameworksystemdedeliver
我使用edeliver将phoenix应用程序部署到我的服务器。如果服务器突然重启,我希望我的phoenix应用程序能够自动恢复并受到监控。似乎systemd工具可以帮助我,但它需要将phoenixpid文件存储在某个地方
有没有办法让edeliver在部署后立即保存phoenixpid文件?
也许有比systemd更好的方法在服务器重启后恢复和监视应用程序
注意:我最感兴趣的是监视pid。我终于找到了解决方案。实际上,edeliver中有部署后挂钩
在.deliver/config中:
pos
我运行了mix phoenix.gen.html主题使用的标题:boolean,然后运行了mix-exto.migrate来运行迁移
我把这个添加到我的路线中
defmodule ParrotApi.Router do
use ParrotApi.Web, :router
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_flash
plug :pro
我以这种风格进行了大量的模式匹配:
def action(%{start_date: start_date, amount: amount, notify: notify %}) do
# some action
end
大多数情况下,我为参数选择的名称与映射中的名称相同。是否有一种快捷方式可以指定模式匹配大小写,而不必为键和值重复相同的名称
以下伪代码行中的某些内容:
def action(%{start_date: %s, amount: %s, notify: %s}) do
I
是否可以不使用Enum.partition构建快速排序?我使用一个过滤器实现了这段代码,但是我在列表中遍历了两次,以得到另外两个。有人能给我演示一下如何在单子上走一次吗
defmodule QuickSort do
def sort([]) do
[]
end
def sort(l) do
[head | tail] = l
{l1, l2} = partition(head, tail)
sort(l1) ++ [head] ++ sort(l2)
我想通过控制器编写通用逻辑。
我想我应该使用plug。然而,我不知道如何编码
我只想在FooController和BarController中对index01使用公共逻辑,但对index02使用公共逻辑
foo_controller.ex
defmodule MyAppWeb.FooController do
use MyAppWeb, :controller
def index01(conn, _params) do
~~~
end
def index02(conn
在phoenix中查看配置文件时,如果我创建如下配置:
config :myapp,
http: 4000
Application.fetch_env!(:myapp, :http)
[
{:ecto_repos, [MyApp.Repo]},
{.Repo,
[
username: "postgres",
password: "postgres",
database: "myapp_dev",
hostname: "localhos
标签: Elixir
phoenix-frameworkfunctional-testingphoenix-channelsphoenix-live-view
凤凰卫视奇才们好 是一种普遍的行为。如果您阅读文档,您可以找到:
除了提供的同步和异步通信
以及通过以下功能发送的“常规”消息:
,以及类似的,可以在内部处理
回调
因此,只要您知道流程的pid,您就可以发送其中任何一个。经过大量研究、反复试验、错误、错误(迭代),我们提出了以下测试:
test "handle_info/2", %{conn: conn} do
{:ok, view, disconnected_html} = live(conn, "/")
assert disconn
我是长生不老药的新手,在iexshell中进行实验学习,我是一个没有问题的人
为简单起见,我们将当前shell会话进程称为“主进程”
我生成一个子进程,在“主进程”中编写一个receive块来侦听子消息。当点击回车键时,它会将“主进程”置于等待状态。这基本上冻结了“主要流程”,使其对进一步输入不负责任
很多次我都被错误地困在这种状态中。如果我搞砸了,我需要关闭shell并重新开始,失去所有的状态和设置
我的问题:是否有办法撤销/取消/中断工作的接收块
或者,是否有一种方法,我可以启动另一个会话,
标签:elasticsearch Elixir
phoenixhttpoison
当我在ElasticSearch中使用DevTools时,要获取POD的信息:
它给了我大约310行:
但当我在我的长生不老药应用程序中这样做时:
logs = HTTPoison.get("https://x.x.x.x:9200/lo*/_search?q=kubernetes.pod_name:logs-dep-test-7469c67667-fcrzh", hackney: [:insecure, basic_auth: {"xxxx", &q
上一页 1 2 ...
55 56 57 58 59 60 61 ...
下一页 最后一页 共 125 页