我正在编写的Elixir库有两个自定义混合任务,一个用于使我的库成为项目依赖项的用户使用,一个用于仅在我的项目中使用.
这里的问题是,在将我的项目添加为dep之后,两个混合任务都可供其项目中的用户使用.
我该如何防止这种情况?我试图package: [ files: [ etc ] ]在我的Mix配置中避免任务,但它仍然在我的测试项目中可用,它通过git将我的库指定为dep.
我想组合音频片段,彼此叠加,以便它们同步播放并保存在新的音频文件中.任何帮助将非常感激.我已经在线进行了一些挖掘工作,但是无法找到关于Javascript音频编辑库(例如)的许多工具是否可用的确切答案.
在mix.exs你可以声明依赖性,如:
def deps do
[{:plug, "~> 1.0"}]
end
Run Code Online (Sandbox Code Playgroud)
为什么它需要"〜>"而不是简单地在元组的第二部分上的版本.
我已经看到,如果它从git获得依赖,你可以编写依赖,如:
def deps do
[{:plug, git: "git://github.com/elixir-lang/plug.git"}]
end
Run Code Online (Sandbox Code Playgroud) 从mix deps文档中:
:runtime-依赖项是否是运行时应用程序的一部分。如果您的mix.exs文件中:applications没有提供密钥def application,则Mix会自动将所有依赖项作为运行时应用程序包括在内,除非runtime: false给出了。默认为true。
根据mix compile.app文档:
:applications-您的应用程序在运行时依赖的所有应用程序。默认情况下,此列表是根据您的依赖项自动推断出来的。Mix和其他工具使用应用程序列表来启动依赖关系,然后再启动应用程序本身。
这是否意味着添加runtime: false依赖项将使其不能作为应用程序监视树的一部分启动,但其功能将在编译时可用?
在Phoenix Framework项目中包含外部存储库时,可以传递Github选项:
{:example, "~> 0.9.9", github: "somewhere/example"}
Run Code Online (Sandbox Code Playgroud)
是否有包含本地存储库的选项,类似于Gemfile中的Rails约定?
gem 'somewhere', '0.0.2', :path => 'some/local/directory'
Run Code Online (Sandbox Code Playgroud) 我有许多任务和工作,希望能够在生产灵丹妙药应用程序上手动执行。目前,我通过在中运行代码来执行它们remote_console。我试图通过使用来运行它们/bin/my_app command MyModule my_func,但是我收到关于另一个Erlang节点正在使用的资源的错误。
我更喜欢使用/bin/my_app command MyModule my_func样式,以便可以使用ssh运行bash脚本。
在Elixir应用程序上运行远程任务的推荐方法是什么?
是否有我可以结合使用的命令行调用,mix它会在不运行测试的情况下输出所有测试名称?
我有一个elixir项目,下面是混合配置文件:
defmodule MyFirstApp.Mixfile do
use Mix.Project
def project do
[
app: :my_first_app,
version: "0.1.0",
elixir: "~> 1.5",
start_permanent: Mix.env == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger],
mod: {MyFirstApp, []}
]
end
# Run "mix help deps" to learn about dependencies.
defp deps do
[
# {:dep_from_hexpm, "~> 0.3.0"},
# {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"},
{:cowboy, "~> 1.1.2"},
{:plug, "~> 1.3.4"},
{:slime, "~> 0.14"}
] …Run Code Online (Sandbox Code Playgroud) 我有一个项目world_app,我已将其作为依赖项包含在hello_app 中(如果相关,我已将其作为本地依赖项包含在内)
defp deps do
[
{:world_app, path: "../world_app"}
]
end
Run Code Online (Sandbox Code Playgroud)
该world_app有config.exs有此配置
config :world_app, some_config: "config_string"
Run Code Online (Sandbox Code Playgroud)
当我尝试在hello_app 中获取在world_app中定义的配置变量时出现了我的问题(我在hello_app 中运行了 iex -S mix)
iex(1)> Application.get_all_env(:world_app)
[included_applications: []]
iex(2)> Application.get_env(:world_app, :some_config)
nil
Run Code Online (Sandbox Code Playgroud)
但是,当我在world_app 中做同样的事情时,我可以看到变量
iex(1)> Application.get_all_env(:world_app)
[some_config: "config_string", included_applications: []]
iex(2)> Application.get_env(:world_app, :some_config)
"config_string"
Run Code Online (Sandbox Code Playgroud)
我一直以为我可以从父应用程序访问依赖项的配置;我在这里错过了一些重要的东西吗?
我正在使用 Elixir 1.5.3 和 erlang 20
我的 Elixir 应用程序中有一些文件,我想从测试覆盖率报告中排除它们。我现在没有使用任何花哨的覆盖工具;(尽管我并不排除使用此类工具的可能性)我mix test --cover现在只是在使用。
如何告诉覆盖率分析工具给定的文件不应包含在覆盖率分析中?