Ruby on rails 在ruby中查看目录
我们有一个应用程序,需要处理放入目录中的传入文件。 我正在寻找最好的方法来做到这一点 我们一直在使用一个循环Backgroundrb过程,但是,老实说Backgroundrb是不可靠的,如果可能的话,我们想远离它 延迟的工作似乎不是针对正在进行的任务,而是一次性的 我发现DirectoryWatcher看起来很有希望,但理想情况下,我们希望对此有一些控制,并且能够监控它是否启动 因此,要求如下:Ruby on rails 在ruby中查看目录,ruby-on-rails,ruby,filesystemwatcher,Ruby On Rails,Ruby,Filesystemwatcher,我们有一个应用程序,需要处理放入目录中的传入文件。 我正在寻找最好的方法来做到这一点 我们一直在使用一个循环Backgroundrb过程,但是,老实说Backgroundrb是不可靠的,如果可能的话,我们想远离它 延迟的工作似乎不是针对正在进行的任务,而是一次性的 我发现DirectoryWatcher看起来很有希望,但理想情况下,我们希望对此有一些控制,并且能够监控它是否启动 因此,要求如下: 长跑 按顺序处理文件 可监控 有什么方法重新启动它并确保它启动(上帝?) 谢谢你的意见!这应该不
- 长跑
- 按顺序处理文件
- 可监控
- 有什么方法重新启动它并确保它启动(上帝?)
这通常用于自动运行单元测试,但也应该适合您的需要 我知道的三个老学校选项: Ara T.Howard's DirWatch:
- 文件:
- 下载:
- 文件:
- 下载:
- 文件:
- 下载:
- 将此添加到gem文件:
gem 'listen', '~> 2.0'
- 然后在Application.rb中添加以下内容以在应用程序启动时执行:
listener = Listen.to('public/json_import') do |added| puts "added absolute path: #{added}" end listener.start # not blocking
我们还可以侦听多个目录,还可以修改/添加/删除:
- 还有:
Guard通过在修改文件或目录时运行自定义规则来自动化各种任务
软件开发人员、web设计人员、作家和其他专家经常使用它来避免平凡、重复的操作和命令,例如在更改源文件或配置后“重新启动”工具
常见用例包括:IDE替换、web开发工具、设计“智能”和“响应”构建系统/工作流、自动化各种项目任务以及安装/监控各种系统服务
谢谢,作为rails的新手,我想在rails应用程序中查看文件,而不是从命令行。与这里的其他选项相比,发现这是一个非常简单的2步:
listener = Listen.to('dir/to/listen', 'dir/to/listen2') do |modified, added, removed|
我想应该对你有用。
使用此gem的示例
require 'rb-inotify'
notifier = INotify::Notifier.new
notifier.watch("/tmp", :moved_to, :create) do |event|
puts "#{event.absolute_name} is now in path /tmp!"
end
notifier.run
还有一个小小的文件观察者rubygem。gem没有依赖项,不包含特定于平台的代码,只通过轮询检测更新、删除和添加
require 'filewatcher'
FileWatcher.new(["directory"]).watch() do |filename, event|
if(event == :changed)
puts "File updated: " + filename
end
if(event == :delete)
puts "File deleted: " + filename
end
if(event == :new)
puts "Added file: " + filename
end
end
谢谢海基,看起来不错!这是一个新的替代FSSM项目如果您只需要文件系统通知,那么Guard的子项目listen可能会提供更细粒度的控制:这个gem是完美的,经过这么长时间后仍然可以维护
filewatcher
很好,但如果您通过SFTP一次性将一组文件上载到一个目录中,则无法正常工作(一些新文件未被检测到)。这就是我为此使用rb inotify
的原因。