# Rack HTMLTidy
The *rack-htmltidy* gem is a middleware that adds HTML validation
for Rack applications. It uses Dave's Raggett HTML Tidy
to check HTML pages. The results are written to log.
The middleware uses the [TidyLib C library] [tidylib]
and the [tidy] [] gem.
The idea of using middleware to validate HTML belongs to
Marcin Kulik, [Rack middleware using HTMLTidy] [mkulik]
**Limitations** of [TidyLib] [tidylib doc]:
Currently, all character encoding support is hard wired into the
library. This means we do a poor job of supporting many popular
encodings such as GB2312, euc-kr, eastern European languages,
cyrillic, etc. Any of these languages must first be transcoded into
ISO-10646/Unicode before Tidy can work with it.
## Using with Rack application
*Rack::HTMLTidy* can be used with any Rack application,
for example with a **Sinatra** application.
If your application includes a rackup file
or uses *Rack::Builder* to construct the application pipeline,
simply require and use as follows:
require 'rack/htmltidy'
use Rack::HTMLTidy,
:errors => true,
:diagnostics => true,
:path => "/usr/lib/libtidy-0.99.so.0"
run app
Remember to update the `:path` option to the location of *TidyLib* on your system.
## Using with Rails 2.3.2
In order to use include the following in a Rails application
*config/environment.rb* file:
require 'rack/htmltidy'
Rails::Initializer.run do |config|
config.gem "rack-htmltidy"
config.middleware.use(Rack::HTMLTidy,
:errors => true,
:diagnostics => true,
:path => "/usr/lib/libtidy-0.99.so.0")
end
Check the Rack configuration:
rake middleware
Remember to update the `:path` option to the location of *TidyLib* on your system.
## Miscellaneous stuff
1\. To install *TidyLib* on Fedora 9 and above:
yum install libtidy libtidy-devel
2\. To fix the bug: `tidybuf.rb:40: [BUG] Segmentation fault`,
clone, build and install the *tidy* gem from here:
git://github.com/ak47/tidy.git
[tidylib]: http://tidy.sourceforge.net/ "TidyLib C library"
[tidy]: http://github.com/ak47/tidy/ "Tidy Gem"
[mkulik]: http://sickill.net/blog/2009/05/10/rack-middleware-using-html-tidy.html "Marcin Kulik Blog
[tidylib doc]: http://tidy.sourceforge.net/libintro.html "TidyLib Doc"