Skip to content

Instantly share code, notes, and snippets.

@madx
Created July 28, 2009 13:21
Show Gist options
  • Save madx/157270 to your computer and use it in GitHub Desktop.
Save madx/157270 to your computer and use it in GitHub Desktop.
require 'rackable'
require 'couchrest'
DB = CouchRest.database!('http://localhost:5984/targetz')
class Target < CouchRest::ExtendedDocument
use_database DB
property :url
property :slug
property :desc
view_by :slug
class Proxy
extend Rackable
def self.get(name=nil)
if name
targets = Target.by_slug(:key => name)
http_error 404 if targets.empty?
target = targets.first
rack.response.redirect(target[:url])
else
list_targets
end
end
def self.post()
Target.new(:url => rack.data[:url],
:slug => rack.data[:slug],
:desc => rack.data[:desc]).save
end
def self.list_targets
String.new.tap do |out|
Target.all.each do |target|
out << "#{target[:slug]}: #{target[:url]}"
end
end
end
end
end
run Target::Proxy
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment