> The @@my_data syntax seems to attach only to the original class in which
> it was defined, not for any subclasses.

You can use attributes (@var) at the class level and manually copy
values with the Class#inherited method.

    class A
        class << self
            attr_accessor :foo
            def inherited(sub)
                sub.foo = @foo
            end
        end
        self.foo = 1
    end

    class B < A
    end

    p A.foo, B.foo
    # => [1, 1]
    B.foo = 2
    p A.foo, B.foo
    # => [1, 2]

If something like this is what you were asking for.

Or you could use some package that does this for you. IIRC traits
implements such a thing.

Thomas.