Как я могу интегрировать Webmachine в приложение Erlang? - PullRequest
2 голосов
/ 15 сентября 2011

Я читаю и перечитываю документы и учебные пособия, но в моем понимании того, как создавать приложения Erlang и Rebar в этом отношении, все еще достаточно дыр, чтобы напоминать швейцарский сыр. Очень простые вещи бросают меня.

Я работаю над выпуском Erlang, который в конечном итоге будет включать несколько моих собственных приложений плюс Webmachine и, возможно, nosql db того или иного аромата. Используя Rebar, я успешно скомпилировал и протестировал мои приложения: ZZZ и ZZZ_Lib. моя структура каталогов показана ниже. Я не уверен, что это оптимально, но это работает.

Я установил Webmachine в каталоге ... learn1 / apps.

Моим следующим шагом была интеграция Webmachine с очень простым webmachine_demo_resource, показанным ниже под именем test_resource: erl.

http://webmachine.basho.com/example_resources.html

Но когда я пытаюсь скомпилировать, я получаю это сообщение об ошибке:

src / test_resource.erl: 3: не удается найти include lib "webmachine / include / webmachine.hrl"

Вот неправильная строка в test_resource.erl:

-include_lib("webmachine/include/webmachine.hrl").

Я попытался установить ERL_LIBS (что я не до конца понимаю) и PATH, но безуспешно. Итак, я не понимаю, как правильно выбрать путь или как лучше интегрировать Webmachine.

Любое руководство будет с благодарностью приветствоваться.

LRP

* Структура каталогов

learn1 $ ls приложения арматура rebar.config

learn1 / apps $ ls вебмашина zzz zzz_lib

learn1 / apps / zzz_lib / src $ ls yada yada test_resource.erl yada yada

* rebar.config

{sub_dirs,
    ["apps/zzz",
     "apps/zzz/src",
     "apps/zzz_lib",
     "apps/zzz_lib/src"
    ]
}.

* zzz_lib.app.src

{application, zzz_lib,
  [
  {description, ""},
  {vsn, "1"},
  {modules, [
      yada yada 
]},
{applications, [
              kernel,
              stdlib,
              webmachine
             ]},
{mod, { zzz_lib_app, []}},
{env, []}
]}.

Ответы [ 2 ]

5 голосов
/ 16 сентября 2011

Вы, скорее всего, в конечном итоге будете счастливее, если будете использовать его как зависимость, а не как отдельное приложение.Посмотрите, например, как Riak Core делает это: https://github.com/basho/riak_core/blob/master/rebar.config

Для получения более подробной информации, вы можете узнать, стоит ли запрашивать списки рассылки:

http://lists.therestfulway.com/mailman/listinfo/webmachine_lists.therestfulway.com

http://lists.basho.com/mailman/listinfo/rebar_lists.basho.com

0 голосов
/ 15 сентября 2011

Используя ERL_LIBS в вашем случае, вам нужно установить его на /.../learn1/apps.

При компиляции вы также можете добавить опцию {i, Dir}. Согласно документации , в ней упоминаются только -include и -include_dir, а не -include_lib.

{i, Dir} Добавить Dir в список каталогов для поиска при в том числе файл. При обнаружении -include или -include_dir директива, компилятор ищет заголовочные файлы в следующем каталоги:

".", Текущий рабочий каталог файлового сервера;

базовое имя скомпилированного файла;

каталоги, указанные с помощью опции i. Указанный каталог последний ищется первым.

...