file-tail 1.1.1 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.all_images.yml +27 -0
- data/.gitignore +2 -0
- data/.travis.yml +4 -1
- data/CHANGES.md +160 -0
- data/COPYING +202 -340
- data/Gemfile +0 -5
- data/{README.rdoc → README.md} +30 -34
- data/Rakefile +8 -21
- data/VERSION +1 -1
- data/file-tail.gemspec +15 -24
- data/lib/file/tail/version.rb +1 -1
- data/lib/file/tail.rb +20 -11
- data/tests/file_tail_test.rb +17 -10
- metadata +58 -16
- data/CHANGES +0 -80
data/{README.rdoc → README.md}
RENAMED
@@ -1,77 +1,73 @@
|
|
1
|
-
|
1
|
+
# File::Tail for Ruby
|
2
2
|
|
3
|
-
|
3
|
+
## Description
|
4
4
|
|
5
5
|
This is a small ruby library that allows it to "tail" files in Ruby, including
|
6
6
|
following a file, that still is growing like the unix command 'tail -f' can.
|
7
7
|
|
8
|
-
|
8
|
+
## Download
|
9
9
|
|
10
|
-
The latest version of
|
10
|
+
The latest version of *File::Tail* (file-tail) can be found at
|
11
11
|
|
12
|
-
http://www.ping.de/~flori
|
13
|
-
|
14
|
-
Online Documentation should be located at
|
15
12
|
|
16
13
|
http://flori.github.com/file-tail
|
17
14
|
|
18
|
-
|
15
|
+
## Installation
|
19
16
|
|
20
17
|
To install file-tail via its gem type:
|
21
18
|
|
22
19
|
# gem install file-tail
|
23
20
|
|
24
|
-
|
25
|
-
|
26
|
-
# rake install
|
27
|
-
|
28
|
-
== Usage
|
21
|
+
## Usage
|
29
22
|
|
30
23
|
File::Tail is a module in the File class. A lightweight class interface for
|
31
24
|
logfiles can be seen under File::Tail::Logfile.
|
32
25
|
|
33
26
|
Direct extension of File objects with File::Tail works like that:
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
27
|
+
|
28
|
+
File.open(filename) do |log|
|
29
|
+
log.extend(File::Tail)
|
30
|
+
log.interval # 10
|
31
|
+
log.backward(10)
|
32
|
+
log.tail { |line| puts line }
|
33
|
+
end
|
40
34
|
|
41
35
|
It's also possible to mix File::Tail in your own File classes
|
42
36
|
(see also File::Tail::Logfile):
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
37
|
+
|
38
|
+
class MyFile < File
|
39
|
+
include File::Tail
|
40
|
+
end
|
41
|
+
log # MyFile.new("myfile")
|
42
|
+
log.interval # 10
|
43
|
+
log.backward(10)
|
44
|
+
log.tail { |line| print line }
|
50
45
|
|
51
46
|
The forward/backward method returns self, so it's possible to chain
|
52
47
|
methods together like that:
|
53
|
-
|
48
|
+
|
49
|
+
log.backward(10).tail { |line| puts line }
|
54
50
|
|
55
51
|
A command line utility named rtail, that uses File::Tail is provided as well.
|
56
52
|
|
57
|
-
|
53
|
+
## Documentation
|
58
54
|
|
59
55
|
To create the documentation of this module, type
|
60
56
|
|
57
|
+
```
|
61
58
|
$ rake doc
|
59
|
+
```
|
62
60
|
|
63
61
|
and the API documentation is generated.
|
64
62
|
|
65
63
|
In the examples direcotry is a small example of tail and
|
66
64
|
pager program that use this module. You also may want look
|
67
|
-
at the end of
|
65
|
+
at the end of examples/tail.rb for a little example.
|
68
66
|
|
69
|
-
|
67
|
+
## Author
|
70
68
|
|
71
69
|
Florian Frank mailto:flori@ping.de
|
72
70
|
|
73
|
-
|
71
|
+
## License
|
74
72
|
|
75
|
-
|
76
|
-
the terms of the GNU General Public License Version 2 as published by
|
77
|
-
the Free Software Foundation: http://www.gnu.org/copyleft/gpl.html
|
73
|
+
Apache License, Version 2.0 – See the COPYING file in the source archive.
|
data/Rakefile
CHANGED
@@ -11,28 +11,15 @@ GemHadar do
|
|
11
11
|
summary "#{path_name.camelize} for Ruby"
|
12
12
|
description 'Library to tail files in Ruby'
|
13
13
|
test_dir 'tests'
|
14
|
-
ignore '.*.sw[pon]', 'pkg', 'Gemfile.lock', 'coverage', '*.rbc', '.rbx',
|
15
|
-
|
16
|
-
|
14
|
+
ignore '.*.sw[pon]', 'pkg', 'Gemfile.lock', 'coverage', '*.rbc', '.rbx',
|
15
|
+
'.AppleDouble', '.bundle', 'errors.lst', '.utilsrc'
|
16
|
+
readme 'README.md'
|
17
|
+
licenses << 'Apache-2.0'
|
17
18
|
|
18
19
|
dependency 'tins', '~>1.0'
|
19
20
|
|
20
|
-
development_dependency 'test-unit', '~>
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
libdir = CONFIG["sitelibdir"]
|
25
|
-
|
26
|
-
dest = File.join(libdir, 'file')
|
27
|
-
mkdir_p(dest)
|
28
|
-
dest = File.join(libdir, path_name)
|
29
|
-
install(path_name + '.rb', dest + '.rb', :verbose => true)
|
30
|
-
mkdir_p(dest)
|
31
|
-
for file in Dir[File.join(path_name, '*.rb')]
|
32
|
-
install(file, dest, :verbose => true)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
bindir = CONFIG["bindir"]
|
36
|
-
install('bin/rtail', bindir, :verbose => true, :mode => 0755)
|
37
|
-
end
|
21
|
+
development_dependency 'test-unit', '~>3.0'
|
22
|
+
development_dependency 'all_images'
|
23
|
+
development_dependency 'simplecov'
|
24
|
+
development_dependency 'debug'
|
38
25
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.3.0
|
data/file-tail.gemspec
CHANGED
@@ -1,40 +1,31 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: file-tail 1.
|
2
|
+
# stub: file-tail 1.3.0 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "file-tail".freeze
|
6
|
-
s.version = "1.
|
6
|
+
s.version = "1.3.0".freeze
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib".freeze]
|
10
10
|
s.authors = ["Florian Frank".freeze]
|
11
|
-
s.date = "
|
11
|
+
s.date = "2024-09-13"
|
12
12
|
s.description = "Library to tail files in Ruby".freeze
|
13
13
|
s.email = "flori@ping.de".freeze
|
14
|
-
s.extra_rdoc_files = ["README.
|
15
|
-
s.files = [".gitignore".freeze, ".travis.yml".freeze, "CHANGES".freeze, "COPYING".freeze, "Gemfile".freeze, "README.
|
14
|
+
s.extra_rdoc_files = ["README.md".freeze, "lib/file-tail.rb".freeze, "lib/file/tail.rb".freeze, "lib/file/tail/group.rb".freeze, "lib/file/tail/line_extension.rb".freeze, "lib/file/tail/logfile.rb".freeze, "lib/file/tail/tailer.rb".freeze, "lib/file/tail/version.rb".freeze]
|
15
|
+
s.files = [".all_images.yml".freeze, ".gitignore".freeze, ".travis.yml".freeze, "CHANGES.md".freeze, "COPYING".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "bin/rtail".freeze, "examples/pager.rb".freeze, "examples/tail.rb".freeze, "file-tail.gemspec".freeze, "lib/file-tail.rb".freeze, "lib/file/tail.rb".freeze, "lib/file/tail/group.rb".freeze, "lib/file/tail/line_extension.rb".freeze, "lib/file/tail/logfile.rb".freeze, "lib/file/tail/tailer.rb".freeze, "lib/file/tail/version.rb".freeze, "tests/file_tail_group_test.rb".freeze, "tests/file_tail_test.rb".freeze, "tests/test_helper.rb".freeze]
|
16
16
|
s.homepage = "http://github.com/flori/file-tail".freeze
|
17
|
-
s.licenses = ["
|
18
|
-
s.rdoc_options = ["--title".freeze, "File-tail - File::Tail for Ruby".freeze, "--main".freeze, "README.
|
19
|
-
s.rubygems_version = "
|
17
|
+
s.licenses = ["Apache-2.0".freeze]
|
18
|
+
s.rdoc_options = ["--title".freeze, "File-tail - File::Tail for Ruby".freeze, "--main".freeze, "README.md".freeze]
|
19
|
+
s.rubygems_version = "3.5.18".freeze
|
20
20
|
s.summary = "File::Tail for Ruby".freeze
|
21
21
|
s.test_files = ["tests/file_tail_group_test.rb".freeze, "tests/file_tail_test.rb".freeze, "tests/test_helper.rb".freeze]
|
22
22
|
|
23
|
-
|
24
|
-
s.specification_version = 4
|
23
|
+
s.specification_version = 4
|
25
24
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
s.add_dependency(%q<test-unit>.freeze, ["~> 2.4.0"])
|
33
|
-
s.add_dependency(%q<tins>.freeze, ["~> 1.0"])
|
34
|
-
end
|
35
|
-
else
|
36
|
-
s.add_dependency(%q<gem_hadar>.freeze, ["~> 1.7.1"])
|
37
|
-
s.add_dependency(%q<test-unit>.freeze, ["~> 2.4.0"])
|
38
|
-
s.add_dependency(%q<tins>.freeze, ["~> 1.0"])
|
39
|
-
end
|
25
|
+
s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.17.1".freeze])
|
26
|
+
s.add_development_dependency(%q<test-unit>.freeze, ["~> 3.0".freeze])
|
27
|
+
s.add_development_dependency(%q<all_images>.freeze, [">= 0".freeze])
|
28
|
+
s.add_development_dependency(%q<simplecov>.freeze, [">= 0".freeze])
|
29
|
+
s.add_development_dependency(%q<debug>.freeze, [">= 0".freeze])
|
30
|
+
s.add_runtime_dependency(%q<tins>.freeze, ["~> 1.0".freeze])
|
40
31
|
end
|
data/lib/file/tail/version.rb
CHANGED
data/lib/file/tail.rb
CHANGED
@@ -94,12 +94,16 @@ class File
|
|
94
94
|
# value from the filesystem block size.
|
95
95
|
attr_accessor :default_bufsize
|
96
96
|
|
97
|
+
# Override the default line separator
|
98
|
+
attr_accessor :line_separator
|
99
|
+
|
97
100
|
# Skip the first <code>n</code> lines of this file. The default is to don't
|
98
101
|
# skip any lines at all and start at the beginning of this file.
|
99
102
|
def forward(n = 0)
|
103
|
+
preset_attributes unless defined? @lines
|
100
104
|
rewind
|
101
105
|
while n > 0 and not eof?
|
102
|
-
readline
|
106
|
+
readline(@line_separator)
|
103
107
|
n -= 1
|
104
108
|
end
|
105
109
|
self
|
@@ -115,6 +119,7 @@ class File
|
|
115
119
|
# filesystem this file belongs to or 8192 bytes if this cannot
|
116
120
|
# be determined.
|
117
121
|
def backward(n = 0, bufsize = nil)
|
122
|
+
preset_attributes unless defined? @lines
|
118
123
|
if n <= 0
|
119
124
|
seek(0, File::SEEK_END)
|
120
125
|
return self
|
@@ -127,13 +132,13 @@ class File
|
|
127
132
|
while n > 0 and tell > 0 do
|
128
133
|
seek(-bufsize, File::SEEK_CUR)
|
129
134
|
buffer = read(bufsize)
|
130
|
-
n -= buffer.count(
|
135
|
+
n -= buffer.count(@line_separator)
|
131
136
|
seek(-bufsize, File::SEEK_CUR)
|
132
137
|
end
|
133
138
|
else
|
134
139
|
rewind
|
135
140
|
buffer = read(size)
|
136
|
-
n -= buffer.count(
|
141
|
+
n -= buffer.count(@line_separator)
|
137
142
|
rewind
|
138
143
|
end
|
139
144
|
rescue Errno::EINVAL
|
@@ -142,7 +147,7 @@ class File
|
|
142
147
|
end
|
143
148
|
pos = -1
|
144
149
|
while n < 0 # forward if we are too far back
|
145
|
-
pos = buffer.index(
|
150
|
+
pos = buffer.index(@line_separator, pos + 1)
|
146
151
|
n += 1
|
147
152
|
end
|
148
153
|
seek(pos + 1, File::SEEK_CUR)
|
@@ -177,7 +182,7 @@ class File
|
|
177
182
|
redo
|
178
183
|
rescue ReopenException => e
|
179
184
|
until eof? || @n == 0
|
180
|
-
block.call readline
|
185
|
+
block.call readline(@line_separator)
|
181
186
|
@n -= 1 if @n
|
182
187
|
end
|
183
188
|
reopen_file(e.mode)
|
@@ -193,7 +198,7 @@ class File
|
|
193
198
|
def read_line(&block)
|
194
199
|
if @n
|
195
200
|
until @n == 0
|
196
|
-
block.call readline
|
201
|
+
block.call readline(@line_separator)
|
197
202
|
@lines += 1
|
198
203
|
@no_read = 0
|
199
204
|
@n -= 1
|
@@ -201,7 +206,7 @@ class File
|
|
201
206
|
end
|
202
207
|
raise ReturnException
|
203
208
|
else
|
204
|
-
block.call readline
|
209
|
+
block.call readline(@line_separator)
|
205
210
|
@lines += 1
|
206
211
|
@no_read = 0
|
207
212
|
output_debug_information
|
@@ -223,6 +228,7 @@ class File
|
|
223
228
|
@break_if_eof = false unless defined? @break_if_eof
|
224
229
|
@return_if_eof = false unless defined? @return_if_eof
|
225
230
|
@max_interval ||= 10
|
231
|
+
@line_separator ||= $/
|
226
232
|
@interval ||= @max_interval
|
227
233
|
@suspicious_interval ||= 60
|
228
234
|
@lines = 0
|
@@ -241,9 +247,8 @@ class File
|
|
241
247
|
@stat = nil
|
242
248
|
raise ReopenException.new(:top)
|
243
249
|
end
|
244
|
-
else
|
245
|
-
@stat = stat
|
246
250
|
end
|
251
|
+
@stat = stat
|
247
252
|
rescue Errno::ENOENT, Errno::ESTALE
|
248
253
|
raise ReopenException
|
249
254
|
end
|
@@ -267,7 +272,7 @@ class File
|
|
267
272
|
end
|
268
273
|
|
269
274
|
def reopen_file(mode)
|
270
|
-
|
275
|
+
debug? and $stdout.print "Reopening '#{path}', mode = #{mode}.\n"
|
271
276
|
@no_read = 0
|
272
277
|
reopen(path)
|
273
278
|
if mode == :bottom
|
@@ -285,7 +290,7 @@ class File
|
|
285
290
|
end
|
286
291
|
|
287
292
|
def output_debug_information
|
288
|
-
|
293
|
+
debug? or return
|
289
294
|
STDERR.puts({
|
290
295
|
:path => path,
|
291
296
|
:lines => @lines,
|
@@ -295,6 +300,10 @@ class File
|
|
295
300
|
}.inspect)
|
296
301
|
self
|
297
302
|
end
|
303
|
+
|
304
|
+
def debug?
|
305
|
+
ENV['FILE_TAIL_DEBUG'].to_i == 1
|
306
|
+
end
|
298
307
|
end
|
299
308
|
end
|
300
309
|
|
data/tests/file_tail_test.rb
CHANGED
@@ -4,13 +4,16 @@ require 'test_helper'
|
|
4
4
|
require 'file/tail'
|
5
5
|
require 'timeout'
|
6
6
|
require 'thread'
|
7
|
+
require 'fileutils'
|
7
8
|
Thread.abort_on_exception = true
|
8
9
|
|
9
10
|
class FileTailTest < Test::Unit::TestCase
|
10
11
|
include File::Tail
|
12
|
+
include FileUtils
|
11
13
|
|
12
14
|
def setup
|
13
|
-
@out = File.new("test.#$$", "wb")
|
15
|
+
@out = File.new(File.join(__dir__, "test.#$$"), "wb")
|
16
|
+
at_exit { rm_f File.expand_path(@out.path) }
|
14
17
|
append(@out, 100)
|
15
18
|
@in = File.new(@out.path, "rb")
|
16
19
|
@in.extend(File::Tail)
|
@@ -194,7 +197,7 @@ class FileTailTest < Test::Unit::TestCase
|
|
194
197
|
lines = []
|
195
198
|
logger = Thread.new do
|
196
199
|
begin
|
197
|
-
Timeout::timeout(
|
200
|
+
Timeout::timeout(10) do
|
198
201
|
@in.tail do |l|
|
199
202
|
lines << l
|
200
203
|
end
|
@@ -225,7 +228,7 @@ class FileTailTest < Test::Unit::TestCase
|
|
225
228
|
lines = []
|
226
229
|
logger = Thread.new do
|
227
230
|
begin
|
228
|
-
Timeout::timeout(
|
231
|
+
Timeout::timeout(10) do
|
229
232
|
@in.tail do |l|
|
230
233
|
lines << l
|
231
234
|
end
|
@@ -261,7 +264,7 @@ class FileTailTest < Test::Unit::TestCase
|
|
261
264
|
lines = []
|
262
265
|
logger = Thread.new do
|
263
266
|
begin
|
264
|
-
Timeout::timeout(
|
267
|
+
Timeout::timeout(10) do
|
265
268
|
@in.tail(15) do |l|
|
266
269
|
lines << l
|
267
270
|
end
|
@@ -298,7 +301,7 @@ class FileTailTest < Test::Unit::TestCase
|
|
298
301
|
lines = []
|
299
302
|
logger = Thread.new do
|
300
303
|
begin
|
301
|
-
Timeout::timeout(
|
304
|
+
Timeout::timeout(10) do
|
302
305
|
@in.tail(110) do |l|
|
303
306
|
lines << l
|
304
307
|
end
|
@@ -307,8 +310,10 @@ class FileTailTest < Test::Unit::TestCase
|
|
307
310
|
end
|
308
311
|
end
|
309
312
|
appender = Thread.new do
|
310
|
-
|
311
|
-
|
313
|
+
Timeout::timeout(10) do
|
314
|
+
until lines.size == 100
|
315
|
+
sleep 0.1
|
316
|
+
end
|
312
317
|
end
|
313
318
|
@out.close
|
314
319
|
File.unlink(@out.path)
|
@@ -331,7 +336,7 @@ class FileTailTest < Test::Unit::TestCase
|
|
331
336
|
lines = []
|
332
337
|
logger = Thread.new do
|
333
338
|
begin
|
334
|
-
Timeout::timeout(
|
339
|
+
Timeout::timeout(10) do
|
335
340
|
@in.tail(110) do |l|
|
336
341
|
lines << l
|
337
342
|
end
|
@@ -340,8 +345,10 @@ class FileTailTest < Test::Unit::TestCase
|
|
340
345
|
end
|
341
346
|
end
|
342
347
|
appender = Thread.new do
|
343
|
-
|
344
|
-
|
348
|
+
Timeout::timeout(10) do
|
349
|
+
until lines.size == 100
|
350
|
+
sleep 0.1
|
351
|
+
end
|
345
352
|
end
|
346
353
|
@out.truncate 0
|
347
354
|
@out.close
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: file-tail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Frank
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-09-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gem_hadar
|
@@ -16,28 +16,70 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.17.1
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: 1.17.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: test-unit
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: '3.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: '3.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: all_images
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simplecov
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: debug
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
41
83
|
- !ruby/object:Gem::Dependency
|
42
84
|
name: tins
|
43
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -57,7 +99,7 @@ email: flori@ping.de
|
|
57
99
|
executables: []
|
58
100
|
extensions: []
|
59
101
|
extra_rdoc_files:
|
60
|
-
- README.
|
102
|
+
- README.md
|
61
103
|
- lib/file-tail.rb
|
62
104
|
- lib/file/tail.rb
|
63
105
|
- lib/file/tail/group.rb
|
@@ -66,12 +108,13 @@ extra_rdoc_files:
|
|
66
108
|
- lib/file/tail/tailer.rb
|
67
109
|
- lib/file/tail/version.rb
|
68
110
|
files:
|
111
|
+
- ".all_images.yml"
|
69
112
|
- ".gitignore"
|
70
113
|
- ".travis.yml"
|
71
|
-
- CHANGES
|
114
|
+
- CHANGES.md
|
72
115
|
- COPYING
|
73
116
|
- Gemfile
|
74
|
-
- README.
|
117
|
+
- README.md
|
75
118
|
- Rakefile
|
76
119
|
- VERSION
|
77
120
|
- bin/rtail
|
@@ -90,14 +133,14 @@ files:
|
|
90
133
|
- tests/test_helper.rb
|
91
134
|
homepage: http://github.com/flori/file-tail
|
92
135
|
licenses:
|
93
|
-
-
|
136
|
+
- Apache-2.0
|
94
137
|
metadata: {}
|
95
|
-
post_install_message:
|
138
|
+
post_install_message:
|
96
139
|
rdoc_options:
|
97
140
|
- "--title"
|
98
141
|
- File-tail - File::Tail for Ruby
|
99
142
|
- "--main"
|
100
|
-
- README.
|
143
|
+
- README.md
|
101
144
|
require_paths:
|
102
145
|
- lib
|
103
146
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -111,9 +154,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
154
|
- !ruby/object:Gem::Version
|
112
155
|
version: '0'
|
113
156
|
requirements: []
|
114
|
-
|
115
|
-
|
116
|
-
signing_key:
|
157
|
+
rubygems_version: 3.5.18
|
158
|
+
signing_key:
|
117
159
|
specification_version: 4
|
118
160
|
summary: File::Tail for Ruby
|
119
161
|
test_files:
|
data/CHANGES
DELETED
@@ -1,80 +0,0 @@
|
|
1
|
-
2014-09-26 * 1.1.0 * Depend on tins ~ 1.0
|
2
|
-
2012-05-31 * 1.0.10 * Use rewind to force IO#lineno to be reset.
|
3
|
-
2012-05-31 * 1.0.9 * Reopen file in :top mode at the beginning.
|
4
|
-
2011-12-24 * 1.0.8 * Support simplecov.
|
5
|
-
2011-07-15 * 1.0.7 * Use gem_hadar to shorten Rakefile.
|
6
|
-
2011-06-25 * 1.0.6 * Create a gem spec file again.
|
7
|
-
* Added a File::Tail::Group to tail multiple files more easily.
|
8
|
-
2010-03-25 * 1.0.5 * Added rtail executable, a nice app to supervise logfiles
|
9
|
-
and logdirs.
|
10
|
-
* Disabled creation of gem spec file.
|
11
|
-
* Cleaned up documentation a bit.
|
12
|
-
2009-08-21 * 1.0.4 * Fixed the threaded tests for Ruby 1.9.
|
13
|
-
* Create a gem spec file.
|
14
|
-
* Some cleanup.
|
15
|
-
2008-04-07 * 1.0.3 * Danny Colligan <danny.colligan@sendori.com> reported a
|
16
|
-
memory leak in long running scripts using file-tail. I
|
17
|
-
think this might be a ruby related problem, which is
|
18
|
-
caused/aggravated by using yield after having &block
|
19
|
-
parameter in a method. I changed file-tail to only use
|
20
|
-
block.call, which seems to improve the memory behaviour. I
|
21
|
-
am still not sure, where the problem actually stems
|
22
|
-
from, though.
|
23
|
-
2007-04-19 * 1.0.2 * make_doc.rb was missing from the source archive. Thanks to
|
24
|
-
Rick Ohnemus <rick.ohnemus@systemware.com> for reporting it.
|
25
|
-
2007-04-19 * 1.0.1 * Bugfix: File::Tail::Logfile#open with block, now closes
|
26
|
-
the file like File#open does. Found by Alex Doan
|
27
|
-
<alex.doan@wachovia.com>, ruby-talk:248383.
|
28
|
-
2007-03-30 * 1.0.0 * Bugfix: David.Barzilay@swisscom.com reported, that file
|
29
|
-
tails may skip some log file lines, after rotating it. I
|
30
|
-
think, that I fixed that problem.
|
31
|
-
I added a after_reopen callback as well, that is called
|
32
|
-
after reopening of the tailed file has occured.
|
33
|
-
* Removed rewind/wind methods even earlier than planned: I
|
34
|
-
placed the deprecation warning for rewind method in File
|
35
|
-
instead of File::Tail, which caused rewind to stop working
|
36
|
-
completely after loading file/tail. Duh! I blame vim's
|
37
|
-
matchit, because it jumped to the wrong end keyword.
|
38
|
-
2007-02-08 * 0.1.4 * Renamed rewind method to backward, and wind method to
|
39
|
-
forward, because someone already had the good idea to name
|
40
|
-
a method IO#rewind, which was overwritten by the mixed in
|
41
|
-
File::Tail methods. The old methods are now deprecated and
|
42
|
-
will be removed in a new 0.2.x version of the library.
|
43
|
-
* Added a bit more of documentation.
|
44
|
-
2005-08-20 * 0.1.3 * Applied LOAD_PATH patch by Daniel Berger, binary mode
|
45
|
-
changes were already in the CVS. Seemed to be like cheating
|
46
|
-
to me, though. ;)
|
47
|
-
* Skipping one windows test for the moment, too. Sigh!
|
48
|
-
2004-09-30 * 0.1.2 * First Rubyforge release
|
49
|
-
* Added Rakefile
|
50
|
-
* Supports gem build now.
|
51
|
-
2004-09-01 * 0.1.1 * Josh Endries <josh@endries.org> found a bug
|
52
|
-
that caused File::Tail to malfunction on FreeBSD.
|
53
|
-
Hotfix: Use a side effect of seek to clearerr the tailed
|
54
|
-
file handle after EOFError has been raised.
|
55
|
-
2004-04-13 * 0.1.0 * API documentation with rdoc.
|
56
|
-
* return_if_eof attribute added.
|
57
|
-
* Added array return mode for finite tail call without block
|
58
|
-
given.
|
59
|
-
* install.rb now uses ruby version site_dir.
|
60
|
-
* Some code and directory structure cleanup.
|
61
|
-
2002-08-02 * 0.0.2 * Heavy refactoring, more and smaller methods
|
62
|
-
and expception handling
|
63
|
-
* Added check for inode and device equality of files
|
64
|
-
as suggested by
|
65
|
-
James F.Hranicky <jfh@cise.ufl.edu> and
|
66
|
-
Curt Sampson <cjs@cynic.net> to cover remove
|
67
|
-
rotation
|
68
|
-
* If filesize shrinks suddenly, File::Tail assumes that
|
69
|
-
copy and truncate rotation has happend: The file
|
70
|
-
is reopened and every new line is handled.
|
71
|
-
* NFS-Fix: Errno::ESTALE is caught.
|
72
|
-
* wind added to skip the first n lines, as
|
73
|
-
James F.Hranicky's suggested and changed
|
74
|
-
name of last-method to rewind, because I liked
|
75
|
-
his method names better than mine ;)
|
76
|
-
* Renamed next to tail either.
|
77
|
-
* The API has changed - but I think very few people
|
78
|
-
care at the moment.
|
79
|
-
* Lots of tests added.
|
80
|
-
2002-07-30 * 0.0.1 * Initial Release
|