你好首先要感谢你花时间阅读我的帖子。
在heroku上使用actioncable / ApplicationJob的步骤是什么,因为它现在在本地工作但是当在heroku上使用时它不起作用我希望我可以得到一些帮助。
2017-02-02T20:14:30.+00:00 app[web.1]: [ActionCable] [test@gmail.com] Could not execute command from {"command"=>"message", "identifier"=>"`{\"channel\":\"RoomChannel\"}", "data"=>"\"message:
message\""}) [NoMethodError - undefined method 'except' for "message: message":String 2017-02-02T20:14:30.+00:00 app[web.1]: Did you mean? exec]:
/app/vendor/bundle/ruby/2.3.0/gems/actioncable-5.0.0.1/lib/action_cable/channel/base.rb:266:in 'block in action_signature'
/app/vendor/bundle/ruby/2.3.0/gems/actioncable-5.0.0.1/lib/action_cable/channel/base.rb:265:in 'tap' | /app/vendor/bundle/ruby/2.3.0/gems/actioncable-5.0.0.1/lib/action_cable/channel/base.rb:265:in 'action_signature' | /app/vendor/bundle/ruby/2.3.0/gems/actioncable-5.0.0.1/lib/action_cable/channel/base.rb:168:in 'perform_action' |
更新:我在sidekiq中添加了链接,并在我的Procfile中设置了worker worker:bundle exec sidekiq -c 3 -q default,使用scale命令启动它。在日志中重新启动heroku服务器它说sidekiq是活动的但我仍然得到这个错误我现在知道这个错误是因为 事实上,没有找到积极的工作。
更新2:我在一些console.logs中添加了监视localhost上的数据我得到所有连接,接收,数据,但是在heroku上我没有,我试图传入数据所以sidekiq会捕获它和那部分似乎抓住了它所以得出的结论是actioncable perform_action / bg / message部分 推送到heroku时它不起作用我希望有人知道答案,这将是非常棒的。如果您需要更多信息,请与我们联系。
我有一个message.rb模型,我有一个perform_later动作
after_create_commit { BroadcastMessageJob.perform_later self }
并在broadcast_message_job.rb
中class BroadcastMessageJob < ApplicationJob
queue_as :default
def perform(message)
ActionCable.server.broadcast 'room_channel', render_message(message)
end
private
def render_message(message)
ApplicationController.renderer.render message
end
end
它可以在本地使用此设置,但仍然无法在heroku上运行。 我错过了什么?
提前谢谢。