ffilewatch 0.6.1 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 07a481af51457dff387bdf3cb7d33fe0dbe056bd
4
- data.tar.gz: 60d50fa77dba07d4faf31526e2aa56be0a4ff663
3
+ metadata.gz: 829dcc5451842718057f3e2916b96d65616220ff
4
+ data.tar.gz: ddee5a1d1e691e0b308b210ff6e04f4dbeafb35d
5
5
  SHA512:
6
- metadata.gz: 31810de1925838adb880afe3de1cd5ff465e87430f738f29d0ef9ea06b91d914e95b56a541ea97472a2b87f34bd92495b4670fc7baa4cc2d82208714b0b4c225
7
- data.tar.gz: 59fcaef74a58f8e03d3b4035c093e5fc314ba3043be58aa7918422c965e6bcc21ae9e13456332809589181be44699649aab28c77b71d2979ff4bd6150ae9bbad
6
+ metadata.gz: 361b21094d3e94ca3f052ef0605141cd0e66e422d2c56e2d320db9d298f736136f74a3a88bcdecf1fa9f32aba61f5ffb4ac8d82c3ddacb34d1a71036993592ab
7
+ data.tar.gz: fb95934e8663c2f8eb4cd12d9a67c877a461d1fecee4eae0a0437d4c218327a9916294415c4cce8cc0fb64769a5854a93f1354375165d6cb06c8c59e92e77a99
@@ -76,7 +76,7 @@ module FileWatch
76
76
  @opts[:discover_interval]) do |event, path|
77
77
  case event
78
78
  when :create, :create_initial
79
- if @files[path].nil?
79
+ if !@files[path].nil?
80
80
  @logger.debug("#{event} for #{path}: already exists in @files")
81
81
  next
82
82
  end
@@ -94,12 +94,16 @@ module FileWatch
94
94
  end
95
95
  when :delete
96
96
  @logger.debug(":delete for #{path}, deleted from @files")
97
- _read_file(path, &block)
98
- @files[path].close
99
- @files.delete(path)
97
+ # if File::exist?(path) # Rotated
98
+ # if @files[path].nil?
99
+ # _open_file(path, event)
100
+ # end
101
+ # _read_file(path, &block)
102
+ # end
103
+ @files.delete(path).close rescue nil
100
104
  @statcache.delete(path)
101
105
  when :noupdate
102
- @logger.debug(":noupdate for #{path}, from @files")
106
+ # @logger.debug(":noupdate for #{path}, from @files")
103
107
  _sincedb_write_if_pending # will check to see if sincedb_write requests are pending
104
108
  else
105
109
  @logger.warn("unknown event type #{event} for #{path}")
@@ -189,6 +193,9 @@ module FileWatch
189
193
  end
190
194
 
191
195
  @sincedb[@statcache[path]] = @files[path].pos
196
+ rescue NoMethodError
197
+ @logger.warn("_read_file: file deleted while reading %s" % path)
198
+ break
192
199
  rescue Errno::EWOULDBLOCK, Errno::EINTR, EOFError
193
200
  break
194
201
  end
@@ -315,7 +322,7 @@ module FileWatch
315
322
  next if @locked[path]
316
323
  next if @files[path].nil?
317
324
  @logger.debug(":evict for #{path}, deleted from @files")
318
- @files.delete(path).close
325
+ @files.delete(path).close rescue nil
319
326
  @statcache.delete(path)
320
327
  @changed.delete(path)
321
328
  @locked.delete(path)
@@ -1,4 +1,5 @@
1
1
  require "logger"
2
+ require "pathname"
2
3
  if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
3
4
  require "filewatch/winhelper"
4
5
  end
@@ -53,9 +54,9 @@ module FileWatch
53
54
  @files.keys.each do |path|
54
55
  if ! @files[path][:create_sent]
55
56
  if @files[path][:initial]
56
- yield(:create_initial, path)
57
+ yield(:create_initial, real(path))
57
58
  else
58
- yield(:create, path)
59
+ yield(:create, real(path))
59
60
  end
60
61
  @files[path][:create_sent] = true
61
62
  end
@@ -68,7 +69,7 @@ module FileWatch
68
69
  # file has gone away or we can't read it anymore.
69
70
  @files.delete(path)
70
71
  @logger.debug("#{path}: stat failed (#{$!}), deleting from @files")
71
- yield(:delete, path)
72
+ yield(:delete, real(path))
72
73
  next
73
74
  end
74
75
 
@@ -81,23 +82,23 @@ module FileWatch
81
82
 
82
83
  if inode != @files[path][:inode]
83
84
  @logger.debug("#{path}: old inode was #{@files[path][:inode].inspect}, new is #{inode.inspect}")
84
- yield(:delete, path)
85
- yield(:create, path)
85
+ yield(:delete, real(path))
86
+ yield(:create, real(path))
86
87
  elsif stat.size < @files[path][:size]
87
88
  @logger.debug("#{path}: file rolled, new size is #{stat.size}, old size #{@files[path][:size]}")
88
- yield(:delete, path)
89
- yield(:create, path)
89
+ yield(:delete, real(path))
90
+ yield(:create, real(path))
90
91
  elsif stat.size > @files[path][:size]
91
92
  @logger.debug("#{path}: file grew, old size #{@files[path][:size]}, new size #{stat.size}")
92
- yield(:modify, path)
93
+ yield(:modify, real(path))
93
94
  else
94
95
  # since there is no update, we should pass control back in case the caller needs to do any work
95
96
  # otherwise, they can ONLY do other work when a file is created or modified
96
- @logger.debug("#{path}: nothing to update")
97
- yield(:noupdate, path)
97
+ # @logger.debug("#{path}: nothing to update")
98
+ yield(:noupdate, real(path))
98
99
  end
99
100
 
100
- @files[path][:size] = stat.size
101
+ @files[path][:size] = stat.size
101
102
  @files[path][:inode] = inode
102
103
  end # @files.keys.each
103
104
  end # def each
@@ -126,6 +127,11 @@ module FileWatch
126
127
  end
127
128
  end # def subscribe
128
129
 
130
+ private
131
+ def real path
132
+ Pathname.new(path).realpath.to_s rescue path
133
+ end
134
+
129
135
  private
130
136
  def _discover_file(path, initial=false)
131
137
  globbed_dirs = Dir.glob(path)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffilewatch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordan Sissel
@@ -34,7 +34,6 @@ executables: []
34
34
  extensions: []
35
35
  extra_rdoc_files: []
36
36
  files:
37
- - bin/globtail
38
37
  - lib/JRubyFileExtension.jar
39
38
  - lib/filewatch/tail.rb
40
39
  - lib/filewatch/watch.rb
data/bin/globtail DELETED
@@ -1,55 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "filewatch/tail"
4
- require "optparse"
5
-
6
- progname = File.basename($0)
7
-
8
- config = {
9
- :verbose => false,
10
- }
11
-
12
- opts = OptionParser.new do |opts|
13
- opts.banner = "#{progname} [-v] [-s path] [-i interval] [-x glob] path/glob ..."
14
-
15
- opts.on("-v", "--verbose", "Enable verbose/debug output") do
16
- config[:verbose] = true
17
- end
18
-
19
- opts.on("-x", "--exclude PATH", String, "path to exclude from watching") do |path|
20
- config[:exclude] ||= []
21
- config[:exclude] << path
22
- end
23
-
24
- opts.on("-s", "--sincedb PATH", String, "Sincedb path") do |path|
25
- config[:sincedb_path] = path
26
- end
27
-
28
- opts.on("-i", "--interval SECONDS", Integer,
29
- "Sincedb write interval") do |path|
30
- config[:sincedb_write_interval] = path
31
- end
32
- end
33
-
34
- begin
35
- opts.order!
36
- rescue OptionParser::InvalidOption
37
- $stderr.puts "#{progname}: #{$!}"
38
- $stderr.puts opts.usage
39
- end
40
-
41
- logger = Logger.new(STDERR)
42
- logger.progname = progname
43
- logger.level = config[:verbose] ? Logger::DEBUG : Logger::INFO
44
- config[:logger] = logger
45
-
46
- tail = FileWatch::Tail.new(config)
47
-
48
- ARGV.each { |path| tail.tail(path) }
49
-
50
- Signal.trap("EXIT") { tail.sincedb_write("globtail exiting") }
51
-
52
- $stdout.sync = true
53
- tail.subscribe do |path, line|
54
- puts "#{path}: #{line}"
55
- end