在heroku

时间:2017-02-02 20:25:45

标签: ruby-on-rails ruby heroku ruby-on-rails-5 sidekiq

你好首先要感谢你花时间阅读我的帖子。

在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上运行。 我错过了什么?

提前谢谢。

0 个答案:

没有答案