2016-01-21 21 views
11

Sto usando Rails 5 con actioncable e sto ricevendo this error quando provo a inviare qualcosa che genera actioncable Cosa devo fare? Sto cercando di spingere il progetto a Heroku.Rails 5 actioncable metodo undefined `fetch 'per nil: NilClass

NoMethodError in MessagesController#create 

undefined method `fetch' for nil:NilClass 
Extracted source (around line #37): 

#35  # Also makes sure proper dependencies are required. 
#36  def pubsub_adapter 
*37   adapter = (cable.fetch('adapter') { 'redis' }) 
#38   path_to_adapter = "action_cable/subscription_adapter/#{adapter}" 
#39   begin 
#40   require path_to_adapter 

Extracted source (around line #50): 

#48  # Adapter used for all streams/broadcasting. 
#49  def pubsub 
*50   @pubsub ||= config.pubsub_adapter.new(self) 
#51  end 
#52 
#53  # All the identifiers applied to the connection class associated with this server. 

Extracted source (around line #42): 

#40   def broadcast(message) 
#41    server.logger.info "[ActionCable] Broadcasting to #{broadcasting}: #{message}" 
*42    server.pubsub.broadcast broadcasting, ActiveSupport::JSON.encode(message) 
#43   end 
#44   end 
#45  end 


Rails.root: /media/adham/Data/code/rails5test 

Application Trace 
app/controllers/messages_controller.rb:6:in `create' 
app/middleware/chat_action_cable.rb:10:in `call' 
+0

Sembra che 'cable' sia' nil' quando viene chiamato 'cable.fetch'. È questo il caso? –

risposta

15

C'era un commit effettuato qui: enter link description here

Leggendo e modificando il file di configurazione per ActionCable da ...

config/redis/cable.yml

a

config/cable.yml

... risolto il problema. Questo aggiornamento consente al backend ActionCable di essere agnostico.

+0

grazie questo è lavoro: D –

+1

Qualcuno può spiegare perché questo accade? Mi è capitato anche con Rails 5.0.0.beta2 – ftshtw

+0

Hanno cambiato il file di configurazione per renderlo più ambiguo a un backend ActionCable, invece di default su Redis. –