Two different approaches to create abstract classes in Ruby