2010-04-22 18 views
5

¿Cómo se llama el método de una clase incluida en Ruby? Vea el ejemplo a continuación. Esto funciona, pero no es lo que quiero:Método de llamada en la clase incluida en Ruby

require 'httparty' 

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

    def initialize(path) 
     # other code 
    end 

    end 
end 

Esto es lo que quiero, pero no funciona, diciendo undefined method 'base_uri' [...]. Lo que intento hacer es establecer el base_uri de httparty dinámicamente desde el parámetro de inicialización.

require 'httparty' 

module MyModule 
    class MyClass 
    include HTTParty 

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

    end 
end 

Respuesta

7

Según la HTTParty source code, base_uri es un método de clase. por lo que tendría que llamar al método en el contexto de clase

module MyModule 
    class MyClass 
    include HTTParty 

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

    end 
end 

Tenga en cuenta que esta solución no puede ser hilo de seguridad, dependiendo de cómo se utiliza su biblioteca.

+0

¿Puede arrojar más luz sobre el tema seguro de la rosca? En Ruby on Rails tenemos múltiples procesos. ¿es seguro en ese caso? Dos procesos podrían cambiar las clases base_uri simultáneamente. ¿Cómo funciona? – user566245

Cuestiones relacionadas