rgrove edited this page Mar 15, 2011 · 6 revisions

Thoth logo

An Awesome Ruby Blog Engine

Note: Thoth is only lightly maintained these days (for my own personal use), and has little documentation outside of the source itself. I'm not terribly interested in supporting it. You're welcome to use it and hack on it, but be warned that you're on your own.

Thoth is a blog engine written in Ruby and based on Ramaze and Sequel. Its simple, elegant architecture, minimalist feature set, and extensible codebase make it both fast and easy to customize.

For a quick visual introduction to Thoth, check out the lovely Screenshot Tour.


  • Blog posts and pages - Blog posts are taggable and can be commented on, while pages are for non-blog content.
  • Wiki-style linking - Easily link between blog posts and pages using wiki-style links.
  • Glorious markup - Use "Textile":http://redcloth.org/textile or XHTML for formatting of blog posts, pages, and comments. If you want to, you can even use both at the same time.
  • Media uploads - Easily upload images, videos, and other files and include them in your blog posts and pages.
  • Feeds - RSS 2.0 and Atom 1.0 feeds of recent posts, recent comments, and comments on individual posts.
  • Painless customization - You don't have to recreate every single template to customize the look of your site. Custom themes inherit from the default theme, so you only need to override the pieces you want to change. This makes upgrading easier as well.
  • Plugins - It's easy to add custom functionality to Thoth by creating simple plugins. You can even share your plugins with other Thoth users by distributing them as gems. Thoth already includes plugins for Flickr, Delicious, and Twitter.
  • Easy administration - Other blog software requires you to switch to a clunky administration interface to perform administrative tasks, but Thoth's administrator tools are integrated right into the blog itself as contextual toolbar icons.
  • High performance - Even with caching disabled, Thoth can handle 20 to 30 requests per second on a decent server without breaking a sweat. With caching on (which is the default configuration), that number jumps to upwards of 300 requests per second.

Installing Thoth

To install Thoth using RubyGems, open a terminal and type:

$ gem install thoth

Depending on your database preferences, you'll also need to install either the mysql gem or the sqlite3-ruby gem to provide the database drivers necessary for whichever database you choose to use.

Running Thoth

First, create a new Thoth home directory. This is where your blog's config file and any customizations will live:

$ thoth --create myblog
$ cd myblog

Now open up thoth.conf in your favorite editor and customize it to your liking (or you can leave it alone for now if you just want to get Thoth running quickly with all the default settings). There are lots of helpful comments to explain what all the different options are.

Create the Thoth database by running:

$ thoth --migrate

When you're ready, start Thoth by running:

$ thoth

If everything goes well, you should be able to access your new Thoth blog at http://localhost:7000/ (or whatever port number you configured). That was easy, right?

Once you've tested everything and you're ready to run Thoth in production, you'll want to start it as a daemon, like so:

$ thoth -d start

Getting the latest code

If you'd like to contribute to Thoth or if you just want to run the very latest code, clone the git repository:

$ git clone git://github.com/rgrove/thoth.git

Or, if you don't have git, you can just download the latest source as a tarball:

$ curl -L http://github.com/rgrove/thoth/tarball/master -o rgrove-thoth-master.tar.gz
$ tar xzvf rgrove-thoth-master.tar.gz

To build and install a gem from the code you just pulled, change to the Thoth source directory and run:

$ rake install

Mad Props

The lovely Thoth logo seen above was created by Arnaud Meuret.

Thoth uses icons from the gorgeous Silk icon set by famfamfam, which is licensed under the Creative Commons Attribution 2.5 license.