文件出现在文件夹中时运行ruby脚本

时间:2013-09-23 20:49:02

标签: ruby automation dropbox

我正在努力自动运行我的.rb脚本。目前,我必须转到终端并输入ruby myscript

我的计划,因为我不确切地知道每周/每月脚本运行的时间是在文件出现在保管箱文件夹中时运行脚本。

这将是这样的:

如果在与random_file.csv相同的文件夹中看到myscript

myscript加载random_file.csv,对其执行操作,然后将random_file.csv保存在单独的文件夹中,并将其从保管箱文件夹中删除。

这是可能的,如果没有,那么自动化脚本有哪些好的替代方案?我是否必须确定每周/每月运行一次的时间?任何关于寻找什么的指导都表示赞赏。

2 个答案:

答案 0 :(得分:1)

Linux和Inotify

如果您使用的是Linux,则可以使用内核的inotify系统在目录更改时创建回调。与rb-inotify gem配对后,您可以配置长时间运行的脚本,以便在检测到IN_CREATE事件时执行某些操作。

信号量或时间戳

更复杂的解决方案涉及检查文件时间戳或检查目录内容的差异。作为一个示例,您可以将GNU find与cron结合使用,以便在文件比某个分钟数更新时执行脚本。例如,

# Run job every 5 minutes; execute on files less than 7 minutes old.
*/5 * * * * find /path/to/dropbox -cmin -7 -exec /path/to/ruby/script {} +

这不是真正的幂等,并且有各种各样的方法可能会出现可怕的错误,但这是悬而未决的结果。除非你的系统上没有类似inotify的工具,或者不能守护你的进程,否则我会把这种事情作为最后的手段保存。尽管如此,有选择总是好的!

答案 1 :(得分:0)

自动化dropbox文件和文件夹的一种方法是使用automator。我发现此链接允许您在Dropbox文件夹上设置操作

http://www.hongkiat.com/blog/automate-dropbox-files-with-actions/