Self-hosted Ruby version of that old 90s chestnut, <BLINK>
the web-site hit counter</BLINK>
.
-
Install the gem and supporting files.
Gemfile
gem 'hit_counter'
Run:
bundle rake hit_counter:install
-
Add a controller action to your app.
application_controller.rb
def 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.rb
get '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')
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" />
-
To add your own style, create a PNG for each of the digits,
0.png
through9.png
. Save the images in a folder named after your new style inpublic/images/digits
. -
In your controller, declare a new
STYLES
constant and add the folder name to it:HitCounter::STYLES = %w(odometer scout celtic folder_name)
-
In your HTML, specify the new style with a
style
param equal to its index in the array plus one (unlike arrays, thestyle
param's index is one-based):<img alt="Hit Counter" border="0" src="/hit-counter?url=cnn.com&style=4" />
Complete RDoc documentation is available at RubyDoc.info.
Copyright © 2011-2025 Roderick Monje. See LICENSE.txt for further details.