Ich habe eine .yaws-Datei, die die setup/0
-Funktion aus dem authenticate
-Modul, das ich in das Verzeichnis ebin
platziert habe. Wenn ich authenticate:setup/0
von der Erlang-Shell aufrufen, erstellt es eine Tabelle, aber wenn ich etwas laden.yaws im Browser, der die authenticate:setup/0
-Funktion aufruft, gibt es {aborted,{bad_type,users,disc_copies,[email protected]}}
10 (something.yaws gibt nur den Rückgabewert authenticate:setup/0
in HTML eingebettet zu Debuggingzwecken).Mnesia kann keine Tabellen erstellen, wenn es von Yaws ausgeführt wird, aber wenn es von der Erlang-Shell ausgeführt wird
Hier ist die setup/0
Funktion:
setup() ->
mnesia:create_schema([node()]),
mnesia:start(),
mnesia:create_table(users, [{type, set}, {record_name, user}, {disc_copies, [node()]}, {attributes, record_info(fields, user)}]).
und hier ist der user
Rekord:
-record(user, {username, hashed_pw, salt}).
(Ich habe versucht, es von der Erlang-Shell aufrufen, nachdem ich es im Browser versucht haben, so das hätte nicht stören können.)
Wenn ich yaws --mnesiadir /usr/local/lib/yaws-appmods/mnesia/
ausführen, bekomme ich
Erlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:8:8] [async-threads:10] [kernel-poll:true]
Eshell V8.1 (abort with ^G)
1>
=INFO REPORT==== 7-Nov-2016::00:04:49 ===
Yaws: Using config file /etc/yaws/yaws.conf
=INFO REPORT==== 7-Nov-2016::00:04:49 ===
Yaws: Using global subconfig file /etc/yaws/conf.d/localhost.conf
=INFO REPORT==== 7-Nov-2016::00:04:49 ===
Ctlfile : /home/username/.yaws/yaws/default/CTL
=INFO REPORT==== 7-Nov-2016::00:04:49 ===
Yaws: Listening to 0.0.0.0:8080 for <1> virtual servers:
- http://localhost:8080 under /usr/share/yaws/www
rd(user, {username, hashed_pw, salt}).
user
2> mnesia:create_schema([node()]), mnesia:start(), mnesia:create_table(users, [{type, set}, {record_name, user}, {disc_copies, [node()]}, {attributes, record_info(fields, user)}]).
{aborted,{bad_type,users,disc_copies,[email protected]}}
Wenn ich den gleichen Erlang-Code in der Erlang-Shell mit erl -mnesia dir '"/usr/local/lib/yaws-appmods/mnesia/"'
gestartet habe, funktioniert es gut.
Ich habe versucht, 'Framboesie --mnesiadir DIR', die mir immer noch den ursprünglichen Fehler gab, obwohl sie gearbeitet haben sollte, dann habe ich versucht,' erl -mnesia dir '"DIR"' ', was funktioniert hat (DIR repräsentiert in beiden Fällen dasselbe Verzeichnis). Die Ausgabe von Yaws passt nicht in einen Kommentar, also werde ich es in meinen Hauptpost bearbeiten. – user1792131