2016-02-03 15 views
21

Mogę użyć następującego kodu w kontrolerze, ale nie w konsoli (oba środowiska programistyczne). Używam Rails 5.0.0.beta2.ActionCable.server.broadcast z konsoli

ActionCable.server.broadcast 'example_channel', message: '<p>Test</p>' 

Konsola:

>> ActionCable.server.broadcast 'example_channel', message: '<p>Test</p>' 
[ActionCable] Broadcasting to example_channel: {:message=>"<p>Test</p>"} 
=> [] 

Jak mogę użyć go w konsoli?

Odpowiedz

42

Domyślnym zachowaniem ActionCable w trybie programowania jest użycie adaptera async, który działa tylko w tym samym procesie. W przypadku transmisji między procesami musisz przełączyć na adapter redis.

Aby włączyć Redis w trybie rozwoju, trzeba będzie edytować config/cable.yml:

redis: &redis 
    adapter: redis 
    url: redis://localhost:6379/1 

production: *redis 
development: *redis 
test: *redis 
+0

im konieczności 'Redis :: CannotConnectError: Błąd połączenia z Redis na localhost: 6379 (errno :: ECONNREFUSED)' na moim Macu . :( –

+1

@YakobUbaidi czy masz najnowszą wersję Redis zainstalowaną i działającą w tym samym czasie co twój serwer szyn? – sam

+2

Wypróbuj 'brew install redis', następnie:' redis-server/usr/local/etc/redis.conf' – sekrett