我们正在熟悉Erlang / OTP和Riak(Core,KV,Pipe等),以便依次开发开源分布式应用程序。我们的项目将有许多依赖项:像erlang_js,protobuffs等工具,还有我们需要运行的服务,例如Riak KV。
在Python / Ruby / Node.js中,如果模块放在相对于项目的标准子目录中,您可以引用它们,然后将它们打包在发行版中。你可以在项目目录中启动一个shell,使用你的模块,进行测试等等,如果遵循良好的做法,这一切都很容易。
在Erlang / OTP中组织开发环境的最佳实践是什么,所有依赖项都可以访问(并且可以轻松更新到最新版本),对运行节点的shell访问,测试,发布等等?
答案 0 :(得分:26)
查看钢筋: https://github.com/basho/rebar ,用于打包,模板化和管理Erlang / OTP应用程序的版本。您将找到有关如何使用它的完整教程。
首先查看 this tutorial on OTP ,然后才能 switch to this one 它显示了你的发布以及如何在Erlang中处理它们。在开发项目时使用此 entire book as reference ,因为作者仍在逐步添加您可能需要的更多高级内容。
您可能还想继续阅读 Erlang Applications ,然后查看以下快速链接:
Erlang Packaging, Process One {
{3}} {
{3}} {
{3}} {
{3}}
最重要的是,非常认真地对待rebar
!这对于管理具有依赖性的Erlang应用程序非常重要。您可以继续在stackoverflow上发布您的问题,以便在您进步时获得任何帮助。
在我忘记之前,请查看 OTP Packaging Video by Chicago Boss Guys 中的大量内容
修改的
此外,查看 Erlang Dependency Management 上的系统文档以及如何使用 Richard Jones Advice and examples on Packaging Erlang Projects with Dependencies 处理版本非常重要。 erlang的好处在于它有多种选项可以做什么,只要它易于以这种方式维护你的应用程序。使用目标系统,您将学习如何嵌入Erlang VM,如何在Solaris
,VxWorks
上运行Erlang应用程序,以及使用 Maven Tool and how it is used in packaging Erlang Projects在Windows NT上创建Erlang应用程序作为服务。
通常,我们确保作为操作系统启动服务器,我们的应用程序从它开始。到目前为止,Solaris在嵌入Erlang / OTP VM方面比其他任何操作系统都有更多的自定义。您始终可以使用 Riak Community 与(a)嵌入式Erlang VM进行通信,其中escript创建一个允许连接到嵌入式VM的erlang节点(因此他们必须共享相同的cookie)并且嵌入式VM必须允许临时创建的节点通过执行
net_kernel:allow(List_of_nodes)进行连接,您确保调用此方法以使您的嵌入式VM仅允许来自已知严格指定的数字的连接节点。