我有一些问题,拌匀,MIX_ENV=prod用mix phoenix.server,它失败的开始.在Linode的Ubuntu 14.04上运行所有最新的(Elixir 1.0.5,Phoenix 0.14.0),除了Erlang(17.x,17.3).
$ MIX_ENV=prod PORT=80 mix phoenix.server
{"Kernel pid terminated",application_controller,"{application_start_failure,elirc_site,{{shutdown,{failed_to_start_child,'Elixir.ElircSite.Endpoint',{shutdown,{failed_to_start_child,'Elixir.Phoenix.Endpoint.Server',{shutdown,{failed_to_start_child,{ranch_listener_sup,'Elixir.ElircSite.Endpoint.HTTP'},{shutdown,{failed_to_start_child,ranch_acceptors_sup,{{badmatch,{error,eacces}},[{ranch_acceptors_sup,init,1,[{file,\"src/ranch_acceptors_sup.erl\"},{line,30}]},{supervisor,init,1,[{file,\"supervisor.erl\"},{line,243}]},{gen_server,init_it,6,[{file,\"gen_server.erl\"},{line,306}]},{proc_lib,init_p_do_apply,3,[{file,\"proc_lib.erl\"},{line,239}]}]}}}}}}}}},{'Elixir.ElircSite',start,[normal,[]]}}}"}
Run Code Online (Sandbox Code Playgroud)
具体来说,我认为这部分是追踪.
{{badmatch,{error,eacces}},[{ranch_acceptors_sup,init,1,[{file,\"src/ranch_acceptors_sup.erl\"},{line,30}]}
Run Code Online (Sandbox Code Playgroud) 我想在自定义混合任务中通过Ecto显示来自我的数据库的数据.如何在我的任务中获得Ecto仓库(或启动它)?
我试过这样的东西,但它不起作用:
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(_) do
import Ecto.Query, only: [from: 1]
Mix.shell.info "=== Active users ==="
query = from u in "users"
sync = all(query)
Enum.each(users, fn(s) -> IO.puts(u.name) end)
end
end
Run Code Online (Sandbox Code Playgroud)
当我启动mix users.list时,这会给我以下输出:
** (ArgumentError) repo Mix.Tasks.Users.List is not started, please ensure it is part of your supervision tree
lib/ecto/query/planner.ex:64: Ecto.Query.Planner.query_lookup/5
lib/ecto/query/planner.ex:48: Ecto.Query.Planner.query_with_cache/6
lib/ecto/repo/queryable.ex:119: Ecto.Repo.Queryable.execute/5
Run Code Online (Sandbox Code Playgroud)
有什么想法或其他方法来解决这个问题?
如果我有一个mix.exs类似的文件:
defmodule Mix.Tasks.My_task do
use Mix.Task
@shortdoc "Perform my task"
def run(_) do
IO.puts "Working"
end
end
defmodule ElixirKoans.Mixfile do
use Mix.Project
def project do
...
end
Run Code Online (Sandbox Code Playgroud)
我很乐意用这个来运行mix my_task.
我如何my_task成为默认值,所以当我在mix没有任务的情况下运行时会执行它?
我想在Travis-CI上运行我的Phoenix应用程序的测试.
日志摘录:
$ MIX_ENV=test mix do deps.get, compile, test
Could not find hex, which is needed to build dependency :phoenix
Shall I install hex? [Yn]
Run Code Online (Sandbox Code Playgroud)
在获取和安装依赖项时,它会询问是否应该安装hex.我想知道我是否可以通过--yes混合选项,以便它不会问但只是安装?
我一直在阅读Donald Knuth第1卷的计算机程序设计艺术.现在我完成了第一部分,所有的数学都被解释了,这是非常愉快的.不幸的是,在p.他开始解释这种MIX基于真实机器语言的虚构机器语言,随后他将解释所有算法,而Knuth先生完全失去了我.
我希望这里有人"说话" MIX,可以帮助我理解它.具体来说,他失去了我开始解释不同操作和展示例子的地方(第125页).
Knuth使用以下形式的"指令格式":

他还解释了不同字节的含义:

因此,右字节是要执行的操作(例如,LDA"加载寄存器A").F字节是操作代码的修改,具有8L + R的字段规范(L:R)(例如,C = 8且F = 11产生"加载具有(1:3)字段的寄存器).然后+/- AA是地址,我是修改地址的索引规范.
这对我来说有点道理.但是Knuth带来了一些例子.第一个我理解除了几个位,但我无法绕过第二个例子的最后三个,而在下面的例子3中的更困难的操作中没有任何东西.
这是第一个例子:

LDA 2000只加载完整的单词,我们完全在寄存器A中看到它rA.第二个LDA 2000(1:5)加载从第二个位(索引1)到结尾(索引5)的所有内容,这就是加载除加号之外的所有内容的原因.第三个LDA 2000(3:5)只加载从第三个字节到最后一个字节的所有内容.另外LDA 2000(0:3)(第四个例子)有点理解.应复制-803并取 - 并将80和3放在最后.
到目前为止这么好,在number5中,如果我们遵循相同的逻辑,LDA2000(4:4)它只传输第四个字节.它确实对最后一个位置做了什么.但是,LDA 2000(1:1)应该只复制第一个字节(符号).这很奇怪.为什么第一个值是+而不是 - (我只想要 - 被复制).为什么其他值都是0而最后一个是问号?
然后他给出了第二个例子的操作STA(商店A):

同样,STA 2000,STA 2000(1:5)和STA 2000(5:5)有意义的逻辑相同.但是,Knuth确实如此STA 2000(2:2).你希望在寄存器A中复制第二个字节等于7.但不知怎的,我们最终会得到- 1 0 3 4 5.我一直在看这些几个小时,并且不知道这是怎么回事,或者跟随这一个(STA 2000(2:3)和STA 2000(0:1))的两个例子可以导致显示的位置的内容.
我希望这里有人可以对这三个人发光.
此外,我也有在那里,他解释了操作的页面大麻烦ADD, …
我发现编译时警告非常有用,但我偶尔可能会错过它们,特别是如果它是在一个测试在CI服务器上运行的pull请求中.
理想情况下,我会在项目组合文件中指定一些会使编译器更严格的内容.
我希望这对所有混合任务都有效,我不想将标志传递给命令,因为这很容易忘记.
例如,对于带有编译器警告的项目,此命令应该失败
mix clean && mix compile
Run Code Online (Sandbox Code Playgroud)
应该是这个
mix clean && mix test
Run Code Online (Sandbox Code Playgroud) 我正在关注本教程:http://elixir-lang.org/getting-started/mix-otp/agent.html
所以在我的Elixir项目中,我有一个模块lib/kv/bucket.exs,并对它进行测试test/kv/bucket_test.exs.
当我运行混合测试时,我收到以下错误:** (UndefinedFunctionError) undefined function KV.Bucket.start_link/0 (module KV.Bucket is not available)我错过了什么?
我正在尝试为我的项目增加覆盖范围,但一直遇到问题。
我已经尝试了此列表底部错误消息中的所有建议。
我有一个大型项目,我希望为单元测试添加覆盖范围,但所有覆盖范围包都类似。
我开始了一个干净的项目,“bug”,只有mix deps() 添加所以干扰被最小化。
任何帮助,将不胜感激。
版本:
rebar3 --version
rebar 3.13.2 on Erlang/OTP 22 Erts 10.4.3
elixir --version
Erlang/OTP 22 [erts-10.4.3] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1] [hipe]
Elixir 1.9.4 (compiled with Erlang/OTP 22)
erl --version
Erlang/OTP 22 [erts-10.4.3] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1] [hipe]
Eshell V10.4.3 (abort with ^G)
Run Code Online (Sandbox Code Playgroud)
deps 中的 mix.exs
defp deps() do
[
#{:coverex, "~> 1.5", only: [:test], runtime: false},
{:excoveralls, "~> 0.13.0", only: [:test], runtime: false},
{:idna, "~> 6.0.1"},
]
end
Run Code Online (Sandbox Code Playgroud)
我使用了不同版本的coverex 和excoveralls,但结果是一样的。 …
根据这个问题中有关如何使用当前项目的依赖关系加载iex 的建议,我能够以非常高效的方式使用phoenix框架依赖项.但是,为每一件事提供Phoenix项目的命名空间都会有点乏味.
而不是打字,MyApp.Repo.all(MyApp.User)我希望能够做到Repo.all(User).我可以单独为每个东西添加别名,alias MyApp.Repo, as: Repo但有没有办法一次性完成所有这些操作?
对不起,我是Elixir的新手.在构建凤凰应用程序时,mix deps.get失败并出现错误.
% mix deps.get
Could not find Hex, which is needed to build dependency :phoenix
Shall I install Hex? [Yn] y
** (MatchError) no match of right hand side value: {:error, {:ssl, {'no such file or directory', 'ssl.app'}}}
(mix) lib/mix/utils.ex:409: Mix.Utils.read_httpc/1
(mix) lib/mix/utils.ex:354: Mix.Utils.read_path/2
(mix) lib/mix/local.ex:107: Mix.Local.read_path!/2
(mix) lib/mix/local.ex:86: Mix.Local.find_matching_versions_from_signed_csv!/2
(mix) lib/mix/tasks/local.hex.ex:23: Mix.Tasks.Local.Hex.run/1
(mix) lib/mix/dep/loader.ex:140: Mix.Dep.Loader.with_scm_and_app/4
(mix) lib/mix/dep/loader.ex:98: Mix.Dep.Loader.to_dep/3
(elixir) lib/enum.ex:1043: anonymous fn/3 in Enum.map/2
%
Run Code Online (Sandbox Code Playgroud)
erlang和elixir已通过kerl和asdf安装.我的安装日志在这里http://otiai10.hatenablog.com/entry/2016/02/03/154953
envirionment
发生了什么,我该怎么办?
elixir-mix ×10
elixir ×9
assembly ×1
dependencies ×1
erlang ×1
hex ×1
iex ×1
knuth ×1
travis-ci ×1
version ×1