2015-04-05 2 views
1

У меня есть медведь времени, настраивающий живую перезагрузку. Возможно, кто-то еще увидит, что мне не хватает. Сначала ошибка (от Chrome):LiveReload on Rails 4.1.8 Не работает в Chrome или Safari

WebSocket connection to 'ws://localhost:35729/livereload' failed: Connection closed before receiving a handshake response 
WebSocket connection to 'ws://localhost:35729/livereload' failed: Error in connection establishment: net::ERR_TUNNEL_CONNECTION_FAILED 

Что я установил:

  • Rails 4.1.8
  • стойку LiveReload (0.3.15)
  • гь-fsevent (0.9.4 , 0.9.3)
  • охранник-LiveReload (2.4.0)

изменения, которые я сделал, чтобы мое приложение й на должны включить эту работу являются:

# Gemfile 
gem "guard", ">= 2.2.2",  :require => false 
gem "guard-livereload",  :require => false 
gem "rack-livereload" 
gem "rb-fsevent",    :require => false 

# development.rb 
config.middleware.insert_after(ActionDispatch::Static, Rack::LiveReload) 

Я попытался это с middleware.use, а также и все еще получаю ту же ошибку. Я проверил, есть ли другие наблюдатели на порту 35729, и ничего очевидного не появляется.

Любые указатели на то, как получить эту работу, оценены! Благодарю.

ответ

2

Ваша конфигурация выглядит правильно. Вот некоторые шаги по устранению неполадок, чтобы принять:

Возможность 1: несовместимые версии LiveReload

Возможно, версия guard-livereload (сервер) и rack-livereload (клиента) несовместимы. Обновление и до последней версии, чтобы быть в безопасности:

bundle update guard-livereload rack-livereload 

Возможность 2: порт 35729 занят

Возможно, какой-то другой процесс прослушивает порт 35729, в результате ошибки соединения вы видите в Chrome , Для того, чтобы проверить, если это так, то остановить процесс охраны, а затем запустить:

netstat -an | grep 35729 

Если вы видите что-то подобное, это означает, что другой процесс/приложение слушает этот порт:

tcp4  0  0 *.35729    *.*     LISTEN  

Вы можете попробовать изменить LiveReload для использования неконфликтного порта. В Guardfile, добавьте опцию :port, как это:

guard :livereload, :port => "56789" do 
    ... 
end 

Вам также необходимо сделать аналогичные изменения в development.rb:

config.middleware.use(Rack::LiveReload, :live_reload_port => 56789) 

Возможность 3: сбойного прокси

Ошибка ERR_TUNNEL_CONNECTION_FAILED: apparently сообщение Chrome предоставляет, когда прокси-сервер HTTP не передает запрос веб-сокета. Если у вас настроен прокси-сервер HTTP, это может быть проблемой.

Чтобы убедиться, что прокси-сервер не мешает подключению к локальному серверу LiveReload, перейдите в раздел «Системные настройки» → «Сеть» и выберите активный сетевой адаптер (например, WiFi, Ethernet). Затем нажмите «Дополнительно» и перейдите на вкладку «Прокси». Удостоверьтесь, что эти данные перечислены:

+0

Я обновил пакет, проверил с помощью 'netstat' и других слушателей, и изменил порт. Все еще не работает. Я отключил GlimmerBlocker и даже тогда все еще не работал. Любые другие мысли? –

+0

Извините, я в тупике! Похоже на проблему с прокси-сервером, основанную на этом результате поиска: https://code.google.com/p/chromium/issues/detail?id=454311. –

+0

Вы на месте. Я запускаю GlimmerBlocker, который проксирует HTTP до порта 8228. Он избавляется от всех раздражающих флеш-объявлений и т. Д. Что я сделал, чтобы исправить, нужно было перейти в «Настройки сети»> «Ethernet» и добавить исключение «localhost» и «127.0.0.1» для прокси. Не могли бы вы ответить на это, чтобы я мог дать вам кредит? –

 Смежные вопросы

  • Нет связанных вопросов^_^