From: Radu B. <br...@gm...> - 2010-09-20 23:39:35
|
Hi, is there a working example of a yapp ? I am interested in knowing what the entry points are how control is passed from yaws and back. Thanks, Radu |
From: Mikael K. <kar...@gm...> - 2010-09-21 09:00:39
|
Hi Radu, if you checkout the latest version from github there is a very simple example containing a minimum of 2 files in yaws/applications/yapp/examples/yapp_ex_1/ - one .yaws file and one .app file. A more "advanced" example is the yapp application itself, which is a more complete otp application with supervisors and gen_servers etc. There are no entry points in terms of API:s, you just configure the URL which should trigger a change of the document root to the priv/docroot directory of your application using the yapp web interface at: http://<your_yaws_server>:<port>/yapp/ There are more advanced configurations that you can do in your application.app file in terms of local appmods, opaque variables etc. See: http://yaws.hyber.org/yapp_intro.yaws for how to prepare mnesia and the yapp application in yaws.conf. Cheers Mikael 2010/9/21 Radu Brumariu <br...@gm...>: > Hi, > is there a working example of a yapp ? > > I am interested in knowing what the entry points are how control is > passed from yaws and back. > > Thanks, > Radu > > ------------------------------------------------------------------------------ > Start uncovering the many advantages of virtual appliances > and start using them to simplify application deployment and > accelerate your shift to cloud computing. > http://p.sf.net/sfu/novell-sfdev2dev > _______________________________________________ > Erlyaws-list mailing list > Erl...@li... > https://lists.sourceforge.net/lists/listinfo/erlyaws-list > |
From: Radu B. <br...@gm...> - 2010-09-21 14:05:23
|
Mikael, thanks for the info. I found last evening the example in github. I have to say that I am still not very clear on how to proceed. At this point it looks not different than an appmod ( still an out(A) function as an entry ). What I am specifically looking is how to pass control from yaws to the yapp and back. Is it all in the out function ? Do I even need .yaws files, if the yapp will take control over how the request ? Also, regarding mnesia, do I need to interact w/ it, or it's there just for yapp handler to keep internal data ? Thanks, Radu On Tue, Sep 21, 2010 at 2:00 AM, Mikael Karlsson <kar...@gm...> wrote: > Hi Radu, > > if you checkout the latest version from github there is a very simple > example containing a minimum of 2 files in > yaws/applications/yapp/examples/yapp_ex_1/ - one .yaws file and one > .app file. > A more "advanced" example is the yapp application itself, which is a > more complete otp application with supervisors and gen_servers etc. > > There are no entry points in terms of API:s, you just configure the > URL which should trigger a change of the document root to the > priv/docroot directory of your application using the yapp web > interface at: http://<your_yaws_server>:<port>/yapp/ > > There are more advanced configurations that you can do in your > application.app file in terms of local appmods, opaque variables etc. > > See: > http://yaws.hyber.org/yapp_intro.yaws > for how to prepare mnesia and the yapp application in yaws.conf. > > Cheers > Mikael > > > 2010/9/21 Radu Brumariu <br...@gm...>: >> Hi, >> is there a working example of a yapp ? >> >> I am interested in knowing what the entry points are how control is >> passed from yaws and back. >> >> Thanks, >> Radu >> >> ------------------------------------------------------------------------------ >> Start uncovering the many advantages of virtual appliances >> and start using them to simplify application deployment and >> accelerate your shift to cloud computing. >> http://p.sf.net/sfu/novell-sfdev2dev >> _______________________________________________ >> Erlyaws-list mailing list >> Erl...@li... >> https://lists.sourceforge.net/lists/listinfo/erlyaws-list >> > |
From: Mikael K. <kar...@gm...> - 2010-09-21 15:47:05
|
2010/9/21 Radu Brumariu <br...@gm...>: > Mikael, > > thanks for the info. I found last evening the example in github. I > have to say that I am still not very clear on how to proceed. > At this point it looks not different than an appmod ( still an out(A) > function as an entry ). > What I am specifically looking is how to pass control from yaws to the > yapp and back. Is it all in the out function ? > Do I even need .yaws files, if the yapp will take control over how the request ? > Also, regarding mnesia, do I need to interact w/ it, or it's there > just for yapp handler to keep internal data ? > > Thanks, > Radu Well, your conclusion is correct, a Yaws application (Yapp) is just ordinary .yaws files and/or appmods organized in a otp application directory structure: my_app/ ebin/my_app.app ebin/myappmod1.beam ebin/anymodule.beam src/myappmod1.erl src/anymodule.erl priv/docroot/index.yaws priv/docroot/anyfile.yaws They look the same and work as any Yaws appmods or scripts, and control is passed from yaws and back as usual with the ordinary out/1 function. You do not need .yaws files if you use appmods. Now, the original idea about this was the deal with lifecycle management of different web applications that runs under a single Yaws server. So given that you have your applications in the Erlang load path, you should be able to develop and deploy new applications independently on a running Yaws server. Similar to the servlet concept on Java engines like Tomcat etc. Now there is one more important thing, and that is that you may start a complete OTP application with supervisors/gen_servers etc. and in that case deploy more complex service. The yapp handler application itself is an example of this. So if you have for instance /yapps_dir_path/my_app1/.. /yapps_dir_path/my_app2/.. in your code load path, for instance by setting the ERL_LIBS environment variable to /yapps_dir_path, you can use the yapp web interface to add them to Yaws. The will be added to the yapp registry (which resides in mnesia by default), and get a default URL like: http://<server>:<port>/my_app1/ http://<server>:<port>/my_app2/ When Yaws gets a client accessing such an URL the default document root will be changed to /yapps_dir_path/my_appX/priv/docroot and/or any local appmods will be triggered. So the Yapp concept is just a kind of virtual directory/appmod router with the option to deploy complete OTP applications as well. Hope this make things a bit clearer. Best Regards Mikael |
From: Steve V. <vi...@ie...> - 2010-09-21 16:32:51
|
On Tue, Sep 21, 2010 at 10:05 AM, Radu Brumariu <br...@gm...> wrote: > > Also, regarding mnesia, do I need to interact w/ it, or it's there > just for yapp handler to keep internal data ? Note that there's also an ets-based storage for this info if you don't need the persistence mnesia provides. See applications/yapp/src/yapp_ets_server.erl . Generally, the value of a yapp is that it's a whole application separate from yaws, so it's a nice way of taking something that was developed separately and integrating it with yaws with minimal impact. There's a bit of discussion about appmods vs. yapps here: http://www.infoq.com/articles/vinoski-erlang-rest --steve |