Gem Version

Adds convenience methods to extract "meta" (as in http meta) strings from models by using existing fields or lambda/Procs for source data. Result is stripped of html tags and truncated to length (default 255). If the meta is 'keywords' the result will take extra steps to strip white space and remove blank elements (ie. multiple commas)


Add this line to your application's Gemfile:

gem 'has_meta'

And then execute:

$ bundle

Or install it yourself as:

$ gem install has_meta


class BlogPost < ActiveRecord::Base
  has_meta :keywords => :keywords, 
           :description => [:short_description, :content],
           :foo => lambda {|o| o.some_instance_method }

  def some_instance_method

bp = BlogPost.new(...)

bp.meta_keywords == bp.keywords

# if short_description is not blank and less than 255 characters then
bp.meta_description == bp.short_description

# if short_description is blank then
bp.meta_description == bp.content.slice(0,255)

# blocks will be passed an instance of the object itself
bp.meta_foo == "Feb 27, 4:36:00 PM" # for example
sleep 1
bp.meta_foo == "Feb 27, 4:36:01 PM" # one second later

# 'keywords' gets extra special treatment.
bp.short_description = ',one  two,  ,three, '
bp.meta_description == ',one  two,  ,three, '

bp.keywords = ',one  two,  ,three, '
bp.meta_keywords == 'one,two,three'


  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request