+1

On Jun 7, 2010, at 11:47 AM, Matt Robinson wrote:

The metaid.rb file came straight from why the lucky stiff's "seeing
metaclasses clearly" article.  Rails used this too, but they recently
deprecated the name metaclass in favor of singleton_class to match what
ruby-core decided to do.  meta, eigen and singlton class were all
suggested and in the end singleton was agreed upon.

http://redmine.ruby-lang.org/issues/show/1082

Signed-off-by: Matt Robinson <[email protected]>
---
lib/puppet/metatype/manager.rb                     |    4 ++--
lib/puppet/network/xmlrpc/client.rb                |    2 +-
lib/puppet/parameter.rb                            |    4 ++--
lib/puppet/provider.rb                             |    2 +-
.../provider/nameservice/directoryservice.rb       |    2 +-
lib/puppet/util/metaid.rb                          |    8 ++++----
spec/unit/file_serving/content.rb                  |    2 +-
spec/unit/file_serving/metadata.rb                 |    2 +-
spec/unit/indirector.rb                            |    2 +-
spec/unit/indirector/indirection.rb                |    2 +-
spec/unit/indirector/yaml.rb                       |    2 +-
spec/unit/relationship.rb                          |    2 +-
spec/unit/resource.rb                              |    2 +-
spec/unit/resource/catalog.rb                      |    2 +-
spec/unit/ssl/certificate.rb                       |    2 +-
spec/unit/ssl/certificate_request.rb               |    2 +-
spec/unit/ssl/key.rb                               |    2 +-
spec/unit/util/cacher.rb                           |    4 ++--
spec/unit/util/tagging.rb                          |    2 +-
test/language/scope.rb                             |    2 +-
test/network/server/mongrel_test.rb                |    2 +-
21 files changed, 27 insertions(+), 27 deletions(-)

diff --git a/lib/puppet/metatype/manager.rb b/lib/puppet/metatype/ manager.rb
index 865a7c2..34b2bde 100644
--- a/lib/puppet/metatype/manager.rb
+++ b/lib/puppet/metatype/manager.rb
@@ -42,7 +42,7 @@ module Manager
        newmethod = "new#{name.to_s}"

        # Used for method manipulation.
-        selfobj = metaclass()
+        selfobj = singleton_class()

        @types ||= {}

@@ -103,7 +103,7 @@ module Manager
        )

        if respond_to?("new" + name.to_s)
-            metaclass.send(:remove_method, "new" + name.to_s)
+            singleton_class.send(:remove_method, "new" + name.to_s)
        end
    end

diff --git a/lib/puppet/network/xmlrpc/client.rb b/lib/puppet/ network/xmlrpc/client.rb
index 9faa71c..f12d279 100644
--- a/lib/puppet/network/xmlrpc/client.rb
+++ b/lib/puppet/network/xmlrpc/client.rb
@@ -49,7 +49,7 @@ module Puppet::Network

        class ErrorHandler
            def initialize(&block)
-                metaclass.define_method(:execute, &block)
+                singleton_class.define_method(:execute, &block)
            end
        end

diff --git a/lib/puppet/parameter.rb b/lib/puppet/parameter.rb
index 58a9147..2ebb740 100644
--- a/lib/puppet/parameter.rb
+++ b/lib/puppet/parameter.rb
@@ -296,8 +296,8 @@ class Puppet::Parameter
# Optionaly convert the value to a canonical form so that it will
        # be found in hashes, etc.  Mostly useful for namevars.
        def to_canonicalize(&block)
-            metaclass = (class << self; self; end)
-            metaclass.send(:define_method,:canonicalize,&block)
+            singleton_class = (class << self; self; end)
+            singleton_class.send(:define_method,:canonicalize,&block)
        end

        # Mark whether we're the namevar.
diff --git a/lib/puppet/provider.rb b/lib/puppet/provider.rb
index 3cef0dd..2627926 100644
--- a/lib/puppet/provider.rb
+++ b/lib/puppet/provider.rb
@@ -109,7 +109,7 @@ class Puppet::Provider
    # Create the methods for a given command.
    def self.make_command_methods(name)
        # Now define a method for that command
