Вызов метода во включенном классе в Ruby - PullRequest
5 голосов
/ 22 апреля 2010

Как вы называете метод включенного класса в 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' [...]. Я пытаюсь установить base_uri для httparty динамически из параметра initialize.

require 'httparty'

module MyModule
  class MyClass
    include HTTParty

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

  end
end

1 Ответ

7 голосов
/ 22 апреля 2010

Согласно исходному коду HTTParty , base_uri является методом класса. Поэтому вам нужно вызвать метод в контексте класса

module MyModule
  class MyClass
    include HTTParty

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

  end
end

Помните, что это решение не может быть поточно-ориентированным, в зависимости от того, как вы используете вашу библиотеку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...