[Erlang]Дескриптор приложения и зависимости
От: Аноним  
Дата: 13.10.11 03:44
Оценка:
Доброго времени суток!
Не могу понять в чем дело.
Есть дескриптор приложения — все как обычно. Добавил
{applications, [kernel, stdlib, exmpp]}

запускаю свое приложение
application:stat(my_app_name).

получаю {error,{not_started,exmpp}}

Хотя если запускать exmpp:start() или application:start(exmpp) все хорошо

та же самая проблема возникает и со mnesia
Re: [Erlang]Дескриптор приложения и зависимости
От: Курилка Россия http://kirya.narod.ru/
Дата: 13.10.11 04:51
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Доброго времени суток!

А>Не могу понять в чем дело.
А>Есть дескриптор приложения — все как обычно. Добавил
А>{applications, [kernel, stdlib, exmpp]}

А>запускаю свое приложение

А>
А>application:stat(my_app_name).
А>

А>получаю {error,{not_started,exmpp}}

А>Хотя если запускать exmpp:start() или application:start(exmpp) все хорошо


А>та же самая проблема возникает и со mnesia


Если хочется нормальный старт (и апгрейд) приложений, то лучше разобраться с релизами (вариант на русском), удобней и практичней всего использовать rebar для механизации этого дела.
Re: правильно все
От: Odobenus Rosmarus  
Дата: 13.10.11 05:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>запускаю свое приложение

А>
А>application:stat(my_app_name).
А>

А>получаю {error,{not_started,exmpp}}

А>Хотя если запускать exmpp:start() или application:start(exmpp) все хорошо


А>та же самая проблема возникает и со mnesia


Все правильно. Если вы делаете релиз, то там получается бут скрипт, который и запустит все ваши зависимости перед приложением.

Если вы запускаете ручками, то и зависимости вам придется стартовать тоже ручками.
--
Odobenus Rosmarus, hochpersonlich
Re: [Erlang]Дескриптор приложения и зависимости
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 13.10.11 05:58
Оценка:
Здравствуйте, Аноним, Вы писали:

А>запускаю свое приложение

А>application:stat(my_app_name).

start?

А>получаю {error,{not_started,exmpp}}


Согласно ману application(3), application:start() проверяет наличие приложений, но не запускает их:

The application controller checks the value of the application
specification key applications , to ensure that all applications
that should be started before this application are running. If
not, {error,{not_started,App}} is returned, where App is the
name of the missing application.


Так что их таки надо запустить самому. Может, в app-модуле в его start(), может, через сборку релиза и запуск релиза целиком.

А>Хотя если запускать exmpp:start() или application:start(exmpp) все хорошо


А>та же самая проблема возникает и со mnesia


Ну так та же ситуация.
The God is real, unless declared integer.
Re[2]: [Erlang]Дескриптор приложения и зависимости
От: Аноним  
Дата: 13.10.11 05:59
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Здравствуйте, Аноним, Вы писали:


А>>Доброго времени суток!

А>>Не могу понять в чем дело.
А>>Есть дескриптор приложения — все как обычно. Добавил
А>>{applications, [kernel, stdlib, exmpp]}

А>>запускаю свое приложение

А>>
А>>application:stat(my_app_name).
А>>

А>>получаю {error,{not_started,exmpp}}

А>>Хотя если запускать exmpp:start() или application:start(exmpp) все хорошо


А>>та же самая проблема возникает и со mnesia


К>Если хочется нормальный старт (и апгрейд) приложений, то лучше разобраться с релизами (вариант на русском), удобней и практичней всего использовать rebar для механизации этого дела.


это все круто! но проект еще на глубокой стадии разработки — и постоянно собирать релизы нет никакого желания.

у кого-нибудь есть еще идеи?
Re[3]: [Erlang]Дескриптор приложения и зависимости
От: Курилка Россия http://kirya.narod.ru/
Дата: 13.10.11 06:11
Оценка:
Здравствуйте, Аноним, Вы писали:


А>это все круто! но проект еще на глубокой стадии разработки — и постоянно собирать релизы нет никакого желания.


А к мейкфайлам у вас такое же отношение?

А>у кого-нибудь есть еще идеи?


Дак сказали же — пускайте "ручками" при старте системы (приложения)
Re[2]: [Erlang]Дескриптор приложения и зависимости
От: Изя Рнет Беларусь  
Дата: 13.10.11 21:08
Оценка:
Здравствуйте, netch80, Вы писали:

N>Здравствуйте, Аноним, Вы писали:


А>>запускаю свое приложение

А>>application:stat(my_app_name).

N>start?


А>>получаю {error,{not_started,exmpp}}


N>Согласно ману application(3), application:start() проверяет наличие приложений, но не запускает их:

...
N>Так что их таки надо запустить самому. Может, в app-модуле в его start(), может, через сборку релиза и запуск релиза целиком.

Я обычно сочетаю:
1) указываю в зависимостях и в релизах приложения запускает окружение
2) а для отладочных и тестировочных запусков:
ensure_started(App) ->
    case application:start(App) of
        ok ->
            ok;
        {error, {already_started, App}} ->
            ok
    end.

start(_StartType, _StartArgs) ->
    ok = ensure_started(some_other_app)
    ....


Насколько я видел, так делается много где.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.