Проблема интеграции BeepBeep и ErlyDB - PullRequest
3 голосов
/ 05 августа 2009

В дополнение к моим приключениям с Erlang и ErlyDB. Я пытаюсь заставить ErlyDB работать с BeepBeep

Моя установка ErlyDB работает правильно при запуске вне среды BeepBeep (см. Отладка ErlyDB и MySQL ). Я в основном взял рабочий код и попытался запустить его внутри BeepBeep.

У меня в контроллере следующий код:

handle_request("index",[]) ->
  erlydb:start(mysql,Database),
  erlydb:code_gen(["thing.erl"],mysql), 
  NewThing = thing:new_with([{name, "name"},{value, "value"}]),
  thing:save(NewThing),
  {render,"home/index.html",[{data,"Hello World!"}]};

Когда я вызываю URL, в ответе выводится «Ошибка сервера». Нет другой информации об ошибках или исключениях.

Я попытался обернуть вызов в try / catch, чтобы увидеть, есть ли основная ошибка - определенно, есть исключение при вызове вещь: new_with () , но никакой дополнительной информации нет.

Отчеты о трассировке стека:

{thing,new,[["name","value"]]}
{home_controller,create,1}
{home_controller,handle_request,3}
{beepbeep,process_request,4}
{test_web,loop,1}
{mochiweb_http,headers,4}
{proc_lib,init_p_do_apply,3}

1 Ответ

2 голосов
/ 10 августа 2009

Используйте сопоставление с образцом, чтобы утверждать, что все работает до призыва к вещи: new / 1:

ok = erlydb:start(mysql,Database),
ok = erlydb:code_gen(["thing.erl"],mysql), 

Вы включаете только трассировку стека, смотрите также сообщение об исключении. Я подозреваю, что ошибка в том, что вы получаете исключение undef. Но проверьте, что это так. Первая строка в трассировке стека указывает на проблему с вызывающей вещью: new / 1 с ["name", "value"] в качестве аргумента.

Немного странно, что вы показываете одно предложение handle_request, которое не вызывает home_controller: create / 1 согласно {home_controller,create,1} в трассировке стека. Как выглядят другие пункты в вашей функции handle_request / 2?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...