Enki Engine
A Ruby on Rails blogging engine extracted from Xavier Shay’s Enki blogging app.
Quick Start
- Add to your bundle:
- Add the migrations
- Create a config/enki.yml like the one below until I write a generator. Hint! Hint!
# Configuration options for your blog - customise to taste
# This file contains no secret information, so can be stored in source control (unlike database.yml)
title: Articles
url: http://enkiblog.com/posts
author:
name: Don Alias # For copyright notice and ATOM feeds
email: [email protected] # Exception emails will go here, and it is used in ATOM feeds
open_id: # These are used to login to the admin area
- http://enkiblog.com
- http://secondaryopenid.com
engine:
mount_at: /content
pages_at: /
features:
comments: false
tags: true
form_helper: false
- A good place to start customizing is with Enki::Admin::BaseController, as you may want some authentication & authorization from the host app
# app/models/enki/post.rb
module Enki
class Post < Base::Post
belongs_to :author, :class_name => 'User'
validates_presence_of :author_id
end
end
# app/controllers/enki/admin/base_controller.rb
module Enki
module Admin
class BaseController < Enki::ApplicationController
before_filter :require_account, :authorize
protected
# Post management is a proxy for all blog abilities.
def
raise CanCan::AccessDenied unless can?(:manage, Enki::Post)
end
# requires a migration to put the author_id into posts and pages
def post_attributes
{:author => current_user}
end
end
end
end
- Read the code and improve it at will.
More info
Enki is a compact, easily extendable base for your blog. It does this by being highly opinionated, for example:
- Public facing views should adhere to standards (XHTML, Atom)
- /yyyy/mm/dd/post-title is a good URL for your posts
- Live comment preview should be provided by default
- Google does search better than you or I
- You don’t need a plugin system when you’ve got decent source control
- Hacking code is the easiest way to customize something
Compatibility
Uses rails 3. Runs on MySQL or Postgres. Works on heroku. Uses ActsAsTaggableOn but I’d like to make it agnostic of a tagging solution. Uses SimpleForm whereas Enki uses Formtastic. I’d like this to be agnostic. Supports WillPaginate and Kaminari or no pagination with a couple of untidy shims I threw in which could be implemented much better.
Patches/Pull Request
- Fork the project.
- Make your improvement or bug fix.
- Add specs for it. This is important so I don’t break it in a future version unintentionally.
- Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore it when I pull)
- Send a pull request. Bonus points for topic branches.
Contributors, these guys rock
git log | grep Author | sort | uniq
If you want to help out, try tackling something from the TODO or an open issue. Please include specs for any fixes. Enki Engine is by design feature light. Unless you feel very strongly your feature should be in core, add a link to your fork in the wiki instead.
License
GPL – See LICENSE
Admin design heavily inspired by Habari and broken by https://github.com/james2m