You might want to register sub classes with inherited like in

class Base
  def self.inherited(cl) ( @sub ||= [] ) << cl end
end

And then use cl.const_get() to access actual values.

Btw, why does the super class need to know derived class's constants?

Kind regards

    robert