2010-04-22 34 views
5

Làm thế nào để bạn gọi phương thức của một lớp được bao gồm trong Ruby? Xem ví dụ bên dưới. Công trình này, nhưng nó không phải là những gì tôi muốn:Phương pháp gọi trên lớp được bao gồm trong Ruby

require 'httparty' 

module MyModule 
    class MyClass 
    include HTTParty 
    base_uri 'http://localhost'   

    def initialize(path) 
     # other code 
    end 

    end 
end 

Đây là những gì tôi muốn, nhưng không hoạt động, nói undefined method 'base_uri' [...]. Những gì tôi đang cố gắng làm là đặt base_uri của httparty động từ tham số khởi tạo.

require 'httparty' 

module MyModule 
    class MyClass 
    include HTTParty 

    def initialize(path) 
     base_uri 'http://localhost' 
     # other code 
    end 

    end 
end 

Trả lời

7

Theo HTTParty source code, base_uri là một phương pháp lớp học. Vì vậy, bạn sẽ cần phải gọi phương thức trên bối cảnh lớp

module MyModule 
    class MyClass 
    include HTTParty 

    def initialize(path) 
     self.class.base_uri 'http://localhost' 
     # other code 
    end 

    end 
end 

Ghi chú rằng giải pháp này có thể không được chủ đề an toàn, tùy thuộc vào cách bạn sử dụng thư viện của bạn.

+0

Bạn có thể ném nhiều ánh sáng hơn vào vấn đề an toàn chỉ? Trong ruby ​​trên đường ray, chúng tôi có nhiều quy trình. nó có an toàn trong trường hợp đó không? Hai quy trình có thể thay đổi các lớp base_uri cùng một lúc. Nó hoạt động như thế nào? – user566245

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