在连接到数据库的所有应用程序上调用挂钩
Calling hooks on all applications connected to a database
我有两个连接到同一个数据库的应用程序。
我写了一个数据库挂钩:
def call_side_effect(record)
puts record
# my application actually does something more complicated here
end
class Verb
include DataMapper::Resource
property :id, Serial
property :name, String
before(:save) { |record| call_side_effect(record) }
end
这将在记录创建后打印出记录属性。
如果我在两个应用程序中定义了这个完全相同的挂钩(并且它们都连接到同一个数据库),我可以在 both 应用程序上将它获取到 运行当 其中一个 插入一条记录时?
我正在考虑使用 Pusher,但我想知道是否有办法单独使用 Datamapper 或 ActiveRecord。
我在这里使用 DataMapper 和 SQLite3,但如果需要可以切换到不同的 ORM/db。
Active Record 的生命周期事件是在应用程序级别实现的,因此将本地化到应用程序。我建议 Datamapper 以类似的方式工作。如果您希望提醒两个不同的应用程序,您将需要某种外部消息传递系统。如果您需要消息总线,我建议您查看 RabbitMQ。如果你想保留数据库中的内容,postgresql 有一个名为 NOTIFY(https://www.postgresql.org/docs/9.0/static/sql-notify.html) 的功能,虽然我不确定它如何与活动记录一起使用,但它可能会有一些用处。
我有两个连接到同一个数据库的应用程序。
我写了一个数据库挂钩:
def call_side_effect(record)
puts record
# my application actually does something more complicated here
end
class Verb
include DataMapper::Resource
property :id, Serial
property :name, String
before(:save) { |record| call_side_effect(record) }
end
这将在记录创建后打印出记录属性。
如果我在两个应用程序中定义了这个完全相同的挂钩(并且它们都连接到同一个数据库),我可以在 both 应用程序上将它获取到 运行当 其中一个 插入一条记录时?
我正在考虑使用 Pusher,但我想知道是否有办法单独使用 Datamapper 或 ActiveRecord。
我在这里使用 DataMapper 和 SQLite3,但如果需要可以切换到不同的 ORM/db。
Active Record 的生命周期事件是在应用程序级别实现的,因此将本地化到应用程序。我建议 Datamapper 以类似的方式工作。如果您希望提醒两个不同的应用程序,您将需要某种外部消息传递系统。如果您需要消息总线,我建议您查看 RabbitMQ。如果你想保留数据库中的内容,postgresql 有一个名为 NOTIFY(https://www.postgresql.org/docs/9.0/static/sql-notify.html) 的功能,虽然我不确定它如何与活动记录一起使用,但它可能会有一些用处。