Announce: Turbinado V0.7
Turbinado has been making solid progress. See the GitHub repo.
Added a couple of big new features:
HAML and XHTML Templates
While Turbinado used XHTML for templates before, the HSX library (an amazing piece of work) was a real pain to use and threw very strange errors.
HSX (and its associated libraries) has been torn out of Turbinado and has been replaced by a custom preprocessor called ‘trturbinado’. The preprocessor is run by the webserver over any templates (or views) before they’re compiled and loaded. The preprocessor handles XHTML and a limited version of HAML (to be enhanced).
See the example below. After preprocessing, the ‘someHtml’ and ‘someHAML’ functions will yield the exact sasme code as the ‘someTextXHTML’ function.
Note: I’m not great at writing parsers, so I wouldn’t doubt that there are bugs in the preprocessor!
markup :: VHtml markup= <div> <% someTextXHtml %> <% someHtml %> <% someHAML %> </div> -- | These are the raw Turbinado.View.Html style tags someTextXHtml :: VHtml someTextXHtml = do s <- getViewDataValue_u "sample_value" :: View String ((tag "div") ( ((tag "i") (stringToVHtml s)) +++ ((tag "b") (stringToVHtml "some text in Turbinado.View.Html style")) )) someHtml :: VHtml someHtml = do s <- getViewDataValue_u "sample_value" :: View String <div> <i><%= s %></i> <b>some text in XHtml style</b> </div> someHAML :: VHtml someHAML = do s <- getViewDataValue_u "sample_value" :: View String %div %i= s %b some text in HAML style |
FastCGI Support
FastCGI has been an often requested feature, so I rewrote the CGI handling and added FastCGI support, too. Much as with CGI, using FastCGI is very simple. Just tell Apache to use ‘dispatch.fcgi’ to handle requests.
<VirtualHost *>
DocumentRoot /home/alson/projects/turbinado/static
<Directory "/home/alson/projects/turbinado/static">
Options +FollowSymLinks +ExecCGI +Includes
AddHandler cgi-script cgi
AddHandler fastcgi-script fcgi
AllowOverride None
Order allow,deny
Allow from all
</Directory>
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f
RewriteRule (.*) $1 [L]
# Use FCGI
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/dispatch.fcgi [QSA,L]
# Use CGI
# RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/dispatch.fcgi [QSA,L]
</VirtualHost>
Performance of Turbinado’s FastCGI interface is pretty good, but is well short of Turbinado’s HTTP interface, so, if you can live without the benefits of FastCGI, HTTP, which is simpler and faster, is the way to go.