-        unless metaclass.method_defined? name
+        unless singleton_class.method_defined? name
            meta_def(name) do |*args|
                unless command(name)
raise Puppet::Error, "Command %s is missing" % name diff --git a/lib/puppet/provider/nameservice/directoryservice.rb b/ lib/puppet/provider/nameservice/directoryservice.rb
index 50c87fe..9a4424d 100644
--- a/lib/puppet/provider/nameservice/directoryservice.rb
+++ b/lib/puppet/provider/nameservice/directoryservice.rb
@@ -20,7 +20,7 @@ require 'cgi'

class Puppet::Provider::NameService
class DirectoryService < Puppet::Provider::NameService
-    # JJM: Dive into the eigenclass
+    # JJM: Dive into the singleton_class
    class << self
        # JJM: This allows us to pass information when calling
        #      Puppet::Type.type
diff --git a/lib/puppet/util/metaid.rb b/lib/puppet/util/metaid.rb
index 0c38a5b..076775c 100644
--- a/lib/puppet/util/metaid.rb
+++ b/lib/puppet/util/metaid.rb
@@ -1,14 +1,14 @@
class Object
    # The hidden singleton lurks behind everyone
-    def metaclass; class << self; self; end; end
-    def meta_eval(&blk); metaclass.instance_eval(&blk); end
+    def singleton_class; class << self; self; end; end
+    def meta_eval(&blk); singleton_class.instance_eval(&blk); end

-    # Adds methods to a metaclass
+    # Adds methods to a singleton_class
    def meta_def(name, &blk)
        meta_eval { define_method name, &blk }
    end

-    # Remove metaclass methods.
+    # Remove singleton_class methods.
    def meta_undef(name, &blk)
        meta_eval { remove_method name }
    end
diff --git a/spec/unit/file_serving/content.rb b/spec/unit/ file_serving/content.rb
index eacaff8..111886d 100755
--- a/spec/unit/file_serving/content.rb
+++ b/spec/unit/file_serving/content.rb
@@ -14,7 +14,7 @@ describe Puppet::FileServing::Content do
    end

it "should should include the IndirectionHooks module in its indirection" do - Puppet ::FileServing::Content.indirection.metaclass.included_modules.should include(Puppet::FileServing::IndirectionHooks) + Puppet ::FileServing ::Content.indirection.singleton_class.included_modules.should include(Puppet::FileServing::IndirectionHooks)
    end

    it "should only support the raw format" do
diff --git a/spec/unit/file_serving/metadata.rb b/spec/unit/ file_serving/metadata.rb
index 22f033d..ef2b3b6 100755
--- a/spec/unit/file_serving/metadata.rb
+++ b/spec/unit/file_serving/metadata.rb
@@ -14,7 +14,7 @@ describe Puppet::FileServing::Metadata do
    end

it "should should include the IndirectionHooks module in its indirection" do - Puppet ::FileServing ::Metadata.indirection.metaclass.included_modules.should include(Puppet::FileServing::IndirectionHooks) + Puppet ::FileServing ::Metadata.indirection.singleton_class.included_modules.should include(Puppet::FileServing::IndirectionHooks)
    end

    it "should have a method that triggers attribute collection" do
diff --git a/spec/unit/indirector.rb b/spec/unit/indirector.rb
index 0b4c616..64f7c42 100755
--- a/spec/unit/indirector.rb
+++ b/spec/unit/indirector.rb
@@ -56,7 +56,7 @@ describe Puppet::Indirector, "when registering an indirection" do

    it "should extend the class with the Format Handler" do
        @indirection = @thingie.indirects :first
- @thingie.metaclass.ancestors.should be_include(Puppet::Network::FormatHandler) + @thingie.singleton_class.ancestors.should be_include(Puppet::Network::FormatHandler)
    end

    after do
