我在尝试使用Milia设置ActionCable时遇到了问题。我正在关注Chris Oliver的ActionCable Group Chat片段并使用Milia在我的应用程序中进行设置。在互联网上进行了大量搜索后,我的问题似乎与您在使用Apartment gem进行多租户时设置ActionCable时出现的问题类似。但是,我在公寓找到的相关修复似乎并不适用于Milia。
我目前收到以下错误。
无法执行命令({“command”=>“subscribe”,“identifier”=>“{\”channel \“:\”ChatroomsChannel \“}”})[NoMethodError - undefined method {{ 1}}订阅'| /usr/local/rvm/gems/ruby-2.4.0/gems/actioncable-5.1.4/lib/action_cable/channel/base.rb:177:in
chatrooms' for nil:NilClass]: /home/ubuntu/workspace/rehabrx2/app/channels/chatrooms_channel.rb:4:in
阻止在run_callbacks'中| /usr/local/rvm/gems/ruby-2.4.0/gems/activesupport-5.1.4/lib/active_support/execution_wrapper.rb:81:inblock in subscribe_to_channel' | /usr/local/rvm/gems/ruby-2.4.0/gems/activesupport-5.1.4/lib/active_support/callbacks.rb:108:in
块(3级)in'
根据为Apartment gem提供的解决方案,问题似乎来自connection.rb和chatrooms_channel.rb。
wrap' | /usr/local/rvm/gems/ruby-2.4.0/gems/actioncable-5.1.4/lib/action_cable/engine.rb:66:in
我无法弄清楚如何在ActionCable中设置租户。我希望有人已经与Milia一起设置了ActionCable。谁能给我一些建议?
答案 0 :(得分:0)
为什么不设置您的租户(无论是在子项目中还是在您需要获取数据时)
Tenant.set_current_tenant(tenant)
这使用当前线程但是我不确定它是否在actioncable环境中是100%安全的
答案 1 :(得分:0)
你应该使用
indentifiers :current_user, :tenant
def connect
self.tenant = cookies[:tenant]
Apartment::Tenant.switch!(tenant)
self.current_user = find_verified_user
end
其实我使用的是公寓宝石
在你的第一行所有方法中你的频道内应该是
Apartment::Tenant.switch!(tenant) // variable tenant is the identifier defined in connection.rb