ruby-on-rails - 从 Rails 应用程序中监视数据库表的外部更改

标签 ruby-on-rails activerecord cron delayed-job observers

我在我的 Rails 应用程序中集成了一些非 Rails 模型表。一切都很顺利,我设置模型的方式是:

class Change < ActiveRecord::Base
  establish_connection(ActiveRecord::Base.configurations["otherdb_#{RAILS_ENV}"])
  set_table_name  "change"
end

这样我就可以使用 Change所有现有记录的模型 find等等。

现在,当记录添加到表中时,我想运行某种通知。由于模型从未通过 Change.new 创建和 Change.save使用 ActiveRecord::Observer不是一个选项。

有什么方法可以让我在添加新记录时执行一些 Rails 代码?我看了delayed_job但我不太明白,如何设置。我想象它围绕着一个 cron 作业发展,它选择自作业上次运行以来创建的所有行,然后为每一行调用相应的 Rails 代码。

更新 目前正在看 Javan 的 Whenever ,看起来它可以解决'从cron部分运行rails代码'。

最佳答案

是的,您要么需要某种后台任务处理器(Delayed::Job 是一种流行的处理器,或者您可以使用 Daemon 库或类似库伪造自己的)或设置按某种时间表运行的 cronjob .如果您想经常检查(例如每分钟),我建议使用 Delayed::Job 路线,如果时间更长(每小时左右),cron 作业就可以了。

走 DJ 路线,您需要创建一个作业来检查新记录,处理它们(如果有),然后重新排队作业,因为每个作业在完成时都标记为“已完成”。

- 乔恩

关于ruby-on-rails - 从 Rails 应用程序中监视数据库表的外部更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2560233/

相关文章:

ruby-on-rails-4 - Rails 1 到 4 升级 :include keyword

php - Drupal 7 异常 'EntityMalformedException' 试图运行搜索索引 cron

unix - 使用日期将文件名附加到 cron 制作的数据库备份

ruby-on-rails - 构建插件或 gem ?

ruby-on-rails - 是使用sql dump创建测试数据库时加载的 fixture

ruby-on-rails - Faye-rails、nginx、faye 的乘客响应缓慢

javascript - 将数据从 Rails Controller 传递到 React 组件

mysql - 我的十进制数在创建时会缩短,但在编辑时不会

ruby-on-rails - 按模型与特定属性的关联计数排序

node.js - 更新 SQLite 数据库而不重新启动应用程序