Lilliput

Lilliput is a blogging engine so minimalistic, it doesn't even include a webframework.

You can use Lilliput with Sinatra like this:

require 'rubygems'
require 'sinatra'
require 'lilliput'

Lilliput.folder = File.join(File.dirname(__FILE__), 'posts')

get '/' do
  @posts = Lilliput.all
  erb :index
end

get '/:slug' do
  @post = Lilliput.find(params[:slug])
  erb :show
end

This will serve markdown files from the ./posts folder. The name of the markdown file must contain a date, an may contain a slug, where the post is accessible

2009-02-14.md
2009-02-14-my-first-lilliput-post.md

The first line of the post is used as title. If there is no slug in the filename, the title is parameterized and used. The markdown file can contain an optional author annotation like this:

/ Jonas Nicklas <[email protected]

It must be the last line of the file.

In your view, you can do something like this:

<% @posts.each do |post| %>
  <h1><%= post.title %><

  <p class="date"><%= post.published_at %></p>

  <%= @post.html %>
<% end %>

There's also

Lilliput.published

which will find only those posts with a date that is in the past.