在我的项目中,我想使用mysql,所以我结帐这个https://github.com/dizzyd/erlang-mysql-driver . 我想知道如何安装应用程序,以便我的项目可以与之交互
看看"rebar" - https://bitbucket.org/basho/rebar/wiki/Home
它可用于安装依赖项,以及用于创建独立版本 .
快速浏览一下你想要使用的erlang-mysql-driver,可以看出它还在使用rebar进行依赖管理 .
如果您已经开始布置您的应用程序(已经完成了一些编码)或者如果您是新手,螺纹钢可能会使事情变得复杂,但是,如果您的项目是erlang / OTP应用程序,那么我建议您首先根据推荐的文件系统如下:
MyProject--/src /ebin /lib /include /priv /doc /examples /test /Emakefile
Emakefile 是一个重要文件 . 它可能没有文件扩展名 . 它使BIF: make:all() 能够编译您指向的所有erlang源模块,并将所有.beam文件传输到您想要的目的地 . 例如:我希望编译 src 中的所有模块并将梁文件传输到 ebin ,我将此输入 Emakefile
Emakefile
make:all()
src
ebin
{"src/*", [debug_info, netload,strict_record_tests,warn_obsolete_guard,{outdir, "ebin"}]}.
在这种情况下,我将启动erlang shell,其 pwd() 指向文件夹 MyProject ,以启用函数调用 make:all() 找到文件 Emakfile ,以便编译我的所有src文件 .
pwd()
MyProject
Emakfile
现在,假设您有另一个OTP应用程序,您希望将其作为构建中的额外包 . 如果它像我向你展示的那样安排了OTP,并且还没有构建,即尚未制作,我的意思是只有它的src,它的文件夹ebin是空的,或者ebin可能已经包含了 .APP file . 然后将此OTP应用程序复制到 lib 文件夹中,以便您的应用程序如下所示:
.APP file
lib
MyProject--/src /ebin /lib/some_otp_app-1.0 /include /priv /doc /examples /test /Emakefile
那么我们将改变我们的 Emakefile 看起来像这样:
{"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"}]}.
在文件夹 MyProject 中,您可以放置一个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()"
您可以将此文件另存为 start_project.sh . 因此,当您对源代码进行更改时,即使在启动项目时,当您运行sh脚本时,终端路径指向文件夹: MyProject ,执行此操作:
start_project.sh
$pwd /export/home/your_user_name/MyProject $sh start_project.sh
这将在您在脚本中输入的节点处启动项目,并将编译所有在关闭时更改的src文件 . 不仅如此,你可以在shell中调用: make:all() ,只要你对你的src代码进行cahnges . 然后你会在调用之后调用: l(some_module) ,以便erlang vm重新加载已编译模块的新目标代码 . 那么,您的整个项目现在将显示如下:
l(some_module)
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应用程序,一切都会好的 . 成功!
2 回答
看看"rebar" - https://bitbucket.org/basho/rebar/wiki/Home
它可用于安装依赖项,以及用于创建独立版本 .
快速浏览一下你想要使用的erlang-mysql-driver,可以看出它还在使用rebar进行依赖管理 .
如果您已经开始布置您的应用程序(已经完成了一些编码)或者如果您是新手,螺纹钢可能会使事情变得复杂,但是,如果您的项目是erlang / OTP应用程序,那么我建议您首先根据推荐的文件系统如下:
Emakefile
是一个重要文件 . 它可能没有文件扩展名 . 它使BIF:make:all()
能够编译您指向的所有erlang源模块,并将所有.beam文件传输到您想要的目的地 . 例如:我希望编译src
中的所有模块并将梁文件传输到ebin
,我将此输入Emakefile
在这种情况下,我将启动erlang shell,其
pwd()
指向文件夹MyProject
,以启用函数调用make:all()
找到文件Emakfile
,以便编译我的所有src文件 .现在,假设您有另一个OTP应用程序,您希望将其作为构建中的额外包 . 如果它像我向你展示的那样安排了OTP,并且还没有构建,即尚未制作,我的意思是只有它的src,它的文件夹ebin是空的,或者ebin可能已经包含了
.APP file
. 然后将此OTP应用程序复制到lib
文件夹中,以便您的应用程序如下所示:那么我们将改变我们的
Emakefile
看起来像这样:在文件夹
MyProject
中,您可以放置一个shell脚本来启动项目,并将所有相关的ebin路径添加到您的节点代码路径中.sh脚本可能如下所示:您可以将此文件另存为
start_project.sh
. 因此,当您对源代码进行更改时,即使在启动项目时,当您运行sh脚本时,终端路径指向文件夹:MyProject
,执行此操作:这将在您在脚本中输入的节点处启动项目,并将编译所有在关闭时更改的src文件 . 不仅如此,你可以在shell中调用:
make:all()
,只要你对你的src代码进行cahnges . 然后你会在调用之后调用:l(some_module)
,以便erlang vm重新加载已编译模块的新目标代码 . 那么,您的整个项目现在将显示如下:因此,如果用这个“some_otp_app-1.0”替换erlang驱动程序的mysql应用程序,一切都会好的 . 成功!