Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

URL shortening hobby kit

This branch is 0 commits ahead and 0 commits behind master

Fetching latest commit…

Cannot retrieve the latest commit at this time

README.md

Guillotine

Simple URL Shortener hobby kit.

USAGE

The easiest way to use it is with the built-in memory adapter.

# app.rb
require 'guillotine'
module MyApp
  class App < Guillotine::App
    set :db => Guillotine::Adapters::MemoryAdapter.new

    get '/' do
      redirect 'https://homepage.com'
    end
  end
end
# config.ru
require "rubygems"
require File.expand_path("../app.rb", __FILE__)
run MyApp::App

Once it's running, add URLs with a simple POST.

curl http://localhost:4567 -i \
  -F "url=http://techno-weenie.net"

You can specify your own code too:

curl http://localhost:4567 -i \
  -F "url=http://techno-weenie.net" \
  -F "code=abc"

Sequel

The memory adapter sucks though. You probably want to use a DB.

require 'guillotine'
require 'sequel'
module MyApp
  class App < Guillotine::App
    set :db => Guillotine::Adapters::SequelAdapter.new(Sequel.sqlite)
  end
end

Riak

If you need to scale out your url shortening services across the cloud, you can use Riak!

require 'guillotine'
require 'riak/client'
module MyApp
  class App < Guillotine::App
    client = Riak::Client.new :protocol => 'pbc', :pb_port => 8087
    bucket = client['guillotine']
    set :db => Guillotine::Adapters::RiakAdapter.new(bucket)
  end
end

Domain Restriction

You can restrict what domains that Guillotine will shorten.

require 'guillotine'
module MyApp
  class App < Guillotine::App
    # only this domain
    set :required_host, 'github.com'

    # or, any *.github.com domain
    set :required_host, /(^|\.)github\.com$/
  end
end

Not TODO

  • Statistics
  • Authentication
Something went wrong with that request. Please try again.