我希望能够在修改public /中的文件时更新我的数据库。 rails app使用旧系统推送的文件,我们需要更新内部数据库。
这是可能的,我该怎么办?我检查了警卫,但它是否可用于生产?还有更好的选择吗?也许我可以使用dnotify,但我想保留我的项目中的所有内容,而且都是红宝石,没有外部程序。
谢谢:P
答案 0 :(得分:1)
Guard使用名为listen
的gem来实现通用通知和与各种OS模块的接口。
听取支持:
rb-inotify
rb-fsevent
wdm
(mingw,not cygwin)rb-kqueue
模块基本上都是薄的胶合代码,允许访问底层的OS通知系统调用。如果需要,您可以直接编写一个特定于操作系统的模块,但是当有人给您一个通用接口时,为什么会这样?
听起来很简单:
listener = Listen.to('dir/path/to/listen') do |modified, added, removed|
puts "mod: #{modified}" if modified
puts "add: #{added}" if added
puts "rem: #{removed}" if removed
end
listener.start
如果您对FFI / C模块有疑虑或问题,可以在更高的时间间隔内使用轮询
options = {
force_polling: true,
latency: 30
}
然后将代码与daemons-rails
的rails应用程序一起集成