Tumblr Blogging with Redis
A simple, blogging "platform" built on Tumblr and Redis.
Reasoning
Tumblr has a great interface for tagging, writing, and editing posts, but you shouldn't rely on it for being up all the time. You also shouldn't have to worry about Tumblr API integration or cacheing on your own. Tumblrb handles the Tumblr API integration, Redis cacheing, and fetching all with an easy to use interface.
VOILA!
Installation
Run
gem install tumblrb
Or add
gem 'tumblrb', :require => "tumblr"
to your Gemfile
Setup
Tumblrb Needs a little configuration to work properly. It needs to know your blog, your Tumblr API key, and how to connect to a running Redis server :
You can do that using the configure method :
Tumblr.configure do |config|
config.blog = "thegorgonlab"
config.api_key = "YOUR API KEY"
config.redis = {:host => "localhost", :port => 6379}
end
Redis configuration takes a string path to a configuration file, a hash of options, or a Redis instance itself. If you don't include a "." in your blog name it will add ".tumblr.com" to the end of what you provide. For information about API keys see the Tumblr API documentation
Or if you like having all your configuration in a YAML file, you can put it all in a YAML file under the key tumblr
and call :
Tumblr.load_config("/path/to/config.yml")
Blog and Redis
Most interactions with the Tumblrb gem happen through the Blog
class, which handles fetching from Tumblr and caching in Redis.
To get started, fetch the posts from Tumblr and cache them in Redis, call Blog.refresh!
. Every time you write a new post for your Tumblr blog, call this method again to keep Tumblrb up to date.
Afterwards, to access your blog entries use an AREL type interface to access posts.
Blog.tagged_with("technology").per_page(3).page(2).all
Fetching only happens when array methods are called in the chain.
Loading posts directly
You can also load posts directly using a similar interface :
Post.page(1).per_page(20).tagged_with("technology").type("text").all
Or you can load 1 post by Tumblr id :
Post.find(tumblr_id)
Post Classes
Every Tumblr entry type is a separate class so you can do stuff like :
case post
when Tumblr::Text
# Display a regular post
when Tumblr::Quote
# Display a quote
when Tumblr::Photo
# Display a photo
...
end
This makes custom display easier.
Known Issues
There's no testing or real documentation. I know, wanna help?
This isn't the same...
If you were using Tumblrb 1.0, this is completely different. I realize that. However, I didn't think anyone was using that gem and I think this is a better more holistic solution. Sorry for the inconvenience.
Anything else?
Questions, requests, concerns? Find me at the gorgon lab