繁体   English   中英

在Rails中使用机架代理访问Faye

[英]Using rack-proxy with Rails to access Faye

我有一个Rails应用程序,可通过Faye提供实时功能。 我的客户将通过example.com:9292/faye访问Faye服务器。 我没有使用该地址并显示机器的开放端口,而是尝试添加机架中间件,并通过使用“ rack-proxy” 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.middleware.use "FayeProxy"将中间件添加到config / application.rb ,但是当我运行rails服务器时,出现以下错误:

/gems/ruby-1.9.3-p194/gems/rack-proxy-0.5.0/lib/rack/proxy.rb:12:in'initialize':undefined method`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。

似乎机架代理不应被视为中间件,而应通过此处所述的路径进行安装: http : //inductor.induktiv.at/blog/2010/05/23/mount-rack-apps-in- rails-3 /

我知道这很旧,但是我只是遇到了类似的问题,但是我怀疑默认情况下, faye_proxy.rb所在的文件夹不包含在rails中。

添加一个初始化也许./config/initializers/proxy.rb其中包含require "#{Rails.root}/lib/faye_proxy.rb"替换lib用,无论你把代理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM