HitCounter
Self-hosted Ruby version of that old 90s chestnut, <BLINK>the web-site hit counter</BLINK>.
Installation
-
Install the gem and supporting files.
Gemfilegem 'hit_counter'
Run:
bundle rake hit_counter:install
-
Add a controller action to your app.
application_controller.rbdef hit_counter return if params[:url].blank? # find or create a hit counter for this URL hc = HitCounter.get params[:url] # increase the tally by one hc.increment # get the image as a blob and stream it to the browser send_data hc.image(params[:style]).to_blob, disposition: 'inline', filename: "#{hc.hits}.png", type: :png end
routes.rbget 'hit-counter' => 'application#hit_counter' # technically should be POST/PUT, but GET makes integration simpler
-
Add the hit-counter image tag to your site's HTML:
<img alt="Hit Counter" border="0" src="/hit-counter?url=https://cnn.com&style=1" />
Or try it out in irb with:
require './spec/spec_helper'
hc = HitCounter.get('cnn.com')Customizing the Hit-Counter Image
Use an Existing Style
| Name | Style number |
|---|---|
| Celtic | ![]() |
| Odometer | ![]() |
| Scout | ![]() |
You can use one of the three included styles by specifying a different style param in the HTML:
<img alt="Hit Counter" border="0" src="/hit-counter?url=cnn.com&style=1" />Create Your Own Style
-
To add your own style, create a PNG for each of the digits,
0.pngthrough9.png. Save the images in a folder named after your new style inpublic/images/digits. -
In your controller, declare a new
STYLESconstant and add the folder name to it:HitCounter::STYLES = %w(odometer scout celtic folder_name)
-
In your HTML, specify the new style with a
styleparam equal to its index in the array plus one (unlike arrays, thestyleparam's index is one-based):<img alt="Hit Counter" border="0" src="/hit-counter?url=cnn.com&style=4" />
Documentation
Complete RDoc documentation is available at RubyDoc.info.
Copyright © 2011-2025 Roderick Monje. See LICENSE.txt for further details.


