2012-11-09 68 views
0

我在这个过程中或学习erlang OTP和螺纹钢,我已经使用一些小的示例应用程序使用一些依赖:牛仔和啤酒。使用螺纹钢,开发环境的erlang OTP应用程序

我已发出

rebar get-deps 
rebar compile 

,事情进行得很顺利。现在我想启动我的控制台来测试周围的东西,但是我不明白如何启动依赖项应用程序。

我试着发出

rebar generate 

为了获得射击了应用程序的所有编排,即使它是大材小用只是开发测试,但我悲惨地失败得到以下转储

Crash dump was written to: erl_crash.dump 
eheap_alloc: Cannot allocate 1459620480 bytes of memory (of type "old_heap"). 
Aborted 

ebin目录只包含我编写的应用程序的光束文件,但不包含依赖关系,我看到依赖项在主应用程序deps目录中有自己的ebin目录,我该如何才能让它们在控制台中可用以启动它们?

我将不胜感激,如果有人可以提供一些线索,以常见的做法就是与多个OTP应用程序的开发ENV。

我已经阅读了一些教程,但他们主要针对的是钢筋释放周期而不是开发过程。

TIA

+0

我发现** chrash转储**通过'螺纹钢generate'产生的原因,我用的是钢筋下载的脚本,而不是建筑螺纹钢自己,包括它在我的道路,所以我以后正确建螺纹钢我的平台它不再需要一生的时间来完成发布,我可以成功启动所有应用程序。所以我的问题转移到:使用'rebar generate'是通用的方式来启动您的控制台并测试您的开发进度? – lfurrea

+0

我不知道它是否很常见,但我这样做是为了以与部署时运行相同的方式来测试应用程序。 – kjw0188

回答

0

在你的情况,你拉入DEPS目录模块通常应该从应用程序代码中调用 - 和你的应用程序可以使用应用Erlang的外壳典型地调用:开始/ 1功能。如果您还没有,我强烈建议您阅读Francesco Cesarini的优秀书籍Erlang编程的第12章“OTP行为” - 这对您尝试的内容来说是一个非常实用的介绍。

+1

https://github.com/basho/rebar/wiki/Release-handling - 描述使用你想要的钢筋创建脚本:rel/app-name/bin/app-name start/stop – snwight

+0

确实,钢筋脚本似乎工作得很好。只是最初我认为发布过程太重了,因为在我的配置不当的环境中,它耗时太长,并且在中间崩溃。所以这似乎是常见的做法。关于您的第一个答案,请记住我们正在讨论的符合OTP标准的应用程序是否正确?我希望能够以合规的方式启动它? – lfurrea

+0

我的印象是,钢筋生成的应用程序启动/停止脚本的确符合OTP标准,所以也许我误解了一些重要的东西:) – snwight

相关问题