Marley is minimal blog engine without admin interface written in Sinatra framework (sinatrarb.heroku.com/).
It has no admin interface for writing posts. Use your favorite text editor to edit plain-text files and synchronize them to server. Marley uses plain-text files for storing articles and SQLite database for storing comments (set data location in config.yml). It comes with Rake and Capistrano tasks for deploying the application and syncing articles from your local machine to the server.
master branch is what will run www.restafari.org, plain branch is bare application suited for your own styling (currently out of sync).
It is currently alpha software.
Sinatra, Rack and Thin
ActiveRecord and SQLite
Akismet spam filtering (see ./vendor/akismetor.rb)
RDiscount for Markdown –> HTML conversion
Builder for Atom feed generation
Rake and Capistrano tasks
Installation and dependencies
You have to install or update following Rubygems:
sudo gem install sinatra rack thin activerecord sqlite3-ruby rdiscount builder capistrano
Edit this configuration file:
and rename it to config.yml.
Install the application with this Rake task:
Load this URL in your browser:
copy config.yml to server
Marley has no administrative interface for writing articles inside some silly <textarea>. It assumes you like to write in your favorite text editor, using Markdown, previewing on the fly, and just synchronize when you're ready to publish.
There are several ways how to do that:
You can be hardcore and write articles over SSH in Vim directly on the server for “just-in-time-publication” when you hit :w
You can be less glorious, of course, and save your articles to some folder on your disk and scp-ing said folder to the server. Or use SFTP? Cyberduck drag & drop? Aaargh, not reccommended unless you really like to see what you're doing, in real time.
You can implement some sane practice and start versioning your writing with Git. (What else?) This way, you can setup remote repository on your server, just push-ing changes whenever you feel like you want to say something in public. A post-commit hook is completely neccessary in this case, of course. (It isn't paramount of convenience having to SSH on your server to run git pull origin master in some folder.) There will be a Marley Capistrano task for doing that in the future?
When you already use Git, you can push to Github (where else?), and have Github call Marley by it's Post-Receive Hooks (github.com/guides/post-receive-hooks). See the get "/sync" route dangling towards the end of the marley.rb? You get the picture.
Of course, put other ideas in the Marley Wiki (github.com/karmi/marley/wikis)
Implement data syncing logic (upload, Github, etc)
Implement admin interface for filtering spam comments
Do not show spam comments in HTML and feed
Optionally mail new comments to self
Cap task for uploading config.yml to server
Copyright © 2008 Karel Minarik (www.karmi.cz)
Code released under the MIT license, do not reuse graphical assets and styles in the master branch, please