EVIL

Author: Dan Webb ([email protected])

Evil is a tool for very easily putting together sites that take advantage of data from around the web. Grab your blog entries from an ATOM or RSS feed, your recent links from Delicious, your projects from Github or whatever. If it’s got an API you can use pull it in to Evil and twist it together with other data and make a site. Evil does all the frustrating stuff like caching template processing and handling HTTP requests to APIs.

NB. It’s ‘working’ at the moment and has decent test coverage but it’s still very bare bones so it’s probably not worth using until it approaches 1.0.

Here’s an overview of how to use it:

1. Install the gem

sudo gem install danwrong-evil

2. Generate a site skeleton

evil init {path}

This will give you the files and dirs that you need for your site including a public directory to add static files to if you need them.

3. Whitelist your OpenID

<pre>cd {path} evil whitelist {your OpenID URL}</pre>

You can use wildcards in here if you want so if you wanted to let in all subdomains of danwebb.net you could do *.danwebb.net.

4. Upload the whole directory to your server and point passenger at it. Something like this in your Apache config should do it:

<pre><VirtualHost *:80> ServerName www.example.com DocumentRoot "/var/www/example/public"

5. Go to the admin site and start writing templates. It will be at /admin. Just log in with your OpenID.

6. Mess around. Create templates using liquid syntax, give them routes using the Sinatra/Rails syntax eg. /mythings/:id.

That’s all for now. More detail later.

Acknowledgements

Evil is built, as all good software is, on the efforts of lots of brilliant projects:

  • Sinatra
  • Rack::Cache
  • Liquid
  • HTTParty
  • jQuery
  • HAML

So thanks to all the authors.

In the works…

There will be a suite of built in plugins covering all of the popular services and protocols (Flickr, Twitter, ATOM/RSS, Github, Upcoming, Delicious, YQL, Last.fm + loads more). Also, I’ll be adding documentation to write your own plugins and easy handling of OAuth. This is just the very start.

Feedback welcome.