我正在使用带有 ActionCable、gem Apartment 和 Stimulus Reflex 的 Rails 6 开发一个多租户应用程序。
connection.rb
` 模块 ApplicationCable 类 Connection < ActionCable::Connection::Base identify_by :current_user
def connect
tenant = request.subdomain
Apartment::Tenant.switch!(tenant)
self.current_user = find_verified_user
logger.add_tags "ActionCable", "User #{current_user.id}", "Tenant #{tenant}"
end
protected
def find_verified_user
if current_user = env['warden'].user
current_user
else
reject_unauthorized_connection
end
end
结束结束`
我有这个,直到现在:
development.rb
config.hosts << ".lvh.me"
config.action_cable.url = 'ws://lvh.me:3000/cable'
config.action_cable.allowed_request_origins = ['http:\/\/*.lvh.me:3000*']
通过在 connection.rb 中实现这行代码:logger.add_tags "ActionCable", "User #{current_user.id}", "Tenant #{tenant}"
我可以在控制台中看到一开始一切正常,但是一旦我调用任何刺激反射动作,它就会显示:The ActionCable connection is not open! this.isActionCableConnectionOpen() must return true before calling this.stimulate()
. 因为我在 Windows 机器上,所以我正在 Vagrant 框中开发应用程序,也许问题就在那里,但我不确定。请帮忙,我不知道如何解决这个问题。谢谢。