From a98a649f5cf1f2f841a1a031014db79a834a857c Mon Sep 17 00:00:00 2001 From: Pat Allan Date: Fri, 31 Jul 2009 21:39:59 +0100 Subject: [PATCH] Adding metaclass method for Rails/ActiveRecord 1.2 compatibility --- lib/thinking_sphinx/rails_additions.rb | 14 ++++++++++++++ spec/lib/thinking_sphinx/rails_additions_spec.rb | 12 ++++++++++++ 2 files changed, 26 insertions(+) diff --git a/lib/thinking_sphinx/rails_additions.rb b/lib/thinking_sphinx/rails_additions.rb index c7db0a15e..2364640bc 100644 --- a/lib/thinking_sphinx/rails_additions.rb +++ b/lib/thinking_sphinx/rails_additions.rb @@ -134,3 +134,17 @@ def cattr_accessor(*syms) Class.extend( ThinkingSphinx::ClassAttributeMethods ) unless Class.respond_to?(:cattr_reader) + +module ThinkingSphinx + module MetaClass + def metaclass + class << self + self + end + end + end +end + +unless Object.new.respond_to?(:metaclass) + Object.send(:include, ThinkingSphinx::MetaClass) +end diff --git a/spec/lib/thinking_sphinx/rails_additions_spec.rb b/spec/lib/thinking_sphinx/rails_additions_spec.rb index 211500c46..b9917f7ff 100644 --- a/spec/lib/thinking_sphinx/rails_additions_spec.rb +++ b/spec/lib/thinking_sphinx/rails_additions_spec.rb @@ -118,6 +118,18 @@ end end +describe ThinkingSphinx::MetaClass do + describe 'metaclass' do + it "should exist as an instance method in Object" do + Object.new.should respond_to('metaclass') + end + + it "should return the meta/eigen/singleton class" do + Object.new.metaclass.should be_a(Class) + end + end +end + class TestModel @@squares = 89 @@circles = 43