2013-09-18 1 views
1

У меня есть приложение rails, которое обеспечивает функциональность в реальном времени через Faye. Мои клиенты собираются получить доступ к серверу Faye через example.com:9292/faye. Вместо того, чтобы использовать этот адрес и открывать открытые порты моей машины, я пытаюсь добавить промежуточное ПО стойки и используя «стойку-прокси», прокси-сервер example.com/faye просит example.com:9292/faye , Мой Rails код промежуточного слоя выглядит следующим образом:Использование стойки-прокси с Rails для доступа к Faye

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 

Также я добавил к промежуточному к конфигурации/application.rb по config.middleware.use "FayeProxy", но когда я запускаю мой сервер Рельсы я получаю следующее сообщение об ошибке:

/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 камень я буду получать

*/камни/рубин-1.9.3-Р194/драгоценные камни/стойку прокси-0.5.1/Библиотека/стойки/proxy.rb: 12: in initialize': undefined method ключ? для # (NoMethodError) *

Любая помощь действительно оценена, если кто-либо испытал это раньше или знает решение.

P.s. Я использую Rails 3.2.13, стойку 1.4.5, стойку-прокси 0.5.1.

ответ

0

Я знаю, что это старый, но у меня была аналогичная проблема, но я подозреваю, что папка, в которой вы находитесь faye_proxy.rb, по умолчанию не включена в рельсы.

Добавление инициализатора может быть ./config/initializers/proxy.rb, который содержит require "#{Rails.root}/lib/faye_proxy.rb" Заменить lib с везде, где вы положили прокси.