Skip to content
Duck Map is a Rails 4.x compliant gem providing support for dynamically generating sitemaps and meta tags in HTML page headers.
Ruby HTML Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Build Status

Duck Map




Author: Jeff Duckett

Copyright: 2013

License: MIT License


Duck Map is a Rails 4.x compliant gem providing support for dynamically generating sitemaps and meta tags in HTML page headers.


I am officially dropping support for this repo as I am moving away from Rails. Anybody want it?

Full Guide

For an in depth discussion see: { Full guide (}

Feature List

  • Sitemaps are baked into the standard Rails Routing Code base and are defined directly in config/routes.rb.
  • Default sitemap at the root of the application named: /sitemap.xml
  • No code needed. Default sitemap.xml content is based on standard Rails controller actions: edit, index, new and show.
  • Designed to grab volitale elements such as last modified date directly from a model.
  • Automagically finds the first model on a controller and uses model attributes in sitemap and page headers.
  • Support for namespaces.
  • Support for nested resources.
  • Define as many sitemaps as you need.
  • Ability to sychronize static last modified dates directly from the rails view files or a .git repository.
  • Meta tags for HTML page headers such as title, last modified, canonical url, etc. that match data contained in sitemap.
  • Generate static sitemap files with compression.
  • Define global attributes and values and fine tune them down to the controller/model levels.
  • Support for mongoid

Quick Start

Follow these steps to create a Rails app with a sitemap.

# open a shell and navigate to a work directory.
# create a Rails app
rails new --skip-bundle

# add the following to your Rails app
gem 'duck_map'

# depending on your Rails version, you may have to add the following lines as well.
gem 'execjs'
gem 'therubyracer'

# make sure you have all the gems, etc.
bundle install

# create a controller
rails g controller home

# create a route in config/routes.rb
root :to => 'home#index'

# start the server
rails s

# view the sitemap

# if you view the HTML source of: http://localhost:3000/sitemap.xml
# you should see something similar to the following:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="">

Demo applications

You can find articles and demo apps at:

Why use the name Duck Map?

Having "Duck" built into the name? This stems from a habit I picked up years ago back in the days when I was doing DBase and Clipper programming for DOS. I picked up the idea from one of my favorite authors at the time (Rick Spence - or at least I think it was Rick). Anyway, the idea is to basically sign your code by incorporating your initials into library names or method calls. That way, you know the origin of a piece of code at a glance. The downside is that you definitely own it and can't blame it on that guy that keeps beating you to the good doughnuts. I hate that guy!! The second reason is that there was a pretty good chance I wouldn't run into naming conflicts.


Copyright (c) 2013 Jeff Duckett. See license for details.

You can’t perform that action at this time.