动态需要文件?

时间:2010-02-09 16:10:33

标签: ruby dynamic rubygems namespaces require

有没有人对Ruby的require有足够的了解,告诉我以下是否是有效的语法:

class Something

  def initialize(mode)
     case mode
     when :one then require 'some_gem'
     when :two then require 'other_gem'
     end
  end

end

s = Something.new

如果是这样,require将gem放在全局命名空间中,就像放在文件顶部那样吗?

2 个答案:

答案 0 :(得分:16)

  

如果是这样,需要放置宝石   进入全局命名空间同样如此   在文件的顶部需要吗?

是。 require没有范围,而load则有。

答案 1 :(得分:5)

是的,它完全有效且按预期工作,因为要求不受范围限定

要求从指定文件中提取代码并尝试就地使用它 - 这可能意味着这样做是不明智的,但是可以这样做。

本地方法范围不受影响,任何类定义等都将处于预期范围