2016-07-30 8 views
1

Ich versuche, einen guten StartAnteil Regler nicht nach before_ Anruf in ChicagoBoss aufgerufen

https://github.com/ChicagoBoss/ChicagoBoss/wiki/an-evening-with-chicago-boss

ChicagoBoss MVC Web-Framework und dieses Tutorial schien zu lernen, es war alles toll und aufregend, bis Der Autor führte die before_ Funktion ein, um sicherzustellen, dass required_login aufgerufen wird. Das Problem, das ich bin vor, dass die list Funktion aufgerufen werden kann, kommen hier ist mein Code

-module(outings_outgoer_controller, [Req]). 
-compile(export_all). 
% -export([list/3]). 

before_ (Action) -> 
    io:fwrite("in before_ Action is: ~s~n", [Action]), 
    case Action of 
     "login" -> 
      ok; 
     "register" -> 
      ok; 
     _ -> 
      io:fwrite(" - login is required for this action!~n", []), %gets printed successfully 
      Outgoer = user_lib:require_login(Req), 
      io:fwrite(" - ~p is logged in~n", [Outgoer]), %gets printed successfully 
      Outgoer 
    end. 

list('GET', [], Outgoer) -> 
    io:fwrite("An outgoer is requesting his list~n", []), % never gets printed 
    {ok, [{outgoer, Outgoer}]} 

und hier ist die require_login Funktion

require_login(Req) -> 
    case Req:cookie("user_id") of 
     undefined -> {redirect, "/outgoer/login"}; 
     Id -> 
      case boss_db:find(Id) of 
       undefined -> {redirect, "/outgoer/login"}; 
       Outgoer -> 
        case Outgoer:session_identifier() =:= Req:cookie("session_id") of 
         false -> {redirect, "/outgoer/login"}; 
         true -> {ok, Outgoer} 
        end 
      end 
    end. 

und dies ist der Druck ich in meiner Konsole erhalte beim Zugriff auf outgoer/list

in before_ Action is: list 
    - login is required for this action! 
    - {ok,{outgoer,"outgoer-1","mohamed","[email protected]", 
      "a982ff46c5664edc593329ab558445fc"}} is logged in 
20:29:31.439 [notice] [ChicagoBoss] The function outings_outgoer_controller:list/2 is not exported, if in doubt add -export([list/2])) to the module 
20:29:31.440 [info] GET /outgoer/list [outings] 200 18ms 
Reloading outings_outgoer_controller ... fail: nofile. 

ich heruntergeladen ChicagoBoss von https://github.com/ChicagoBoss/ChicagoBoss und ich arbeite mit Erlang 18

Antwort

0

Es stellt sich heraus, dass ich die Notiz outings_outgoer_controller:list/2 is not exported bekam, weil die `list'-Funktion nicht kompilieren konnte, weil ich vergessen habe, die Funktion mit einem Punkt zu beenden. sowieso Ich habe, dass Hauch von http://learnyousomeerlang.com/errors-and-exceptions sagt es

./module.erl:2: function some_function/1 undefined Die Funktion gibt es nicht.
Sie haben den falschen Namen oder die falsche Adresse entweder im Attribut '-export' oder bei der Deklaration der Funktion angegeben. Dieser Fehler wird auch ausgegeben, wenn die angegebene Funktion nicht kompiliert werden konnte, in der Regel wegen eines Syntaxfehlers wie dem Vergessen, eine Funktion mit einem Punkt zu beenden.