加快 Erlang 编辑、编译、运行/调试周期

发布于 2024-11-04 04:41:01 字数 258 浏览 4 评论 0原文

编辑 Erlang 应用程序、编译代码并查看运行结果的最快方法是什么?最好在最后一步跳入 Erlang shell。

我当前的新手设置:

  • 编译应用程序并启动 erl shell 的脚本。
  • 然后我输入 application:start(foo)。
  • 当我修复拼写错误时,我使用 c('module') 重新编译模块并重新启动应用程序。

有更快的方法吗?顺便提一句。我选择的编辑器是 Emacs。

What is the fastest way to edit an Erlang application, compile the code and see the running result? Preferably jumping in the Erlang shell on the last step.

My current newbie setup:

  • A script that compiles the app and starts up the erl shell.
  • Then I type in application:start(foo).
  • When I fix a typo I recompile the module with c('module') and restart the app.

Is there a faster way? BTW. my editor of choice is Emacs.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

晨曦慕雪 2024-11-11 04:41:01

这是我的设置:

  • 在开发时,我在单独的终端窗口中保持 Erlang shell 打开。
  • 我从编辑器(使用组合键)开始编译,或者只需在源目录中键入 make 即可开始编译。
  • 编译后,我通过在 Erlang shell 中输入 l() 一次性加载所有更改的模块。您可以在这里找到这个宏和其他一些有用的宏: http://www.snookles.com/erlang/ user_default.erl

很少需要重新启动整个 Erlang 应用程序。重新加载更改的模块是一种更常见的用例,通常足以应用您的更改。

关于应用程序启动:如果您的应用程序依赖于其他应用程序,则 application:start() 将失败,直到您启动所有依赖项。因此,编写辅助函数 :start() 是很常见的。这是一个示例。另一个有用的函数是 :stop()

应用所有这些技术后,工作流程将如下所示:

  • 启动 Erlang shell 并保持打开状态; type:start().
  • 进行更改;运行编译;在 Erlang shell 中输入 l()
  • 当更改需要重新启动应用程序时,请输入 :stop(),:start()。

Here's my setup:

  • While developing, I keep the Erlang shell open in a separate terminal window.
  • I start compilation from the editor (using an key combination), or just by typing make in the source directory.
  • After compilation, I load all changed modules at once by typing l() in Erlang shell. You can find this and some other useful macros here: http://www.snookles.com/erlang/user_default.erl

There's rarely a need to restart the whole Erlang application. Reloading changed modules is a more common use-case and it is usually enough to apply your changes.

Regarding application start: if your application depends on other applications, application:start() will fail, until you start all the dependencies. Because of that, it is common to write a helper function <your-app-name>:start(). Here's an example. Another useful function is <your-app-name>:stop().

With all these techniques applied, a workflow would look like this:

  • Start the Erlang shell and keep it open; type<your-app-name>:start().
  • Make changes; run compilation; type l() in your Erlang shell.
  • When changes require application restart, type <your-app-name>:stop(), <your-app-name>:start().
又爬满兰若 2024-11-11 04:41:01

您可以将 rebar 视为构建工具。 make:all/0 和整个 make 模块也可以提供帮助。要从 shell 显式重新加载模块,您可以使用 l(Module)。最后,您可能还对创建一个 Erlang release 来“包装”所有内容感兴趣你的 Erlang 应用程序。

You might look at rebar as a building tool. make:all/0 and the whole make module could help as well. To explicitly reload a module from the shell you can use l(Module). Finally, you might also be interested in creating an Erlang release to "wrap" all your Erlang applications.

最舍不得你 2024-11-11 04:41:01

编辑和编译是由我使用的IDE(Eclispe with erlide)完成的。

我还创建了一个脚本来启动虚拟机我的应用程序和有用的工具。该脚本仅用于开发时间。

为了重新加载更改的源代码然后编译 bin,我使用 mochiweb 的重新加载器。重新加载器会观察 bin 目录,如果有变化,它会加载模块并运行 eunit 测试(如果内部有一些变化)。

示例:

erl +A 5 +K true -name @127.0.0.1 -pa $PWD/ebin $PWD/test $PWD/deps/*/ebin -boot start_sasl -s reloader -s 工具栏 -s

editing and compiling is done by the IDE (Eclispe with erlide) which i use.

I also created a script which starts the vm my application and helpful tools. The script is only used for dev time.

For reloading the changed sources and then compiled bins, i use the reloader from mochiweb. The reloader observes the bin dir and if there are changes, it loads the moduls and runs the eunit tests, if you have some inside.

Example:

erl +A 5 +K true -name @127.0.0.1 -pa $PWD/ebin $PWD/test $PWD/deps/*/ebin -boot start_sasl -s reloader -s toolbar -s

反差帅 2024-11-11 04:41:01

您还可以尝试 erlbuild。 Erlbuild 是一个简单的应用程序,它在 src 目录中查找更改的源文件,如果找到一些文件,则会再次编译并加载模块。加载模块后,erlbuild 运行模块的测试。

您可以在以下位置找到该项目: https://github.com/ulfa/erlbuild

~Ulf

what you can also try is erlbuild. Erlbuild is an simple application which looks in src directory for changed source files and if it finds some files, than it compiles and load the modules again. After loading the modules, erlbuild runs the the tests of the modules.

You can find the project under : https://github.com/ulfa/erlbuild

~Ulf

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文