Jekyll: A Ruby-Powered Static Site Generator
Jekyll is a simple Ruby-powered static site generator, originally by Tom Preston-Werner (aka mojombo) of Github fame. It's focused around blogging, but it can be configured to generate any kind of static site. (Note: Jekyll has been around for about a year - Tom originally blogged about it in November last year, so apologies if this is old news to some readers, but I've only recently discovered it!)
Because Jekyll outputs a static site structure, it means you can host your blog (or site) from anywhere that you can serve static HTML, simply by using your favourite web server (e.g. Apache). As Tom describes in his blog post, the idea came from wanting to be able to "Blog like a Hacker". Jekyll lets you write from the comfort of your favourite text editor, and publish from the command line. Using familiar tools reduces the cognitive load involved with publishing a blog, and lets you focus on what you're writing. It doesn't hurt that even a pretty weak Web server could stand a pounding if it's just serving static files!
By default, Jekyll uses its own (slightly modified) flavour of Liquid templates, with help from pygments for syntax highlighting, and you can use textile or markdown for the content. Each Jekyll blog article template needs a header containing some metadata about that article, such as what layout to use, the article's title, and any custom information you want to provide (such as tags for that article).
Generating your site is easy: just running the
jekyll command turns your directory of templates into a complete website, ready to serve. There's a Jekyll server that you can use for testing (passing
--auto as an argument means it will automatically regenerate the site when things are changed).
jekyll --server --auto
Github Pages provides a neat way to publish your Jekyll-generated site. Every Github page is actually run through Jekyll when you push content to your pages repo (this works because a normal static site is also a valid Jekyll site).
sudo gem install jekyll