作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,假设我有一个 rebar 应用程序结构,并且在 deps 文件夹中我有许多依赖项,一些是库应用程序,一些是需要启动的应用程序。我通常这样做:
start(_Type, _Args) ->
code:add_path("../deps/depapp/ebin"),
{ok, _} = application:ensure_all_started(depapp),
这是在开发环境中执行此操作的正确方法吗?生产中怎么样?
最佳答案
您使用的方法不一定是错误的,但可能会暴露一些问题。例如,这样您就无法选择启动依赖的应用程序,这些应用程序必须在您的应用程序之前启动。
因此,还有其他方法可以加载
或启动
依赖的 OTP 应用程序或库。
1) 使用 erl
命令行标志:
erl -pa ebin deps/*/ebing -s your_dep_app start -s your_app start
2)使用包管理器来处理它:
作为示例,Rebar 作为包管理器可以为您处理它。您需要在 rebar.config
中指定应用程序依赖项,然后为 Rebar2 发出 rebar get-deps
或为 Rebar3 发出 rebar3compile
。以下是 Rebar3 示例配置文件的片段:
{deps,[
%% Packages
rebar,
{rebar,"1.0.0"},
{rebar, {pkg, rebar_fork}}, % rebar app under a different pkg name
{rebar, "1.0.0", {pkg, rebar_fork}},
%% Source Dependencies
{rebar, {git, "git://github.com/erlang/rebar3.git"}},
{rebar, {git, "http://github.com/erlang/rebar3.git"}}]}.
有关 Rebar 依赖管理器的更多信息,请查看 this链接。
此外,为了使用 Rebar 启动或加载它们,您可以发布一个版本并让 Rebar 启动或加载它们。以下是用于发布版本的示例 Rebar 配置文件的片段:
{relx, [
{release,
{your_app, "0.1.0"},
[your_dep_app_1,
{your_dep_app_2, load}]}]}.
此配置加载并启动 your_dep_app_1
,但仅加载 your_dep_app_2
。有关 Rebar 发布管理器的更多信息,请查看 this链接。
关于erlang - 在 Erlang 应用程序中加载依赖项的代码路径的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38015451/
我是一名优秀的程序员,十分优秀!