How should metaclass work?

Facets defines metaclass like this:

  def meta_class(&block)
    if block_given?
      (class << self; self; end).class_eval(&block)
    else
      (class << self; self; end)
    end
  end
  alias_method :metaclass, :meta_class

RSpec defines it this way:

  def metaclass
    class << self; self; end
  end

I just spent an hour figuring out why some carefully-tested code went no-op after adding RSpec to a project. As a community we need to commit to a standard definition here. What should it be?

Get In Touch