前田です。

以下のようなファイルをtest.rbとして保存して、

test.rb:
-------------------------
module Foo
  def foo
    puts "foo"
  end
end

include Foo

foo
-------------------------

これをload(filename, true)でロードすると、以下のようなエラーに
なります。

$ ruby -e 'load("test.rb", true)' /home/shugo/ruby/test.rb:7:in
`append_features': cyclic include detected (ArgumentError)
        from /home/shugo/ruby/test.rb:7
        from -e:1

また、Fooの定義をfoo.rbとして保存し、test.rbからrequireするように
変更すると、

foo.rb
-------------------------
module Foo
  def foo
    puts "foo"
  end
end
-------------------------

test.rb:
-------------------------
require "foo"

include Foo

foo
-------------------------

今度は以下のようなエラーになります。

$ ruby -e 'load("test.rb", true)'
/home/shugo/ruby/test.rb:5: undefined local variable or method `foo' for
main:Object (NameError)
        from -e:1

これらは意図された挙動でしょうか。

Rubyのバージョンは以下の通りです。

$ ruby -v
ruby 1.8.3 (2005-08-24) [i686-linux]

また、後者のコードでfooの呼びだしの前に

class << self
  p ancestors
end

のようなコードを入れると、エラーがおきなくなります。

$ ruby -e 'load("test.rb", true)'
[#<Module:0xb7d63060>, Foo, Object, Kernel]
foo

-- 
前田 修吾