filewatch 0.6.0 → 0.6.1

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: afac9c2d3c0a37891437ba7bb6a0f4bb8a4b68b0
4
- data.tar.gz: d86fab5ae9f22ee5ba4c9552dec1feb8ea13b325
3
+ metadata.gz: bd471cc099285df704d3f28e4241871e1aa666e2
4
+ data.tar.gz: dfea4f9a717b2dc2b5d1ef1336091e7af10bf3b6
5
5
  SHA512:
6
- metadata.gz: 772e3c37641040f481778777e31bb19cf7a420fd04c27129a27363c5b32c97bce86077dc628a2e25f861432630d83275d36c106009b68c24cd8e3c6304e454bc
7
- data.tar.gz: 4bddb7bcdf81c9dbfe015ee53bb387b0ba15625f0a2870fbf91bb0ee08cd9904e92c10cf620785daec7f008d464f59b99f335fd2db56f2ba6254a2e438330df1
6
+ metadata.gz: adbda674e3639e946a0db108e56175a29ac10483cefe1e6ea429d4f1c8e8ca9f4434ea76f6f8db758a79d112b15152936ffddf5dea5446a939ed8be7ef7f0c09
7
+ data.tar.gz: 87608be8ee355a10e2e3962712c96254fdc971d0bab352c1a3155226d7bef63b3e9d1105c9abcff75db85a815d2f9f2789d9f19b6dfe89948c7a1015421f1145
Binary file
@@ -42,7 +42,8 @@ module FileWatch
42
42
  :stat_interval => 1,
43
43
  :discover_interval => 5,
44
44
  :exclude => [],
45
- :start_new_files_at => :end
45
+ :start_new_files_at => :end,
46
+ :delimiter => "\n"
46
47
  }.merge(opts)
47
48
  if !@opts.include?(:sincedb_path)
48
49
  @opts[:sincedb_path] = File.join(ENV["HOME"], ".sincedb") if ENV.include?("HOME")
@@ -75,7 +76,7 @@ module FileWatch
75
76
  case event
76
77
  when :create, :create_initial
77
78
  if @files.member?(path)
78
- @logger.debug("#{event} for #{path}: already exists in @files")
79
+ @logger.debug? && @logger.debug("#{event} for #{path}: already exists in @files")
79
80
  next
80
81
  end
81
82
  if _open_file(path, event)
@@ -83,7 +84,7 @@ module FileWatch
83
84
  end
84
85
  when :modify
85
86
  if !@files.member?(path)
86
- @logger.debug(":modify for #{path}, does not exist in @files")
87
+ @logger.debug? && @logger.debug(":modify for #{path}, does not exist in @files")
87
88
  if _open_file(path, event)
88
89
  _read_file(path, &block)
89
90
  end
@@ -91,9 +92,11 @@ module FileWatch
91
92
  _read_file(path, &block)
92
93
  end
93
94
  when :delete
94
- @logger.debug(":delete for #{path}, deleted from @files")
95
- _read_file(path, &block)
96
- @files[path].close
95
+ @logger.debug? && @logger.debug(":delete for #{path}, deleted from @files")
96
+ if @files[path]
97
+ _read_file(path, &block)
98
+ @files[path].close
99
+ end
97
100
  @files.delete(path)
98
101
  @statcache.delete(path)
99
102
  else
@@ -104,7 +107,7 @@ module FileWatch
104
107
 
105
108
  private
106
109
  def _open_file(path, event)
107
- @logger.debug("_open_file: #{path}: opening")
110
+ @logger.debug? && @logger.debug("_open_file: #{path}: opening")
108
111
  begin
109
112
  if @iswindows && defined? JRUBY_VERSION
110
113
  @files[path] = Java::RubyFileExt::getRubyFile(path)
@@ -120,7 +123,7 @@ module FileWatch
120
123
  @logger.warn("failed to open #{path}: #{$!}")
121
124
  @lastwarn[path] = now
122
125
  else
123
- @logger.debug("(warn supressed) failed to open #{path}: #{$!}")
126
+ @logger.debug? && @logger.debug("(warn supressed) failed to open #{path}: #{$!}")
124
127
  end
125
128
  @files.delete(path)
126
129
  return false
@@ -139,28 +142,28 @@ module FileWatch
139
142
 
140
143
  if @sincedb.member?(inode)
141
144
  last_size = @sincedb[inode]
