我有一个通过 Faye 提供实时功能的 rails 应用程序。我的客户将通过example.com:9292/faye访问 Faye 服务器。我没有使用该地址并显示我机器的开放端口,而是尝试添加一个机架中间件,并通过使用“机架代理”gem,将我的example.com/faye请求代理到example.com:9292/faye。我的 Rails 中间件代码如下所示:
class FayeProxy < Rack::Proxy
def rewrite_env(env)
request = Rack::Request.new(env)
if request.path =~ %r{^/faye}
env["HTTP_HOST"] = "localhost:9292"
end
env
end
end
此外,我将中间件添加到config/application.rb by config.middleware.use "FayeProxy"
,但是当我运行我的 rails 服务器时,出现以下错误:
/gems/ruby-1.9.3-p194/gems/rack-proxy-0.5.0/lib/rack/proxy.rb:12:in 'initialize': 未定义方法'key?' 对于 # (NoMethodError)
即使我删除了 meta_request gem,我也会得到
*/gems/ruby-1.9.3-p194/gems/rack-proxy-0.5.1/lib/rack/proxy.rb:12:in initialize': undefined method
key?' 对于 # (NoMethodError) *
如果有人以前经历过这种情况或知道解决方案,我们将不胜感激。
Ps 我使用的是 Rails 3.2.13,机架 1.4.5,机架代理 0.5.1。