我的程序每3秒读一次配置文件。在一个循环中。一旦我用记事本等外部编辑器更改了配置文件,我的程序就会出于某种原因创建一个临时文件并继续从那里读取。
我希望我的程序从当前配置文件中读取,以便在程序中进行最新的更改。
我该怎么办?
简化代码:
while(true)
file = File.open(filename, "r")
data = JSON.parse(file.read) if file
file.close
sleep(3)
end
答案 0 :(得分:0)
如果您使用的是Linux,则可以尝试使用linux inotfy service,这是gem。这是example of how to use it。
首先,你必须运行
gem install ruby-inotify
然后尝试此代码
notifier = Inotify.new
notifier.add_watch(filename, Inotify::CREATE | Inotify::MODIFY)
notifier.each_event do |ev|
file = File.open(filename, "r")
data = JSON.parse(file.read)
file.close
end
答案 1 :(得分:-1)
如果您愿意使用gem,请使用以下内容。
https://github.com/thomasfl/filewatcher
用法
FileWatcher.new(["lib/", "Rakefile"]).watch do |filename|
puts "Changed " + filename
end