[erlang-questions] Identifying modules to load in a release file
Zoltan Lajos Kis
kiszl@REDACTED
Sat Dec 19 19:29:15 CET 2009
Doug Fort wrote:
>
>
> On Sat, Dec 19, 2009 at 1:16 PM, Zoltan Lajos Kis <kiszl@REDACTED
> <mailto:kiszl@REDACTED>> wrote:
>
> All modules should be be grouped into applications. Mnesia is an
> application, however ets is just a module: it is part of the
> stdlib application.
>
> Each application has a .app file (usually in the ebin dir) that
> tells the version of the application and lists other applications
> it depends on.
> Basically if you ever have an application:start(App) in your
> sources, it should go here.
> An example my_app.app, that shows the app is version 0.1, and
> depends on four applications:
>
> {application, my_app,
> [{description, "My Application"},
> {vsn, "0.1"},
> ...
> {applications, [mnesia, sasl, stdlib, kernel]},
> ...
> ]
> }.
>
> Based on these files you should be able to gather the list of all
> applications you would like to start, and applications they depend on.
>
>
> How do I find the applications they depend on? That's my real
> question. I have an application that works fine in interactive mode,
> but one of its event handlers doesn't work right in embedded mode. I
> assume there's something I'm failing to load, but I am anumable to
> tell what it is from the documentation.
That should result in an undefined function error for the module which
is not loaded.
Run code:which(Module). in interactive mode; that should point you to
the application.
>
>
>
>
> You can get the version of each application from the .app file (or
> from the directory name).
> So the 0.1 release of my_thing for R13B03 should look like:
>
> {release, {"my_thing", "0.1"}, {erts, "5.7.4"},
> [{my_app, "0.1"},
> {mnesia, "4.4.12"},
> {sasl, "2.1.8"},
> {stdlib, "1.16.4"},
> {kernel, "2.13.4"}
> ]
> }.
>
> Regards,
> Zoltan.
>
> PS.: I guess kernel and stdlib is started anyway, so you don't
> need to explicitly list them. It probably doesn't make any harm
> though.
>
>
> Doug Fort wrote:
>
> How can one identify which library modules to put in the .rel
> file? For
> example, if a process uses the ets term storage, you must add
> {mnesia,
> "4.4.12"} to the release file. I suspect I'm missing something
> obvious, but
> I haven't found a straightforward way determine this.
>
>
>
>
>
>
>
> --
> Doug Fort, Consulting Programmer
> http://www.dougfort.com
More information about the erlang-questions
mailing list