2010-04-22 2 views
5

Ruby에 포함 된 클래스의 메서드를 어떻게 호출합니까? 아래 예제를 참조하십시오. 이것은 작동하지만, 내가 원하는되지 않습니다 :Ruby에 포함 된 클래스의 메서드 호출

require 'httparty' 

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

    def initialize(path) 
     # other code 
    end 

    end 
end 

이것은 내가 원하는,하지만 undefined method 'base_uri' [...] 말, 작동하지 않습니다. 내가 뭘하려는 건 초기화 매개 변수에서 동적으로 httparty의 base_uri를 설정하는 것입니다.

require 'httparty' 

module MyModule 
    class MyClass 
    include HTTParty 

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

    end 
end 

답변

7

HTTParty source code에 따르면 base_uri 클래스 방법이다. 그래서 당신은 클래스 컨텍스트

module MyModule 
    class MyClass 
    include HTTParty 

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

    end 
end 

이 솔루션은 당신이 당신의 라이브러리를 사용하는 방법에 따라, 스레드 안전하지 않을 수도주의에 메소드를 호출해야합니다.

+0

스레드 안전 문제에 대해 더 많은 것을 알 수 있습니까? 레일상의 루비에서는 여러 프로세스가 있습니다. 그럴 경우 안전한가요? 두 프로세스가 base_uri 클래스를 동시에 변경할 수 있습니다. 어떻게 작동합니까? – user566245

관련 문제