2010-02-09 58 views
17

有誰知道有足夠的瞭解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地方寶石到全局命名空間,因爲它會當在文件的頂部?

回答

15

如果是這樣,將在需要的地方寶石 到全局命名空間一樣 需要在文件將頂部?

是的。 require沒有範圍,而load呢。

+0

好極了,那是什麼我想知道的拼寫:) – 2010-02-09 16:28:38

4

是的,它是完全有效的,按預期的要求並不作用域

需要拉從指定的文件中的代碼,並試圖就地使用它的工作原理 - 這可能意味着它不明智的做,但是可以做到。

本地方法的範圍會受到影響和任何類的定義等將在預期範圍

+0

道歉;) – 2010-02-09 16:27:46

+0

沒問題 - 偉大的問題(+ 1我) – 2010-02-09 16:29:23