首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何与使用relx发布汇编程序构建的应用程序正确地使用同步?

如何与使用relx发布汇编程序构建的应用程序正确地使用同步?
EN

Stack Overflow用户
提问于 2014-03-26 04:58:24
回答 2查看 1.1K关注 0票数 4

我想使用同步现场重新编译与牛仔项目组装使用relx (按照牛仔入门指南)。

问题是,即使我设法在我的应用程序中通过在my_application.app.src文件中的应用程序列表中提到同步来获得同步,如下所示:

代码语言:javascript
复制
{application, my_application, [
    {description, "My Cowboy Application"},
    {vsn, "0.1.0"},
    {modules, []},
    {registered, [my_app_sup]},
    {applications, [
        kernel,
        stdlib,
        cowboy,
        sync
    ]},
    {mod, {my_app, []}},
    {env, []}
]}.`

我仍然无法使它工作,因为relx汇编程序没有将我的源代码移到_rel目录(当然,它不应该)。

有没有办法告诉同步我的源文件在哪里?或者可能是我完全错了,并且必须以其他方式实现relx的同步集成?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-26 06:28:11

我的同步开发设置包括:

  • 将同步安装到导出的ERL_LIBS路径(即$HOME/lib/erlang)
  • 创建开发relx配置并使用relx -c relx-dev.config执行该配置
  • 创建一个简单的shell脚本到控制台脚本所在的位置并执行它
  • 添加配置脚本来调整我的咆哮通知

在开发时,我在开发relx.config文件中包含了同步。但是,一旦我在一个目录中安装了同步并将其导出到ERL_LIBS,它就会在我的任何erlang项目中启动同步应用程序时神奇地出现。

下面是我开发的relx-dev.config文件的一个示例:

代码语言:javascript
复制
{dev_mode, true}.
{lib_dirs, ["/usr/local/erlang"]}.
{output_dir, "_rel-dev"}.
{release,
 {myapp, "0.0.1"},
 [{myapp_core, "0.0.1", '='}, sasl, syntax_tools, compiler, sync]
}.
{extended_start_script, true}.

一旦创建了relx-dev.config脚本,我就使用以下命令构建发行版:

代码语言:javascript
复制
relx -c relx-dev.config

下面是启动控制台的console脚本:

代码语言:javascript
复制
#!/usr/bin/sh
_rel-dev/myapp/bin/myapp console

这个脚本将启动一个带有节点名称的erlang,启动我的所有应用程序和同步应用程序,并加载一个自定义的同步配置文件。

下面是放置在启动shell的同一个目录中的一个示例sync.config文件:

代码语言:javascript
复制
[{sync, [{growl, [errors, warnings]}]}].

同步自述有很多关于为控制台和咆哮配置日志记录行为的信息。使用.config文件的替代方法包括向erl命令传递选项和在shell中执行同步函数。

票数 6
EN

Stack Overflow用户

发布于 2014-04-12 09:22:15

如果我正确地理解了你的问题,你想做的就是通过relx运行你的应用程序,并让扫描获取你对源代码所做的任何更改。如果是这样的话,这就是你所做的。

运行relx命令时,添加一个-d选项。

./relx -d真

这意味着relx将将所有依赖项符号化,而不是复制它们。这也使得包处理速度更快。从那里开始,只需在_rel文件夹中运行应用程序(或将其输出到哪里)并“同步”。

几个注意事项:

1)如果不想对所有依赖项进行符号链接,则可以使用重写功能。然而,我很懒,做了一种完全或根本没有的方法:)

2)在relx.config文件中,确保每次编辑文件时都包含“编译器”和syntax_tools作为依赖项或扫描时会崩溃:(

这是我的relx.config的副本,如果有帮助的话

代码语言:javascript
复制
{paths, ["apps", "deps"]}.
{lib_dirs, ["/usr/local/lib/erlang/lib", "apps", "deps"]}.
{sys_config, "./config/sys.config"}.
{release, {merigo_chat, "1.0.0"}, [
kernel,
stdlib,
syntax_tools,
compiler,
sync,
{mySampleApp, "1.0.0"},

% Debugging applications,  Need to run observer and debugger from within the package
tools,
wx,
observer,
runtime_tools,
webtool,
appmon,
debugger
]}.

% Not you can skip the overrides if you use the -d option in relx
{overrides, [
{mySampleApp, "apps/mySampleApp"},
]}.
{extended_start_script, true}.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22651850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档