file-tail 1.0.3 → 1.0.4
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.
- data/CHANGES +3 -0
- data/{GPL → COPYING} +7 -7
- data/Rakefile +33 -19
- data/VERSION +1 -1
- data/doc-main.txt +54 -0
- data/examples/pager.rb +0 -1
- data/examples/tail.rb +0 -1
- data/file-tail.gemspec +21 -0
- data/install.rb +0 -1
- data/lib/file/tail.rb +0 -56
- data/lib/file/tail/version.rb +1 -1
- data/make_doc.rb +1 -2
- data/tests/test_file-tail.rb +74 -71
- metadata +20 -22
data/CHANGES
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
2009-08-21 * 1.0.4 * Fixed the threaded tests for Ruby 1.9.
|
2
|
+
* Create a gem spec file.
|
3
|
+
* Some cleanup.
|
1
4
|
2008-04-07 * 1.0.3 * Danny Colligan <danny.colligan@sendori.com> reported a
|
2
5
|
memory leak in long running scripts using file-tail. I
|
3
6
|
think this might be a ruby related problem, which is
|
data/{GPL → COPYING}
RENAMED
@@ -1,12 +1,12 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
GNU GENERAL PUBLIC LICENSE
|
2
|
+
Version 2, June 1991
|
3
3
|
|
4
4
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
5
5
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
6
6
|
Everyone is permitted to copy and distribute verbatim copies
|
7
7
|
of this license document, but changing it is not allowed.
|
8
8
|
|
9
|
-
|
9
|
+
Preamble
|
10
10
|
|
11
11
|
The licenses for most software are designed to take away your
|
12
12
|
freedom to share and change it. By contrast, the GNU General Public
|
@@ -56,7 +56,7 @@ patent must be licensed for everyone's free use or not licensed at all.
|
|
56
56
|
The precise terms and conditions for copying, distribution and
|
57
57
|
modification follow.
|
58
58
|
|
59
|
-
|
59
|
+
GNU GENERAL PUBLIC LICENSE
|
60
60
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
61
61
|
|
62
62
|
0. This License applies to any program or other work which contains
|
@@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals
|
|
255
255
|
of preserving the free status of all derivatives of our free software and
|
256
256
|
of promoting the sharing and reuse of software generally.
|
257
257
|
|
258
|
-
|
258
|
+
NO WARRANTY
|
259
259
|
|
260
260
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
261
261
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
@@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
|
277
277
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
278
278
|
POSSIBILITY OF SUCH DAMAGES.
|
279
279
|
|
280
|
-
|
280
|
+
END OF TERMS AND CONDITIONS
|
281
281
|
|
282
|
-
|
282
|
+
How to Apply These Terms to Your New Programs
|
283
283
|
|
284
284
|
If you develop a new program, and you want it to be of the greatest
|
285
285
|
possible use to the public, the best way to achieve this is to make it
|
data/Rakefile
CHANGED
@@ -1,13 +1,17 @@
|
|
1
1
|
# vim: set filetype=ruby et sw=2 ts=2:
|
2
2
|
|
3
|
-
|
3
|
+
begin
|
4
|
+
require 'rake/gempackagetask'
|
5
|
+
rescue LoadError
|
6
|
+
end
|
7
|
+
require 'rake/clean'
|
4
8
|
require 'rbconfig'
|
5
|
-
|
6
9
|
include Config
|
7
10
|
|
8
11
|
PKG_NAME = 'file-tail'
|
9
12
|
PKG_VERSION = File.read('VERSION').chomp
|
10
13
|
PKG_FILES = FileList["**/*"].exclude(/^(pkg|coverage|doc)/)
|
14
|
+
CLEAN.include 'coverage', 'doc'
|
11
15
|
|
12
16
|
desc "Installing library"
|
13
17
|
task :install do
|
@@ -29,35 +33,43 @@ task :coverage do
|
|
29
33
|
system %{rcov -x '\\btests\/' -Ilib tests/test_file-tail.rb}
|
30
34
|
end
|
31
35
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
spec = Gem::Specification.new do |s|
|
39
|
-
s.name = 'file-tail'
|
40
|
-
s.version = PKG_VERSION
|
36
|
+
if defined? Gem
|
37
|
+
spec_src =<<GEM
|
38
|
+
# -*- encoding: utf-8 -*-
|
39
|
+
Gem::Specification.new do |s|
|
40
|
+
s.name = '#{PKG_NAME}'
|
41
|
+
s.version = '#{PKG_VERSION}'
|
41
42
|
s.summary = "File::Tail for Ruby"
|
42
43
|
s.description = "Library to tail files in Ruby"
|
43
44
|
|
44
|
-
s.files = PKG_FILES
|
45
|
+
s.files = #{PKG_FILES.to_a.sort.inspect}
|
45
46
|
|
46
47
|
s.require_path = 'lib'
|
47
48
|
|
48
49
|
s.has_rdoc = true
|
49
|
-
s.rdoc_options << '--
|
50
|
+
s.rdoc_options << '--main' << 'doc-main.txt'
|
51
|
+
s.extra_rdoc_files << 'doc-main.txt'
|
50
52
|
s.test_files << 'tests/test_file-tail.rb'
|
51
53
|
|
52
54
|
s.author = "Florian Frank"
|
53
55
|
s.email = "flori@ping.de"
|
54
|
-
s.homepage = "http
|
55
|
-
s.rubyforge_project = "
|
56
|
+
s.homepage = "http://#{PKG_NAME}.rubyforge.org"
|
57
|
+
s.rubyforge_project = "#{PKG_NAME}"
|
56
58
|
end
|
59
|
+
GEM
|
57
60
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
+
desc 'Create a gemspec file'
|
62
|
+
task :gemspec do
|
63
|
+
File.open("#{PKG_NAME}.gemspec", 'w') do |f|
|
64
|
+
f.puts spec_src
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
spec = eval(spec_src)
|
69
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
70
|
+
pkg.need_tar = true
|
71
|
+
pkg.package_files += PKG_FILES
|
72
|
+
end
|
61
73
|
end
|
62
74
|
|
63
75
|
desc m = "Writing version information for #{PKG_VERSION}"
|
@@ -79,4 +91,6 @@ EOT
|
|
79
91
|
end
|
80
92
|
end
|
81
93
|
|
82
|
-
task :
|
94
|
+
task :default => [ :version, :gemspec, :test ]
|
95
|
+
|
96
|
+
task :release => [ :clean, :version, :gemspec, :package ]
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.4
|
data/doc-main.txt
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
== File::Tail - Tailing files in Ruby
|
2
|
+
|
3
|
+
=== Description
|
4
|
+
|
5
|
+
This is a small ruby library that allows it to "tail" files in Ruby,
|
6
|
+
including following a file, that still is growing like the unix command 'tail
|
7
|
+
-f' can.
|
8
|
+
|
9
|
+
=== Author
|
10
|
+
|
11
|
+
Florian Frank mailto:flori@ping.de
|
12
|
+
|
13
|
+
=== License
|
14
|
+
|
15
|
+
This is free software; you can redistribute it and/or modify it under
|
16
|
+
the terms of the GNU General Public License Version 2 as published by
|
17
|
+
the Free Software Foundation: http://www.gnu.org/copyleft/gpl.html
|
18
|
+
|
19
|
+
=== Download
|
20
|
+
|
21
|
+
The latest version of <b>File::Tail</b> (file-tail) can be found at
|
22
|
+
|
23
|
+
http://rubyforge.org/frs/?group_id=393
|
24
|
+
|
25
|
+
Online Documentation should be located at
|
26
|
+
|
27
|
+
http://file-tail.rubyforge.org
|
28
|
+
|
29
|
+
=== Usage
|
30
|
+
|
31
|
+
File::Tail is a module in the File class. A lightweight class interface for
|
32
|
+
logfiles can be seen under File::Tail::Logfile.
|
33
|
+
|
34
|
+
Direct extension of File objects with File::Tail works like that:
|
35
|
+
File.open(filename) do |log|
|
36
|
+
log.extend(File::Tail)
|
37
|
+
log.interval = 10
|
38
|
+
log.backward(10)
|
39
|
+
log.tail { |line| puts line }
|
40
|
+
end
|
41
|
+
|
42
|
+
It's also possible to mix File::Tail in your own File classes
|
43
|
+
(see also File::Tail::Logfile):
|
44
|
+
class MyFile < File
|
45
|
+
include File::Tail
|
46
|
+
end
|
47
|
+
log = MyFile.new("myfile")
|
48
|
+
log.interval = 10
|
49
|
+
log.backward(10)
|
50
|
+
log.tail { |line| print line }
|
51
|
+
|
52
|
+
The forward/backward method returns self, so it's possible to chain
|
53
|
+
methods together like that:
|
54
|
+
log.backward(10).tail { |line| puts line }
|
data/examples/pager.rb
CHANGED
data/examples/tail.rb
CHANGED
data/file-tail.gemspec
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
Gem::Specification.new do |s|
|
3
|
+
s.name = 'file-tail'
|
4
|
+
s.version = '1.0.4'
|
5
|
+
s.summary = "File::Tail for Ruby"
|
6
|
+
s.description = "Library to tail files in Ruby"
|
7
|
+
|
8
|
+
s.files = ["CHANGES", "COPYING", "README", "Rakefile", "VERSION", "examples", "examples/pager.rb", "examples/tail.rb", "file-tail.gemspec", "install.rb", "lib", "lib/file", "lib/file/tail", "lib/file/tail.rb", "lib/file/tail/version.rb", "make_doc.rb", "tests", "tests/test_file-tail.rb"]
|
9
|
+
|
10
|
+
s.require_path = 'lib'
|
11
|
+
|
12
|
+
s.has_rdoc = true
|
13
|
+
s.rdoc_options << '--main' << 'doc-main.txt'
|
14
|
+
s.extra_rdoc_files << 'doc-main.txt'
|
15
|
+
s.test_files << 'tests/test_file-tail.rb'
|
16
|
+
|
17
|
+
s.author = "Florian Frank"
|
18
|
+
s.email = "flori@ping.de"
|
19
|
+
s.homepage = "http://file-tail.rubyforge.org"
|
20
|
+
s.rubyforge_project = "file-tail"
|
21
|
+
end
|
data/install.rb
CHANGED
data/lib/file/tail.rb
CHANGED
@@ -1,61 +1,6 @@
|
|
1
1
|
require 'file/tail/version'
|
2
2
|
|
3
3
|
class File
|
4
|
-
# = File::Tail - Tailing files in Ruby
|
5
|
-
#
|
6
|
-
# == Description
|
7
|
-
#
|
8
|
-
# This is a small ruby library that allows it to "tail" files in Ruby,
|
9
|
-
# including following a file, that still is growing like the unix command 'tail
|
10
|
-
# -f' can.
|
11
|
-
#
|
12
|
-
# == Author
|
13
|
-
#
|
14
|
-
# Florian Frank mailto:flori@ping.de
|
15
|
-
#
|
16
|
-
# == License
|
17
|
-
#
|
18
|
-
# This is free software; you can redistribute it and/or modify it under
|
19
|
-
# the terms of the GNU General Public License Version 2 as published by
|
20
|
-
# the Free Software Foundation: http://www.gnu.org/copyleft/gpl.html
|
21
|
-
#
|
22
|
-
# == Download
|
23
|
-
#
|
24
|
-
# The latest version of <b>File::Tail</b> (file-tail) can be found at
|
25
|
-
#
|
26
|
-
# http://rubyforge.org/frs/?group_id=393
|
27
|
-
#
|
28
|
-
# Online Documentation should be located at
|
29
|
-
#
|
30
|
-
# http://file-tail.rubyforge.org
|
31
|
-
#
|
32
|
-
# == Usage
|
33
|
-
#
|
34
|
-
# File::Tail is a module in the File class. A lightweight class interface for
|
35
|
-
# logfiles can be seen under File::Tail::Logfile.
|
36
|
-
#
|
37
|
-
# Direct extension of File objects with File::Tail works like that:
|
38
|
-
# File.open(filename) do |log|
|
39
|
-
# log.extend(File::Tail)
|
40
|
-
# log.interval = 10
|
41
|
-
# log.backward(10)
|
42
|
-
# log.tail { |line| puts line }
|
43
|
-
# end
|
44
|
-
#
|
45
|
-
# It's also possible to mix File::Tail in your own File classes
|
46
|
-
# (see also File::Tail::Logfile):
|
47
|
-
# class MyFile < File
|
48
|
-
# include File::Tail
|
49
|
-
# end
|
50
|
-
# log = MyFile.new("myfile")
|
51
|
-
# log.interval = 10
|
52
|
-
# log.backward(10)
|
53
|
-
# log.tail { |line| print line }
|
54
|
-
#
|
55
|
-
# The forward/backward method returns self, so it's possible to chain
|
56
|
-
# methods together like that:
|
57
|
-
# log.backward(10).tail { |line| puts line }
|
58
|
-
#
|
59
4
|
module Tail
|
60
5
|
# This is an easy to use Logfile class that includes
|
61
6
|
# the File::Tail module.
|
@@ -440,4 +385,3 @@ if $0 == __FILE__
|
|
440
385
|
log.tail { |line| puts line }
|
441
386
|
end
|
442
387
|
end
|
443
|
-
# vim: set et sw=2 ts=2:
|
data/lib/file/tail/version.rb
CHANGED
data/make_doc.rb
CHANGED
data/tests/test_file-tail.rb
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
base = File.basename(Dir.pwd)
|
4
4
|
if base == 'tests' || base =~ /file-tail/
|
5
|
-
|
6
|
-
|
5
|
+
Dir.chdir('..') if base == 'tests'
|
6
|
+
$LOAD_PATH.unshift(File.join(Dir.pwd, 'lib'))
|
7
7
|
end
|
8
8
|
|
9
9
|
require 'test/unit'
|
@@ -135,148 +135,152 @@ class TC_FileTail < Test::Unit::TestCase
|
|
135
135
|
def test_tail_withappend
|
136
136
|
@in.backward
|
137
137
|
lines = []
|
138
|
-
|
139
|
-
threads << Thread.new do
|
138
|
+
logger = Thread.new do
|
140
139
|
begin
|
141
140
|
timeout(1) { @in.tail { |l| lines << l } }
|
142
141
|
rescue TimeoutError
|
143
142
|
end
|
144
143
|
end
|
145
|
-
|
146
|
-
|
144
|
+
appender = Thread.new { append(@out, 10) }
|
145
|
+
appender.join
|
146
|
+
logger.join
|
147
147
|
assert_equal(10, lines.size)
|
148
148
|
end
|
149
149
|
|
150
150
|
def test_tail_truncated
|
151
151
|
@in.backward
|
152
152
|
lines = []
|
153
|
-
|
154
|
-
threads << appender = Thread.new do
|
155
|
-
Thread.stop
|
156
|
-
@out.close
|
157
|
-
File.truncate(@out.path, 0)
|
158
|
-
@out = File.new(@in.path, "ab")
|
159
|
-
append(@out, 10)
|
160
|
-
end
|
161
|
-
threads << Thread.new do
|
153
|
+
logger = Thread.new do
|
162
154
|
begin
|
163
155
|
timeout(1) do
|
164
156
|
@in.tail do |l|
|
165
157
|
lines << l
|
166
|
-
lines.size == 100 and appender.wakeup
|
167
158
|
end
|
168
159
|
end
|
169
160
|
rescue TimeoutError
|
170
161
|
end
|
171
162
|
end
|
172
|
-
|
163
|
+
appender = Thread.new do
|
164
|
+
until logger.stop?
|
165
|
+
sleep 0.1
|
166
|
+
end
|
167
|
+
@out.close
|
168
|
+
File.truncate(@out.path, 0)
|
169
|
+
@out = File.new(@in.path, "ab")
|
170
|
+
append(@out, 10)
|
171
|
+
end
|
172
|
+
appender.join
|
173
|
+
logger.join
|
173
174
|
assert_equal(10, lines.size)
|
174
175
|
end
|
175
176
|
|
176
177
|
def test_tail_remove
|
177
|
-
|
178
|
+
return if File::PATH_SEPARATOR == ';' # Grmpf! Windows...
|
178
179
|
@in.backward
|
179
|
-
|
180
|
-
|
180
|
+
reopened = false
|
181
|
+
@in.after_reopen { |f| reopened = true }
|
181
182
|
lines = []
|
182
|
-
|
183
|
-
threads << appender = Thread.new do
|
184
|
-
Thread.stop
|
185
|
-
@out.close
|
186
|
-
File.unlink(@out.path)
|
187
|
-
@out = File.new(@in.path, "wb")
|
188
|
-
append(@out, 10)
|
189
|
-
end
|
190
|
-
threads << Thread.new do
|
183
|
+
logger = Thread.new do
|
191
184
|
begin
|
192
185
|
timeout(2) do
|
193
186
|
@in.tail do |l|
|
194
187
|
lines << l
|
195
|
-
lines.size == 100 and appender.wakeup
|
196
188
|
end
|
197
189
|
end
|
198
190
|
rescue TimeoutError
|
199
191
|
end
|
200
192
|
end
|
201
|
-
|
193
|
+
appender = Thread.new do
|
194
|
+
until logger.stop?
|
195
|
+
sleep 0.1
|
196
|
+
end
|
197
|
+
@out.close
|
198
|
+
File.unlink(@out.path)
|
199
|
+
@out = File.new(@in.path, "wb")
|
200
|
+
append(@out, 10)
|
201
|
+
end
|
202
|
+
appender.join
|
203
|
+
logger.join
|
202
204
|
assert_equal(10, lines.size)
|
203
|
-
|
205
|
+
assert reopened
|
204
206
|
end
|
205
207
|
|
206
208
|
def test_tail_remove2
|
207
|
-
|
209
|
+
return if File::PATH_SEPARATOR == ';' # Grmpf! Windows...
|
208
210
|
@in.backward
|
209
|
-
|
210
|
-
|
211
|
+
reopened = false
|
212
|
+
@in.after_reopen { |f| reopened = true }
|
211
213
|
lines = []
|
212
|
-
|
213
|
-
threads << appender = Thread.new do
|
214
|
-
Thread.stop
|
215
|
-
@out.close
|
216
|
-
File.unlink(@out.path)
|
217
|
-
@out = File.new(@in.path, "wb")
|
218
|
-
append(@out, 10)
|
219
|
-
sleep 1
|
220
|
-
append(@out, 10)
|
221
|
-
File.unlink(@out.path)
|
222
|
-
@out = File.new(@in.path, "wb")
|
223
|
-
append(@out, 10)
|
224
|
-
end
|
225
|
-
threads << Thread.new do
|
214
|
+
logger = Thread.new do
|
226
215
|
begin
|
227
216
|
timeout(2) do
|
228
217
|
@in.tail do |l|
|
229
218
|
lines << l
|
230
|
-
lines.size == 100 and appender.wakeup
|
231
219
|
end
|
232
220
|
end
|
233
221
|
rescue TimeoutError
|
234
222
|
end
|
235
223
|
end
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
def test_tail_remove3
|
242
|
-
return if File::PATH_SEPARATOR == ';' # Grmpf! Windows...
|
243
|
-
@in.backward
|
244
|
-
reopened = false
|
245
|
-
@in.after_reopen { |f| reopened = true }
|
246
|
-
lines = []
|
247
|
-
threads = []
|
248
|
-
threads << appender = Thread.new do
|
249
|
-
Thread.stop
|
224
|
+
appender = Thread.new do
|
225
|
+
until logger.stop?
|
226
|
+
sleep 0.1
|
227
|
+
end
|
250
228
|
@out.close
|
251
229
|
File.unlink(@out.path)
|
252
230
|
@out = File.new(@in.path, "wb")
|
253
231
|
append(@out, 10)
|
254
|
-
|
232
|
+
sleep 1
|
255
233
|
append(@out, 10)
|
256
234
|
File.unlink(@out.path)
|
257
235
|
@out = File.new(@in.path, "wb")
|
258
236
|
append(@out, 10)
|
259
237
|
end
|
260
|
-
|
238
|
+
appender.join
|
239
|
+
logger.join
|
240
|
+
assert_equal(30, lines.size)
|
241
|
+
assert reopened
|
242
|
+
end
|
243
|
+
|
244
|
+
def test_tail_remove3
|
245
|
+
return if File::PATH_SEPARATOR == ';' # Grmpf! Windows...
|
246
|
+
@in.backward
|
247
|
+
reopened = false
|
248
|
+
@in.after_reopen { |f| reopened = true }
|
249
|
+
lines = []
|
250
|
+
logger = Thread.new do
|
261
251
|
begin
|
262
252
|
timeout(2) do
|
263
253
|
@in.tail(15) do |l|
|
264
254
|
lines << l
|
265
|
-
lines.size == 100 and appender.wakeup
|
266
255
|
end
|
267
256
|
end
|
268
257
|
rescue TimeoutError
|
269
258
|
end
|
270
259
|
end
|
271
|
-
|
260
|
+
appender = Thread.new do
|
261
|
+
until logger.stop?
|
262
|
+
sleep 0.1
|
263
|
+
end
|
264
|
+
@out.close
|
265
|
+
File.unlink(@out.path)
|
266
|
+
@out = File.new(@in.path, "wb")
|
267
|
+
append(@out, 10)
|
268
|
+
sleep 1
|
269
|
+
append(@out, 10)
|
270
|
+
File.unlink(@out.path)
|
271
|
+
@out = File.new(@in.path, "wb")
|
272
|
+
append(@out, 10)
|
273
|
+
end
|
274
|
+
appender.join
|
275
|
+
logger.join
|
272
276
|
assert_equal(15, lines.size)
|
273
|
-
|
277
|
+
assert reopened
|
274
278
|
end
|
275
279
|
|
276
280
|
def teardown
|
277
281
|
@in.close
|
278
282
|
@out.close
|
279
|
-
|
283
|
+
File.unlink(@out.path)
|
280
284
|
end
|
281
285
|
|
282
286
|
private
|
@@ -295,4 +299,3 @@ class TC_FileTail < Test::Unit::TestCase
|
|
295
299
|
file.flush
|
296
300
|
end
|
297
301
|
end
|
298
|
-
# vim: set noet sw=2 ts=2:
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: file-tail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Frank
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-08-21 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -19,33 +19,31 @@ executables: []
|
|
19
19
|
|
20
20
|
extensions: []
|
21
21
|
|
22
|
-
extra_rdoc_files:
|
23
|
-
|
22
|
+
extra_rdoc_files:
|
23
|
+
- doc-main.txt
|
24
24
|
files:
|
25
|
+
- CHANGES
|
26
|
+
- COPYING
|
27
|
+
- README
|
28
|
+
- Rakefile
|
29
|
+
- VERSION
|
30
|
+
- examples/pager.rb
|
31
|
+
- examples/tail.rb
|
32
|
+
- file-tail.gemspec
|
25
33
|
- install.rb
|
26
|
-
- lib
|
27
|
-
- lib/file
|
28
|
-
- lib/file/tail
|
29
|
-
- lib/file/tail/version.rb
|
30
34
|
- lib/file/tail.rb
|
35
|
+
- lib/file/tail/version.rb
|
31
36
|
- make_doc.rb
|
32
|
-
- README
|
33
|
-
- CHANGES
|
34
|
-
- VERSION
|
35
|
-
- tests
|
36
37
|
- tests/test_file-tail.rb
|
37
|
-
-
|
38
|
-
- GPL
|
39
|
-
- examples
|
40
|
-
- examples/tail.rb
|
41
|
-
- examples/pager.rb
|
38
|
+
- doc-main.txt
|
42
39
|
has_rdoc: true
|
43
40
|
homepage: http://file-tail.rubyforge.org
|
41
|
+
licenses: []
|
42
|
+
|
44
43
|
post_install_message:
|
45
44
|
rdoc_options:
|
46
|
-
- --
|
47
|
-
-
|
48
|
-
- --line-numbers
|
45
|
+
- --main
|
46
|
+
- doc-main.txt
|
49
47
|
require_paths:
|
50
48
|
- lib
|
51
49
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -63,9 +61,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
63
61
|
requirements: []
|
64
62
|
|
65
63
|
rubyforge_project: file-tail
|
66
|
-
rubygems_version: 1.
|
64
|
+
rubygems_version: 1.3.2
|
67
65
|
signing_key:
|
68
|
-
specification_version:
|
66
|
+
specification_version: 3
|
69
67
|
summary: File::Tail for Ruby
|
70
68
|
test_files:
|
71
69
|
- tests/test_file-tail.rb
|