Manipulate page preview thumbnails for your Rack app.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib
.gitignore
Gemfile
LICENSE
README.md
rack-preview.gemspec

README.md

Rack::Preview

Rack::Preview is a simple piece of Rack middleware to let you serve a different response to requests made as part of Safari's Top Sites and Opera's Speed Dial thumbnail previews, by hooking into the X-Purpose: preview HTTP header.

To see the effect, check Martin Sutherland's write-up for Safari. Opera's dev blog also has more.

Installation

To install from RubyGems:

gem install rack-preview

To get the source:

git clone https://github.com/aprescott/rack-preview.git

Example

require "rack/preview"

Rack::Server.start(app: Rack::Builder.app do
  use Rack::Preview, %Q{<h1 style="font-size: 10em;">Welcome to the preview!</h1>}

  run lambda { |env| [200, { "Content-Type" => "text/html" }, ["Hello world!"]] }
end)
# Regular response.
$ curl http://localhost:8080/
Hello world!

# Responses to requests with X-Purpose
# from the relevant browsers.
$ curl -H "X-Purpose: preview" --user-agent "Safari" http://localhost:8080/
<h1 style="font-size: 10em;">Welcome to the preview!</h1>

Contribute

  • Fork it
  • Make a new feature branch: git checkout -b some-new-thing master
  • Hack away and write tests that pass
  • Pull request