Sto cercando di creare un gioiello che esponga un canale ActionCable, ma non riesco a farlo funzionare.Canale ActionCable non accessibile al di fuori del plugin per rotaie
Questo è il mio gioiello
# lib/my_channel.rb
class MyChannel < ActionCable::Channel::Base
def wait(data)
# logic ...
end
end
# lib/engine.rb
module MyApp
class Engine < ::Rails::Engine
isolate_namespace MyApp
end
end
Ho quindi aggiungere la gemma ai miei principali applicazioni Gemfile
, correre bundle install
, avviare la console e corro MyChannel
. Che non cede e errore, il che significa che il canale è stato incluso correttamente.
Ho quindi aggiungere questo al mio principale
// application.js
var socket = "ws://localhost:3000/cable";
var cable = ActionCable.createConsumer(socket);
cable.subscriptions.create({ "channel": "MyChannel" }, {
received: function(){
// ...
}
});
Ma io sto ottenendo questo errore
Subscription class not found ({"command"=>"subscribe", "identifier"=>"{\"channel\":\"MyChannel\"}"})
Che cosa mi manca?
Quale versione di Action Cabel è attiva? Rails Beta1? –
@JohnKacz sì, questo è giusto – Oleander
Sembra che tu non abbia un metodo sottoscritto definito nella tua classe MyChannel. Dai documenti ([link] (https://github.com/rails/rails/tree/master/actioncable#channel-example-1-user-appearances)): "Semplicemente chiamando' App.cable.subscriptions.create' imposterà l'abbonamento, che chiamerà 'AppearanceChannel # subscribed'" –