如何在Erlang中安装应用程序?

时间:2011-05-24 09:44:31

标签: erlang

在我的项目中,我想使用mysql,所以我结账https://github.com/dizzyd/erlang-mysql-driver。我想知道如何安装应用程序以便我的项目可以与之交互

2 个答案:

答案 0 :(得分:4)

如果您已经开始布置您的应用程序(已经完成了一些编码)或者如果您是新手,那么螺纹钢可能会使事情复杂化,但是,如果您的项目是erlang / OTP应用程序,那么我建议您先组织代码根据推荐的文件系统如下:

MyProject--/src
           /ebin
           /lib
           /include
           /priv
           /doc
           /examples
           /test
           /Emakefile

Emakefile是一个重要文件。它可能没有文件扩展名。它使BIF:make:all()能够编译您指向的所有erlang源模块,并将所有.beam文件传输到您想要的目的地。 例如:我是否希望编译src中的所有模块并将梁文件传输到ebin,我将其输入Emakefile

{"src/*", [debug_info, netload,strict_record_tests,warn_obsolete_guard,{outdir, "ebin"}]}.

在这种情况下,我将启动erlang shell,其pwd()指向文件夹MyProject,以启用函数调用make:all()以查找文件Emakfile,以便编译我的所有src文件。

现在,假设您有另一个OTP应用程序,您希望将其作为构建中的额外包。如果它像我向你展示的那样安排了OTP,并且还没有构建,即尚未制作,我的意思是只有它的src,它的文件夹ebin是空的,或者ebin可能包含{{1 }} 已经。然后将此OTP应用程序复制到.APP file文件夹中,以便您的应用程序如下所示:

MyProject--/src
           /ebin
           /lib/some_otp_app-1.0
           /include
           /priv
           /doc
           /examples
           /test
           /Emakefile

然后我们会将lib更改为:

{"src/*", [debug_info, netload,strict_record_tests,warn_obsolete_guard,{outdir, "ebin"}]}.
{"lib/some_otp_app-1.0/src/*", [debug_info, netload,strict_record_tests,warn_obsolete_guard,{outdir, "lib/some_otp_app-1.0/ebin"}]}.

在文件夹Emakefile中,您可以放置​​一个shell脚本来启动项目并将所有相关的ebin路径添加到您的节点代码路径中.sh脚本可能如下所示:

#!/bin/bash
erl \
    -name my_node@my_domain \
    -pa ./ebin ./lib/*/ebin ./include \
    -mnesia dump_log_write_threshold 10000 \    
    -eval "make:all()"

您可以将此文件另存为MyProject。因此,当您对源代码进行更改时,即使在启动项目时,当您运行sh脚本并将终端路径指向文件夹start_project.sh时,也可以执行以下操作:

$pwd
/export/home/your_user_name/MyProject
$sh start_project.sh

这将在您在脚本中输入的节点上启动您的项目,并将编译所有在关闭时更改的src文件。不仅如此,您还可以在shell中调用MyProject,只要您对src代码进行更改即可。然后你会在调用后调用make:all(),以便erlang vm重新加载已编译模块的新目标代码。 因此,您的整个项目现在将显示如下:

MyProject--/src
           /ebin
           /lib/some_otp_app-1.0
           /include
           /priv
           /doc
           /examples
           /test
           /Emakefile
           /start_project.sh

因此,如果用这个“some_otp_app-1.0”替换erlang驱动程序的mysql应用程序,一切都会好的。成功!

答案 1 :(得分:3)

看一下“钢筋” - https://bitbucket.org/basho/rebar/wiki/Home

它可用于安装依赖项,以及用于创建独立版本。

快速浏览一下你想要使用的erlang-mysql-driver,表明它也在使用rebar进行依赖管理。