2010-02-09 15 views
17

Czy ktoś wie wystarczająco dużo o Ruby require mi powiedzieć, czy po to prawidłowa składnia:Dynamicznie wymagające pliki?

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 

Jeśli tak, to czy require miejsce klejnot w globalnej przestrzeni nazw, jak to będzie, gdy na początku pliku?

Odpowiedz

15

Jeśli tak, to czy wymagają miejsce gem w globalnej przestrzeni nazw, jak wymagają tego samego w górnej części pliku, do którego?

Tak. require nie ma zasięgu, natomiast load ma.

+0

fantastyczne, to jest to co chciałem wiedzieć :) –

4

Tak to jest całkowicie poprawny i działa zgodnie z oczekiwaniami, ponieważ wymagają nie jest objęty zakresem

Wymagaj ściąga kodu z określonego pliku i próbuje użyć go w miejscu - to może oznaczać, że nie jest rozsądne, ale tak, można to zrobić.

lokalny zakres metodą byłoby nienaruszone i każda klasa itp definicja byłaby w oczekiwanym zakresie

+0

przeprosiny o pisowni;) –

+0

No Problem - wielkie pytanie (+ 1 ode mnie) –