diff --git a/spec/unit/indirector/indirection.rb b/spec/unit/ indirector/indirection.rb
index 311cc53..2ed51d7 100755
--- a/spec/unit/indirector/indirection.rb
+++ b/spec/unit/indirector/indirection.rb
@@ -133,7 +133,7 @@ describe Puppet::Indirector::Indirection do
        it "should extend itself with any specified module" do
            mod = Module.new
@indirection = Puppet::Indirector::Indirection.new(mock('model'), :test, :extend => mod) - @indirection.metaclass.included_modules.should include(mod) + @indirection.singleton_class.included_modules.should include(mod)
        end

        after do
diff --git a/spec/unit/indirector/yaml.rb b/spec/unit/indirector/ yaml.rb
index 7536fbc..0e70708 100755
--- a/spec/unit/indirector/yaml.rb
+++ b/spec/unit/indirector/yaml.rb
@@ -16,7 +16,7 @@ describe Puppet::Indirector::Yaml, " when choosing file location" do
        @store = @store_class.new

        @subject = Object.new
-        @subject.metaclass.send(:attr_accessor, :name)
+        @subject.singleton_class.send(:attr_accessor, :name)
        @subject.name = :me

        @dir = "/what/ever"
diff --git a/spec/unit/relationship.rb b/spec/unit/relationship.rb
index 5a52cb5..b98e4e2 100755
--- a/spec/unit/relationship.rb
+++ b/spec/unit/relationship.rb
@@ -213,7 +213,7 @@ describe Puppet::Relationship, "when converting from pson" do
    end

    it "should be extended with the PSON utility module" do
- Puppet::Relationship.metaclass.ancestors.should be_include(Puppet::Util::Pson) + Puppet::Relationship.singleton_class.ancestors.should be_include(Puppet::Util::Pson)
    end

# LAK:NOTE For all of these tests, we convert back to the edge so we can
diff --git a/spec/unit/resource.rb b/spec/unit/resource.rb
index b26f4f9..66a2b7d 100755
--- a/spec/unit/resource.rb
+++ b/spec/unit/resource.rb
@@ -362,7 +362,7 @@ describe Puppet::Resource do
        end

        it "should include the pson util module" do
- Puppet::Resource.metaclass.ancestors.should be_include(Puppet::Util::Pson) + Puppet::Resource.singleton_class.ancestors.should be_include(Puppet::Util::Pson)
        end

# LAK:NOTE For all of these tests, we convert back to the resource so we can diff --git a/spec/unit/resource/catalog.rb b/spec/unit/resource/ catalog.rb
index 7583c01..39ddccd 100755
--- a/spec/unit/resource/catalog.rb
+++ b/spec/unit/resource/catalog.rb
@@ -946,7 +946,7 @@ describe Puppet::Resource::Catalog, "when converting from pson" do
    end

    it "should be extended with the PSON utility module" do
- Puppet::Resource::Catalog.metaclass.ancestors.should be_include(Puppet::Util::Pson) + Puppet::Resource::Catalog.singleton_class.ancestors.should be_include(Puppet::Util::Pson)
    end

    it "should create it with the provided name" do
diff --git a/spec/unit/ssl/certificate.rb b/spec/unit/ssl/ certificate.rb
index 0d48991..6bd7e77 100755
--- a/spec/unit/ssl/certificate.rb
+++ b/spec/unit/ssl/certificate.rb
@@ -14,7 +14,7 @@ describe Puppet::SSL::Certificate do
    end

    it "should be extended with the Indirector module" do
-        @class.metaclass.should be_include(Puppet::Indirector)
+        @class.singleton_class.should be_include(Puppet::Indirector)
    end

    it "should indirect certificate" do
diff --git a/spec/unit/ssl/certificate_request.rb b/spec/unit/ssl/ certificate_request.rb
index 85e1d54..fa5986a 100755
--- a/spec/unit/ssl/certificate_request.rb
+++ b/spec/unit/ssl/certificate_request.rb
@@ -11,7 +11,7 @@ describe Puppet::SSL::CertificateRequest do
    end

    it "should be extended with the Indirector module" do
