Доступ к переменной экземпляра класса периодически прерывается - PullRequest
2 голосов
/ 09 января 2012

Я работаю над движком Rails и хост-приложением одновременно.Я пытаюсь предоставить способ для хост-приложения передавать блоки кода на один из контроллеров движка, которые он будет вызывать в определенное время.

У хост-приложения есть файл config/initializers, содержащий это:

MyEngine::TheController.add_doc_hook(:some_key) do
  # Some code to execute
end

... и в контроллере двигателя я называю определенный хук (если он есть) следующим образом:

def update
  # some code...

  run_doc_hook(:some_key)

  # more code...
end

Вот методы доступа в контроллере двигателя:

# Getter for the blocks - usually returns correctly but sometimes returns nil
def self.doc_hooks
  @doc_hooks
end

# Setter - called by the host application
def self.add_doc_hook(name, &block)
  @doc_hooks ||= {}
  @doc_hooks[name] = block
end

А вот метод для запуска заданного хука:

protected

# Run pre-set hooks, which can be specified by the host application
def run_doc_hook(name, *args)
  hooks = self.class.doc_hooks # HERE - this is sometimes nil
  if hooks && hooks.has_key?(name) && hooks[name].respond_to?(:call)
    hooks[name].call(*args)
  end
end

Как видите, я сохраняю предоставленные блоки кода в переменной экземпляра класса.Доступ к ним работает нормально, возможно, 4 из 5 запросов, но периодически завершается ошибкой : метод доступа возвращает nil.Я не могу понять, почему это так.

Кто-нибудь может понять, в чем может быть проблема?

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