These are chat archives for synrc/n2o

24th
Mar 2019
Oniry
@Oniry
Mar 24 14:15
моих знаний не хватает что бы найти как заставить вместо отдачи статики брать из main()
Namdak Tonpa
@5HT
Mar 24 18:10
Modile:main вызывается при N2O INIT — <<"N2O,",Rest/binary>>
там можно нарендерить экшинов
которые передадутся на клиент и вызовут страницу
но так чтобы оно кому-то помогло когда мы удалим это то такого нет
просто Module:main вызывается до event(init)
смотри n2o_nitro.erl, там 90 строчек
info(#init{token=Auth}, Req, State = #cx{module = Module}) ->
     {'Token', Token} = n2o_session:authenticate([], Auth),
     Sid = case n2o:depickle(Token) of {{S,_},_} -> S; X -> X end,
     n2o:info(?MODULE,"N2O SESSION: ~p~n",[Sid]),
     New = State#cx{session = Sid},
     put(context,New),
     case try Elements = Module:main(),
              nitro:render(Elements),
              {ok,[]}
        catch Err:Rea ->
              StackMain = n2o:stack(Err,Rea),
              n2o:error(?MODULE,"Catch:~p~n",[StackMain]),
              {error,StackMain} end of
   {ok, _} -> Actions = try Module:event(init),
                            render_actions(nitro:actions())
         catch Err1:Rea1 -> StackInit = n2o:stack(Err1,Rea1),
                            n2o:error(?MODULE,"Catch:~p~n",[StackInit]),
                            {stack,StackInit} end,
              {reply, {bert,{io,Actions,{'Token',Token}}},Req,New};
 {error,E} -> {reply, {bert,{io,<<>>,E}},Req,State} end;
Namdak Tonpa
@5HT
Mar 24 18:16
надо заменить на
info(#init{token=Auth}, Req, State = #cx{module = Module}) ->
     {'Token', Token} = n2o_session:authenticate([], Auth),
     Sid = case n2o:depickle(Token) of {{S,_},_} -> S; X -> X end,
     n2o:info(?MODULE,"N2O SESSION: ~p~n",[Sid]),
     New = State#cx{session = Sid},
     put(context,New),
     try Module:event(init),
         render_actions(nitro:actions()),
         {reply, {bert,{io,nitro:actions(),{'Token',Token}}},Req,New};
     catch Err1:Rea1 -> Error = n2o:stack(Err1,Rea1),
           n2o:error(?MODULE,"Catch:~p~n",[Error]),
           {reply, {bert,{io,<<>>,Error}},Req,State}
     end;
если хотите выбросить Module:main()