2010-02-09 28 views
17

Có ai biết đủ về Ruby require cho tôi biết nếu sau đây là cú pháp hợp lệ:Tự động yêu cầu tệp?

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 

Nếu vậy, sẽ require nơi viên ngọc vào không gian tên toàn cầu vì nó sẽ khi ở phía trên cùng của tập tin?

Trả lời

15

Nếu vậy, yêu cầu đặt đá quý vào không gian tên chung như cùng một yêu cầu ở đầu tệp phải không?

Có. require không có phạm vi, trong khi load.

+0

Fantastic, đó là những gì tôi muốn biết :) –

4

Vâng đó là hoàn toàn hợp lệ và hoạt động như dự kiến ​​vì đòi hỏi không scoped

Yêu cầu kéo trong mã từ một file nào đó và cố gắng sử dụng nó tại chỗ - có thể có nghĩa là nó không phải là hợp lý để làm nhưng có nó có thể được thực hiện.

Phạm vi phương pháp địa phương sẽ không bị ảnh hưởng và bất kỳ vv nghĩa lớp sẽ được ở phạm vi dự kiến ​​

+0

lời xin lỗi về chính tả;) –

+0

Không có vấn đề - câu hỏi lớn (+ 1 từ tôi) –

Các vấn đề liên quan