EWS is a web server construction kit, designed for embedded applications using the GNAT Ada compiler.
The project is hosted on Github.
See the Alire documentation.
After you've installed Alire, start a small test program by saying
alr init --bin ews_test
cd ews_test
alr with ews
This generates a project (GPR) file at the top level and a source file src/ews_test.adb
.
Create a directory html
and in it index.html
containing (for example)
<html>
<body>
<font color="red">Hello world!</font>
</body>
</html>
The contents of html/
need to be converted to Ada source code in src/
, which will form the static content of the pages served by ews_test
. This can be done as part of the Alire build process; to do this, edit alire.toml
to add the lines
[[actions]]
type = "pre-build"
command = ["ews_generator", "--input-dir", "html", "--output-dir", "src"]
Edit the contents of src/ews_test.adb
to contain
with EWS_Htdocs;
with EWS.Server;
procedure EWS_Test is
begin
EWS.Server.Serve (Using_Port => 8088,
Tracing => True);
end EWS_Test;
and build and run with
alr run
Now, in your browser, open localhost:8088
(possibly, 127.0.0.1:8088
) to see your exciting web page!
To see a worked example of dynamic content, check out the document ews.pdf.
EWS requires GNAT and XML/Ada, and uses Ada 2012 features.
In the top-level directory, make
will build the library, and make demo
will create a server doc/ews_demo
, which when executed will listen on port 8080 and respond with the web in the doc/
directory.
The package can be installed with the compiler by make install
(more likely, sudo make install
). You can install in an alternative place by setting prefix
, for example
$ make install prefix=~/local/ews
The facilities available in EWS, and the code for a demonstration, are described in demonstrator/ews.pdf
, which is derived from demonstrator/ews.w
. As well as being the document source, ews.w
also acts as the source code using the Literate Programming facilities of nuweb.py.
If you're seeing this page via the demonstration (ews_demo
), you can view a page with AJAX content here.