1

Faye を介してリアルタイム機能を提供する Rails アプリがあります。クライアントは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/application.rbに追加しました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 methodkey?' for # (NoMethodError) *

誰かがこれを以前に経験したことがある、または解決策を知っている場合、どんな助けも本当に感謝しています。

Ps 私は Rails 3.2.13、rack 1.4.5、rack-proxy 0.5.1 を使用しています。

4

2 に答える 2

0

これが古いことは知っていますが、同様の問題が発生していましたが、現在のフォルダーがfaye_proxy.rbデフォルトでレールに含まれていないと思われます。

プロキシを配置する場所に 置換./config/initializers/proxy.rbを含む イニシャライザを追加する可能性があります。 require "#{Rails.root}/lib/faye_proxy.rb" lib

于 2017-05-04T19:01:37.710 に答える