0

我正在重构一个 ROR 项目,该项目使用法拉第作为请求客户端,并具有预定义的适配器以与 EM 同步使用,如下所示:

  def which_faraday_adapter?
    if Utils::ModuleLoaded.synchrony? && Utils::ModuleLoaded.fiberpool?
      :em_synchrony
    else
      :net_http
    end
  end

  module ModuleLoaded
    def self.synchrony?
      defined?(EM::Synchrony) && EM.reactor_running?
    end

    def self.fiberpool?
      CfConsole::Application.config.middleware.middlewares.include?(Rack::FiberPool)
    end
  end 

我知道我可以在我的 config/application.rb 中启用 FiberPool,但是如何启用 EM.synchrony?

我是红宝石新手,具有 EM 的基本知识,但我仍然不太清楚以下内容的含义:

defined?(EM::Synchrony) && EM.reactor_running? 

因此,非常感谢任何解释和示例。

4

1 回答 1

0

这很简单,只需在 application.rb 中取消注释这一行:

config.middleware.insert_before Rails::Rack::Logger, Rack::FiberPool
于 2013-01-31T07:46:02.333 回答