Skip to content

Instantly share code, notes, and snippets.

View npj's full-sized avatar

Peter Brindisi npj

  • SoundCloud
  • Berlin
View GitHub Profile
QUEUE=high,normal,low rake resque:work
Resque.redis = Redis::Namespace.new(:resque, :redis => $redis)
# app/controller/posts_controller.rb
class PostsController < ApplicationController
before_filter :find_post
protected
def find_post
if id = Slug[params[:id]]
@post = Post.find(id)
Post.find_each { |post| Slug[post.id.to_s] = post.id.to_s }
# app/models/post.rb
class Post < ActiveRecord::Base
validate :ensure_slug_uniqueness
protected
# validate
def ensure_slug_uniqueness
class PostObserver
def after_save(post)
Slug[post.slug] = post.id
return true
end
def after_destroy(post)
Slug.destroy(post.id)
return true
end
class Slug
class << self
def [](slug)
redis.hget(hash, slug)
end
def []=(slug, id)
if old = self[slug]
redis.srem(set(old), slug)
class Slug
class << self
def [](slug)
redis.hget(hash, slug)
end
def []=(slug, id)
if old = self[slug]
redis.srem(set(old), slug)
class Slug
class << self
def [](slug)
redis.hget(hash, slug)
end
def []=(slug, id)
redis.hset(hash, slug, id)
end
class PostObserver
def after_save(post)
Slug[post.slug] = post.id.to_s
return true
end
end