142
- @logger.debug("#{path}: sincedb last value #{@sincedb[inode]}, cur size #{stat.size}")
145
+ @logger.debug? && @logger.debug("#{path}: sincedb last value #{@sincedb[inode]}, cur size #{stat.size}")
143
146
  if last_size <= stat.size
144
- @logger.debug("#{path}: sincedb: seeking to #{last_size}")
147
+ @logger.debug? && @logger.debug("#{path}: sincedb: seeking to #{last_size}")
145
148
  @files[path].sysseek(last_size, IO::SEEK_SET)
146
149
  else
147
- @logger.debug("#{path}: last value size is greater than current value, starting over")
150
+ @logger.debug? && @logger.debug("#{path}: last value size is greater than current value, starting over")
148
151
  @sincedb[inode] = 0
149
152
  end
150
153
  elsif event == :create_initial && @files[path]
151
154
  # TODO(sissel): Allow starting at beginning of the file.
152
155
  if @opts[:start_new_files_at] == :beginning
153
- @logger.debug("#{path}: initial create, no sincedb, seeking to beginning of file")
156
+ @logger.debug? && @logger.debug("#{path}: initial create, no sincedb, seeking to beginning of file")
154
157
  @files[path].sysseek(0, IO::SEEK_SET)
155
158
  @sincedb[inode] = 0
156
159
  else
157
160
  # seek to end
158
- @logger.debug("#{path}: initial create, no sincedb, seeking to end #{stat.size}")
161
+ @logger.debug? && @logger.debug("#{path}: initial create, no sincedb, seeking to end #{stat.size}")
159
162
  @files[path].sysseek(stat.size, IO::SEEK_SET)
160
163
  @sincedb[inode] = stat.size
161
164
  end
162
165
  else
163
- @logger.debug("#{path}: staying at position 0, no sincedb")
166
+ @logger.debug? && @logger.debug("#{path}: staying at position 0, no sincedb")
164
167
  end
165
168
 
166
169
  return true
@@ -168,7 +171,7 @@ module FileWatch
168
171
 
169
172
  private
170
173
  def _read_file(path, &block)
171
- @buffers[path] ||= FileWatch::BufferedTokenizer.new
174
+ @buffers[path] ||= FileWatch::BufferedTokenizer.new(@opts[:delimiter])
172
175
 
173
176
  changed = false
174
177
  loop do
@@ -189,7 +192,7 @@ module FileWatch
189
192
  now = Time.now.to_i
190
193
  delta = now - @sincedb_last_write
191
194
  if delta >= @opts[:sincedb_write_interval]
192
- @logger.debug("writing sincedb (delta since last write = #{delta})")
195
+ @logger.debug? && @logger.debug("writing sincedb (delta since last write = #{delta})")
193
196
  _sincedb_write
194
197
  @sincedb_last_write = now
195
198
  end
@@ -198,7 +201,7 @@ module FileWatch
198
201
 
199
202
  public
200
203
  def sincedb_write(reason=nil)
201
- @logger.debug("caller requested sincedb write (#{reason})")
204
+ @logger.debug? && @logger.debug("caller requested sincedb write (#{reason})")
202
205
  _sincedb_write
203
206
  end
204
207
 
@@ -208,17 +211,19 @@ module FileWatch
208
211
  begin
209
212
  db = File.open(path)
210
213
  rescue
211
- @logger.debug("_sincedb_open: #{path}: #{$!}")
214
+ #No existing sincedb to load
215
+ @logger.debug? && @logger.debug("_sincedb_open: #{path}: #{$!}")
212
216
  return
213
217
  end
214
218
 
215
- @logger.debug("_sincedb_open: reading from #{path}")
219
+ @logger.debug? && @logger.debug("_sincedb_open: reading from #{path}")
216
220
  db.each do |line|
217
221
  ino, dev_major, dev_minor, pos = line.split(" ", 4)
218
222
  inode = [ino, dev_major.to_i, dev_minor.to_i]
219
- @logger.debug("_sincedb_open: setting #{inode.inspect} to #{pos.to_i}")
223
+ @logger.debug? && @logger.debug("_sincedb_open: setting #{inode.inspect} to #{pos.to_i}")
220
224
  @sincedb[inode] = pos.to_i
221
225
  end
226
+ db.close
222
227
  end # def _sincedb_open
223
228
 
224
229
  private
@@ -67,7 +67,7 @@ module FileWatch
67
67
  rescue Errno::ENOENT
68
68
  # file has gone away or we can't read it anymore.
69
69
  @files.delete(path)
