在模块定义之外放置Ruby`require`?

pro*_*ons 4 ruby

在Ruby中,可以require在模块定义之外放置语句吗?请问require"d模块仍然是嵌套在模块中使用内部类?

例如,是这样的:

require 'baz'
module Foo
  class Bar
    # some code using Baz
  end
end 
Run Code Online (Sandbox Code Playgroud)

这个一样吗?

module Foo
  require 'baz'
  class Bar
    # some code using Baz
  end
end 
Run Code Online (Sandbox Code Playgroud)

和这个一样吗?

module Foo
  class Bar
    require 'baz'
    # some code using Baz
  end
end 
Run Code Online (Sandbox Code Playgroud)

Ale*_*ard 6

你可以放在require任何地方.正如您在此处的文档中所看到的,所需文件中的常量和全局变量始终添加到全局命名空间中.最佳做法通常是在任何嵌套之外使用require,但是有些宝石利用它可以在任何地方有条件地需要基于ruby逻辑的文件的事实,即

if some_boolean
  require 'file'
end
Run Code Online (Sandbox Code Playgroud)