Build Status

Duck Map

Homepage: http://jeffduckett.com

Git: http://github.com/jduckett/duck_map

Documentation: http://rubydoc.info/github/jduckett/duck_map/frames

Author: Jeff Duckett

Copyright: 2013

License: MIT License

Synopsis

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

Support

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 (GUIDE.md)

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 test.com --skip-bundle

# add the following to your Rails app test.com/Gemfile
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
http://localhost:3000/sitemap.xml

# 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="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>http://localhost:3000/</loc>
    <lastmod>2011-10-27T13:02:15+00:00</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
</urlset>

Demo applications

You can find articles and demo apps at: http://jeffduckett.com/blogs.html

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

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