我的Erlang项目有多个应用程序:我应该如何启动它们?

我的Erlang项目有多个应用程序:我应该如何启动它们?,erlang,otp,erlang-shell,Erlang,Otp,Erlang Shell,作为一个OTP的noobie,我正在努力理解如何构建我的Erlang项目。到目前为止,它在钢筋管理的应用程序目录下有几个应用程序: proj_root apps app1 app2 appN rebar.config 比如说,我可以在shell中用应用程序startapp1启动app1。毫无疑问,我可以通过appN重复这一点。但是有更好的方法吗?我可以,比方说,编写一个捆绑所有这些启动的函数吗?如果是,我应该把它放在哪里 我有几个其他的问题,但

作为一个OTP的noobie,我正在努力理解如何构建我的Erlang项目。到目前为止,它在钢筋管理的应用程序目录下有几个应用程序:

proj_root
   apps
      app1
      app2
      appN
   rebar.config 
比如说,我可以在shell中用应用程序startapp1启动app1。毫无疑问,我可以通过appN重复这一点。但是有更好的方法吗?我可以,比方说,编写一个捆绑所有这些启动的函数吗?如果是,我应该把它放在哪里

我有几个其他的问题,但将分别发布

非常感谢,


LRP

您确实可以按照建议手动启动应用程序。如果您有许多应用程序,并且它们之间存在依赖关系,那么这很快就会变得很麻烦

使用递归函数实现过程自动化非常容易。如果在一个或多个依赖项未运行时尝试启动应用程序,application:start/1将失败并返回{error,{not_started,App}}。此函数可以在您的任何应用程序中使用,甚至可以在它自己的应用程序中使用

然而,这种手动或自动进行的方式不是OTP方式,即使它可以证明通常对测试有用…。如果您遵循OTP原则,您应该创建一个包含所有应用程序的.rel文件的发行版。OTP版本由一组应用程序和它们所依赖的系统应用程序、一个模拟器和一个启动脚本组成,该脚本将启动所有应用程序并处理依赖关系。通过使用-boot标志指向正确的启动脚本,可以使用应用程序启动节点


这相当复杂,钢筋实际上可以。它甚至会生成shell脚本,使用OTP启动机制启动所有应用程序的节点。

您确实可以按照建议手动启动应用程序。如果您有许多应用程序,并且它们之间存在依赖关系,那么这很快就会变得很麻烦

使用递归函数实现过程自动化非常容易。如果在一个或多个依赖项未运行时尝试启动应用程序,application:start/1将失败并返回{error,{not_started,App}}。此函数可以在您的任何应用程序中使用,甚至可以在它自己的应用程序中使用

然而,这种手动或自动进行的方式不是OTP方式,即使它可以证明通常对测试有用…。如果您遵循OTP原则,您应该创建一个包含所有应用程序的.rel文件的发行版。OTP版本由一组应用程序和它们所依赖的系统应用程序、一个模拟器和一个启动脚本组成,该脚本将启动所有应用程序并处理依赖关系。通过使用-boot标志指向正确的启动脚本,可以使用应用程序启动节点


这相当复杂,钢筋实际上可以。它甚至会生成shell脚本,使用OTP启动机制启动所有应用程序的节点。

谢谢,Paul。这正是我一直在寻找的指导。我已经考虑过创建一个版本,但是文档的密度把我吓跑了。但你们给了我动力去挖掘和学习我必须学习的东西。我发现钢筋在构建版本时非常有用。具体来说:钢筋创建节点钢筋生成当然,您应该阅读文档并最终了解自动化背后的流程,但钢筋在遵守OTP标准的同时往往会让您走得更快。谢谢,Paul。这正是我一直在寻找的指导。我已经考虑过创建一个版本,但是文档的密度把我吓跑了。但你们给了我动力去挖掘和学习我必须学习的东西。我发现钢筋在构建版本时非常有用。具体来说:钢筋创建节点钢筋生成当然,您应该阅读文档并最终了解自动化背后的流程,但钢筋在遵守OTP标准的同时往往会让您更快地完成。