Я использую жемчужину faye-rails для асинхронного обмена сообщениями между javascript в моем интерфейсе и моем сервере rails. Я могу отправлять сообщения с помощью curl и иметь javascript для печати, поэтому я знаю, что сервер faye запущен. Я могу также прослушивать сообщения на сервере, как это:Опубликовать ошибки с помощью фона Faye-Rails
# In application.rb
config.middleware.use FayeRails::Middleware, mount: '/bayeux', :timeout => 25 do
map '/async/**' => FayeController
map :default => :block
end
# In faye_controller.rb
class FayeController < FayeRails::Controller
channel '/async/test' do
subscribe do
puts "Received on channel #{channel}: #{message.inspect}"
end
end
end
Затем я получаю сообщение, отправленное через curl -X POST localhost:3000/bayeux -H 'Content-Type: application/json' -d '{"channel": "/async/test", "data": "test123"}'
и получить ожидаемый результат. Однако я не могу отправлять сообщения с сервера. Я ожидал, что Somthing, как это работает, в подписываться блок (так он будет отправлен в ответ на любое сообщение):
FayeController.publish '/async/test', :response => 'something'
но разбивает весь сервер с ошибкой:
in '+': no implicit conversion of nil into Array (TypeError)
а затем трассировку стека. Является ли это своей ошибкой - не могу ли я правильно установить что-либо или неправильно прочитать документацию? Или это ошибка в драгоценном камне, и в этом случае у кого-нибудь есть обход?
На самом деле мне пришлось использовать одно обходное решение из-за ошибки в базовой библиотеке faye, см. here.
Как я могу изменить это для работы на производстве? Мне не представляется возможным жестко задавать URL-адрес сервера в строке. – zrneely
Кроме того, пытаясь использовать этот тупик на сервере - мне пришлось «убить -9» его – zrneely
Для жесткого кодирования url вы можете использовать файлы конфигурации конфигурации «config/environment/development.rb», «config/environment/development.rb», 'config/environment/production. rb', чтобы добавить конфигурацию для faye-сервера 'config.faye_server = 'YOUR_SERVER_URL'', тогда обратитесь к этому с помощью' Rails.configuration.faye_server' – bigsolom