Grat

Grat is a minimal content management dealy.

It runs on Rack and uses MongoDB for wicked flexibility.

Woo.

Get setup

Use it like so:

  1. Install gem (may need to set up gemcutter)

  2. Fresh directory

  3. config.ru file containing:

    require 'rubygems'
    require 'rack'
    require 'grat'
    
    Grat.database_conf # uses defaults, database=grat_development
    # to override:
    # Grat.database_conf(:host => 'localhost', :database => 'grat_special')
    
    use Rack::ShowExceptions # <- Up to you.
    run Grat::Application
    
  4. rackup (or passenger, if you know how)

  5. localhost:9292/__admin/edit/mypage edits a page that will be available at localhost:9292/mypage

  6. localhost:9292/__admin/ for a list of all pages

  7. localhost:9292/__admin/export to get a json dump of all pages

  8. localhost:9292/__admin/import to import one of those dumps

  9. Protect from writes by strangers with Rack::If

    # http://github.com/samsm/Rackif
    
    use Rack::If, {:method => /(POST)|(PUT)|(DELETE)/, :path => /__admin/}, :any do
      use Rack::Auth::Basic, "Grat protected" do |username, password|
        'secret' == password
      end
    end
    

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests 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 when I pull)
    
  • Send me a pull request. Bonus points for topic branches.

Copyright © 2009 Sam Schenkman-Moore. See LICENSE for details.