70
- @logger.debug("#{path}: stat failed (#{$!}), deleting from @files")
70
+ @logger.debug? && @logger.debug("#{path}: stat failed (#{$!}), deleting from @files")
71
71
  yield(:delete, path)
72
72
  next
73
73
  end
@@ -80,15 +80,15 @@ module FileWatch
80
80
  end
81
81
 
82
82
  if inode != @files[path][:inode]
83
- @logger.debug("#{path}: old inode was #{@files[path][:inode].inspect}, new is #{inode.inspect}")
83
+ @logger.debug? && @logger.debug("#{path}: old inode was #{@files[path][:inode].inspect}, new is #{inode.inspect}")
84
84
  yield(:delete, path)
85
85
  yield(:create, path)
86
86
  elsif stat.size < @files[path][:size]
87
- @logger.debug("#{path}: file rolled, new size is #{stat.size}, old size #{@files[path][:size]}")
87
+ @logger.debug? && @logger.debug("#{path}: file rolled, new size is #{stat.size}, old size #{@files[path][:size]}")
88
88
  yield(:delete, path)
89
89
  yield(:create, path)
90
90
  elsif stat.size > @files[path][:size]
91
- @logger.debug("#{path}: file grew, old size #{@files[path][:size]}, new size #{stat.size}")
91
+ @logger.debug? && @logger.debug("#{path}: file grew, old size #{@files[path][:size]}, new size #{stat.size}")
92
92
  yield(:modify, path)
93
93
  end
94
94
 
@@ -124,21 +124,21 @@ module FileWatch
124
124
  private
125
125
  def _discover_file(path, initial=false)
126
126
  globbed_dirs = Dir.glob(path)
127
- @logger.debug("_discover_file_glob: #{path}: glob is: #{globbed_dirs}")
127
+ @logger.debug? && @logger.debug("_discover_file_glob: #{path}: glob is: #{globbed_dirs}")
128
128
  if globbed_dirs.empty? && File.file?(path)
129
129
  globbed_dirs = [path]
130
- @logger.debug("_discover_file_glob: #{path}: glob is: #{globbed_dirs} because glob did not work")
130
+ @logger.debug? && @logger.debug("_discover_file_glob: #{path}: glob is: #{globbed_dirs} because glob did not work")
131
131
  end
132
132
  globbed_dirs.each do |file|
133
133
  next if @files.member?(file)
134
134
  next unless File.file?(file)
135
135
 
136
- @logger.debug("_discover_file: #{path}: new: #{file} (exclude is #{@exclude.inspect})")
136
+ @logger.debug? && @logger.debug("_discover_file: #{path}: new: #{file} (exclude is #{@exclude.inspect})")
137
137
 
138
138
  skip = false
139
139
  @exclude.each do |pattern|
140
140
  if File.fnmatch?(pattern, File.basename(file))
141
- @logger.debug("_discover_file: #{file}: skipping because it " +
141
+ @logger.debug? && @logger.debug("_discover_file: #{file}: skipping because it " +
142
142
  "matches exclude #{pattern}")
143
143
  skip = true
144
144
  break
@@ -154,7 +154,7 @@ module FileWatch
154
154
  }
155
155
 
156
156
  if @iswindows
157
- fileId = Winhelper.GetWindowsUniqueFileIdentifier(path)
157
+ fileId = Winhelper.GetWindowsUniqueFileIdentifier(file)
158
158
  @files[file][:inode] = [fileId, stat.dev_major, stat.dev_minor]
159
159
  else
160
160
  @files[file][:inode] = [stat.ino.to_s, stat.dev_major, stat.dev_minor]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filewatch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordan Sissel
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-01-13 00:00:00.000000000 Z
12
+ date: 2015-02-19 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Watch files and directories in ruby. Also supports tailing and glob file
15
15
  patterns.
@@ -22,6 +22,7 @@ extensions: []
22
22
  extra_rdoc_files: []
23
23
  files:
24
24
  - bin/globtail
25
+ - lib/JRubyFileExtension.jar
25
26
  - lib/filewatch/buftok.rb
26
27
  - lib/filewatch/tail.rb
27
28
  - lib/filewatch/watch.rb
@@ -69,7 +70,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
70
  version: '0'
70
71
  requirements: []
71
72
  rubyforge_project:
72
- rubygems_version: 2.4.3
73
+ rubygems_version: 2.4.5
73
74
  signing_key:
74
75
  specification_version: 4
75
76
  summary: filewatch - file watching for ruby