普通に X と書くと参照できないので、self.class::X のようにする。
irb(main):001:0> module M irb(main):002:1> def f; p self.class::X; end irb(main):003:1> end => nil irb(main):004:0> class C irb(main):005:1> X = 'x' irb(main):006:1> include M irb(main):007:1> end => C irb(main):008:0> C.new.f "x" => nil
定数参照のルールはよく分かっていないなあ。
include が絡んだときの話ってリファレンスマニュアルにはないのだろうか。