Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A Ruby on Rails blogging app for the fashionable developer. It's better than Mephisto or SimpleLog
Ruby JavaScript CSS
branch: master

Merge pull request #96 from clok/page_creation

Update Page Creation for Rails 4
latest commit b793d489c0
Xavier Shay authored
Failed to load latest commit information.
app updated admin/pages_controller.rb for Rails 4
autotest Upgrade Enki to Rails 3.
config Addressed broken Atom format.
db Bump to Rails 4.
features Bump to Rails 4.
lib Bump to Rails 4.
log Initial
public Reorganize assets to serve through Rails' asset pipeline
spec updated rspec test
.gitignore Track db/schema.rb in version control
.rspec Upgrade Enki to Rails 3.
.travis.yml Test against Ruby 2.0
Gemfile Bump to Rails 4.
Gemfile.lock Bump to Rails 4.
README.textile Bump to Rails 4.
Rakefile Start Rails 3.2 upgrade Tweak URL path prefix patch to address feedback from xaviershay



A Ruby on Rails blogging app for the fashionable developer.

Preferences are for the masses. Any real coder knows the easiest and best way to customize something is by hacking code. Because you want your blog to be you, not bog standard install #4958 with 20 posts per page instead of 15. For this you need a clean, simple, easy to understand code base that stays out of your way. No liquid drops and templates hindering your path, no ugly PHP stylings burning your eyeballs.

Quick Start

  git clone git:// enki
  cd enki
  git checkout -b myblog # Create a new work branch
  bundle install         # Install all the required gems

  cp config/database.example.yml config/database.yml
  # Edit config/enki.yml and config/database.yml to taste

  # Next step needs libxml2 and libxslt1 and their headers
  # On Debian-based systems: apt-get install libxml2-dev libxslt1-dev
  # On Mac OS X: no action required

  rake secret # Paste output into place in config/initializers/secret_token.rb
  rake db:migrate
  rake            # Run tests
  rails server    # Start the server
  # Load http://localhost:3000/admin in your browser

Or for bonus points, fork enki at github and clone that instead.

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
  • If you’re not using OpenID you’re a chump
  • Hacking code is the easiest way to customize something

URL path prefix

Enki can run your blog with a URL path prefix. For example, you can run it at instead of You can do so with the RAILS_RELATIVE_URL_ROOT environment variable, set either before starting the server or in config/application.rb before Enki::Application. Uncommenting this line in config/application.rb will enable this behavior in all environments:


How it differs from Mephisto

Mephisto is feature packed and quite customizable. It can however be daunting trying to find your way around the code, which isn’t so good if you’re trying to hack in your own features. Enki strips out a lot of the features that you probably don’t need (multiple authors and liquid templates, for example), and focuses on keeping a tight code base that is easy to comprehend and extend.

How it differs from SimpleLog

Enki embodies much of the philosophy of SimpleLog, but does so in a style that is much more consistent with Rails best practices, making it easier to understand and hack the code.


Uses Ruby 1.9.3 or newer and Rails 4. Runs on MySQL or Postgres. Works on heroku.

Contributors, these guys rock

git log | grep Author | sort | uniq

If you want to help out, try tackling an open issue. Please include specs for any fixes. Enki 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.



Admin design heavily inspired by Habari

Something went wrong with that request. Please try again.