Although the following code is legal in Ruby (assuming I made no
mistakes), is it good Ruby programming practice?

From a library designer's point of view (assuming file1.rb is a
library and the designer knows nothing about file2.rb) it does not
(seem to) make sense.

But in a general Ruby programming view, where one programmer
is controlling all the files, is it good practice for a superclass to
use a method (or instance variable) defined by a derived class?
This does not seem to follow from the library designer view.

I know all the methods (and instance variables) are dynamically
part of the object (o) and classes can be modified at runtime, but
I am still struggling with the previous perspective.

file1.rb

class A
  def methodA
    p "Method A"
    methodB
  end
end

---

file2.rb

include "file1"

class B < A
  def methodB
    p "Method B"
  end
end

o = B.new
o.methodA