Pragmatic Development Notes

Software development related stuff

PDN powered by RoR

It has been a few months since my last post on the old blog powered by Wordpress. All this time I was searching for a blog engine made in Ruby on Rails. It was not easy to decide what to use. I’ve tested Mephisto, Typo, Radiant, Simplelog and several others I cannot remember now. All of them really have a lot of features, but for my needs they are way too complex. What I was searching for is some simple application that I can easily tweak and adjust to my needs. I was about to move to Mephisto or Simplelog when I found Enki.

As soon as I’ve looked into the code I knew that it is the one. Simple, lightweight blogging engine without fancy stuff that I’ll rarely use, yet with all features I need for my own blog. Moreover Enki’s source is on Github and it was easy to make a fork and start to work on my own version. So I did it. I must say it can be used just as it is, but I wanted to give it a new “look and feel”, so I’ve started with changes on a style sheet and didn’t stop there.

Enki handles comments in a very flexible way. In order to post a comment only name and text of a comment must be filled. On the other hand, if commenter wants to give a little bit more data he can use OpenID authentication. Nowadays with all those spammers around, this was not good enough for me. I didn’t want blog overloaded with bunch of stupid messages so I’ve decided to change comments handling a little bit.

There are lot of ways to protect a blog from spam. You can forbid posting comment without authorization. That way everyone must register before he is allowed to post a comment. That’s too much work for commenter and, frankly speaking, for me too. I wanted to make commenting as simple as possible, still under decent level of control. In order to accomplish it I could use reCAPTCHA or Akismet. Both of them are quite good, but I’ve decided to use Akismet. It leaves commenter same level of simplicity as in the original Enki source but every comment must pass spam filter. So I’ve dropped OpenID authentication, downloaded akismet.rb, adjusted comments controller and fixed tests. It was quite simple and easy.

And here it is up and running.

Finally few thoughts about Enki. Although it can be used out of the box, I think very few users will actually install it that way. But if you are RoR fan, and you like to work in Ruby and Ruby on Rails this is the right choice for you. Code is readable and easy to change. It is not over-engineered except in one part – gems. Enki requires cucumber which, on the other hand, requires rspec, rspec-rails, webrat and, optionally, term-ansicolor, nokogiri, builder and few others. For my mind it is a little overhead for such a simple project, but it is definitely neglectable comparing to other good sides of Enki. Lack of support for images uploading might be a limitation in Enki’s usability, but author wanted to keep it simple so this shouldn’t stop you from using it. At the end if you like Ruby on Rails it will be a fun implementing support for it, isn’t it? Go ahead, grab attachment_fu or paperclip and do it.