-        @class.metaclass.should be_include(Puppet::Indirector)
+        @class.singleton_class.should be_include(Puppet::Indirector)
    end

    it "should indirect certificate_request" do
diff --git a/spec/unit/ssl/key.rb b/spec/unit/ssl/key.rb
index b234704..cfeaf79 100755
--- a/spec/unit/ssl/key.rb
+++ b/spec/unit/ssl/key.rb
@@ -10,7 +10,7 @@ describe Puppet::SSL::Key do
    end

    it "should be extended with the Indirector module" do
-        @class.metaclass.should be_include(Puppet::Indirector)
+        @class.singleton_class.should be_include(Puppet::Indirector)
    end

    it "should indirect key" do
diff --git a/spec/unit/util/cacher.rb b/spec/unit/util/cacher.rb
index 40688bc..eb8515e 100755
--- a/spec/unit/util/cacher.rb
+++ b/spec/unit/util/cacher.rb
@@ -40,7 +40,7 @@ end

describe Puppet::Util::Cacher do
    it "should be extended with the Expirer module" do
- Puppet::Util::Cacher.metaclass.ancestors.should be_include(Puppet::Util::Cacher::Expirer) + Puppet::Util::Cacher.singleton_class.ancestors.should be_include(Puppet::Util::Cacher::Expirer)
    end

    it "should support defining cached attributes" do
@@ -154,7 +154,7 @@ describe Puppet::Util::Cacher do
                extend Puppet::Util::Cacher
            end

-            klass.metaclass.cached_attr(:myattr) { "eh" }
+            klass.singleton_class.cached_attr(:myattr) { "eh" }
            klass.myattr
        end

diff --git a/spec/unit/util/tagging.rb b/spec/unit/util/tagging.rb
index 3486f46..04800b3 100755
--- a/spec/unit/util/tagging.rb
+++ b/spec/unit/util/tagging.rb
@@ -66,7 +66,7 @@ describe Puppet::Util::Tagging, "when adding tags" do
    end

    it "should provide a method for testing tag validity" do
- @tagger.metaclass.publicize_methods(:valid_tag?) { @tagger.should be_respond_to(:valid_tag?) } + @tagger.singleton_class.publicize_methods(:valid_tag?) { @tagger.should be_respond_to(:valid_tag?) }
    end

    it "should add qualified classes as tags" do
diff --git a/test/language/scope.rb b/test/language/scope.rb
index 8b06e0d..d7f37eb 100755
--- a/test/language/scope.rb
+++ b/test/language/scope.rb
@@ -424,7 +424,7 @@ Host <<||>>"
        # the right namespaces
        scope = mkscope :parser => parser

-        parser.metaclass.send(:attr_accessor, :last)
+        parser.singleton_class.send(:attr_accessor, :last)

        methods = [:find_hostclass, :find_definition]
        methods.each do |m|
diff --git a/test/network/server/mongrel_test.rb b/test/network/ server/mongrel_test.rb
index 54bfb39..4414097 100755
--- a/test/network/server/mongrel_test.rb
+++ b/test/network/server/mongrel_test.rb
@@ -18,7 +18,7 @@ class TestMongrelServer < PuppetTest::TestCase
    # Make sure client info is correctly extracted.
    def test_client_info
        obj = Object.new
-        obj.metaclass.send(:attr_accessor, :params)
+        obj.singleton_class.send(:attr_accessor, :params)
        params = {}
        obj.params = params

--
1.7.1

--
You received this message because you are subscribed to the Google Groups "Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected] . For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en .



--
As a general rule, don't solve puzzles that open portals to Hell.
---------------------------------------------------------------------
Luke Kanies  -|-   http://puppetlabs.com   -|-   +1(615)594-8199

--
You received this message because you are subscribed to the Google Groups "Puppet 
Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to