我们在Rails 5应用程序中使用Cable,以使Web应用程序能够使用Web套接字显示实时更新。该应用程序提供了一个"仪表板"在多个数据库中进行这些更新。
我们在一个数据库中运行良好,使用标准的cable.yml数据库配置来定义postgres:
(cable.yml) 发展: 适配器:postgresql
test:
adapter: postgresql
production:
adapter: postgresql
当然还有凭证的database.yml:
(database.yml中) 默认值:&默认值 适配器:postgresql 编码:unicode pool:<%= ENV.fetch(" RAILS_MAX_THREADS"){5}%>
development:
<<: *default
database: xxxxxxxxxx
username: xxxxxx
password: xxxxxxx
host: xxxxx.example.com
port: xxxx
有线目录有一个标准的config.ru条目: (config.ru)
require_relative '../config/environment'
Rails.application.eager_load!
run ActionCable.server
(CONFIG / environment.rb中):
# Load the Rails application.
require_relative 'application'
# Initialize the Rails application.
Rails.application.initialize!
频道在app / channels中定义: (example_channel.rb):
class ExampleChannel < ApplicationCable::Channel
def subscribed
stream_from "example_channel"
end
def unsubscribed
end
end
在数据库中,如果我们发出通知:
psql xxxxx
notify example_channel, '[{.... JSON PAYLOAD ....}]'
然后,listen会正确触发,并且网页都会正确更新。
但是,这适用于数据库xxxxxx。我们还需要能够在database2上发出通知,所以:
在Rails中,将模型定义为在不同的数据库上很容易。但是,我无法看到任何可以使用Cable执行相同操作的地方。有没有人有办法在Rails中的同一个应用程序中运行多个通道,每个通道都在不同的数据库中运行?
即。任何人都知道如何使Cable成为多个数据库朋友,因为模型是?