On Jul 12, 2007, at 9:17 AM, Robert Dober wrote: > On 7/12/07, James Edward Gray II <james / grayproductions.net> wrote: > <snip> >> > If you are looking for warnings or errors for subclasses not >> > implementing the abstract method you will be disappointed at >> Compile >> > Time [which arguabley does not even exist in 1.8] >> >> class AbtractClass >> REQUIRED_METHODS = %w[one two three] >> >> def self.inherited(subclass) >> REQUIRED_METHODS.each do |m| >> raise "An implementation of #{m} is required by # >> {self.class}" \ >> unless subclass.instance_methods.include? m >> end >> end >> end >> >> class Broken < AbtractClass >> def one; end >> def two; end >> end >> # ~> -:7:in `inherited': An implementation of one is required by >> Class (RuntimeError) >> # ~> from -:5:in `each' >> # ~> from -:5:in `inherited' >> # ~> from -:12 >> >> But don't do that. ;) > That does not work as you have intended, it is complaining about #one > missing as a matter of fact: You are right. My mistake. James Edward Gray II