nginx_utils 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -24,7 +24,7 @@ Or install it yourself as:
24
24
  require 'nginx_utils'
25
25
  ```
26
26
 
27
- Nginx log rotate:
27
+ Logrotate:
28
28
 
29
29
  ```
30
30
  params = {
@@ -35,13 +35,33 @@ params = {
35
35
  target_logs: "*.log",
36
36
  prefix: Time.now.strftime("%Y%m%d%H%M%S"),
37
37
  retention: 90,
38
- pid_file: "/usr/local/nginx/logs/nginx.pid"
38
+ pid_file: "/usr/local/nginx/logs/nginx.pid"
39
39
  }
40
40
 
41
41
  rotate = NginxUtils::Logrotate.new(params)
42
42
  rotate.execute
43
43
  ```
44
44
 
45
+ Status:
46
+
47
+ ```
48
+ p NginxUtils::Status.get # => {active_connection: 1, accepts: 4, handled: 5, requests: 51, reading: 1, writing: 3, waiting: 2}
49
+ ```
50
+
51
+ Logreader:
52
+
53
+ ```
54
+ reader = NginxUtils::Logreader.new("/path/to/nginx/logs/access.log")
55
+ reader.each do |line|
56
+ p line # => {time: "2013-05-19T08:13:14+00:00", host: "192.168.1.10", ...}
57
+ end
58
+ ```
59
+
60
+ Options that can be specified:
61
+
62
+ * :format => :ltsv or :combined
63
+ * :parser => Parse with scan method. Specified in Regexp.
64
+
45
65
  ## Contributing
46
66
 
47
67
  1. Fork it
@@ -0,0 +1,63 @@
1
+ # coding: utf-8
2
+
3
+ module NginxUtils
4
+ class Logreader
5
+ include Enumerable
6
+
7
+ def initialize(log, options={})
8
+ @log = File.open(log, "r")
9
+
10
+ if options[:parser]
11
+ if options[:parser].is_a? Regexp
12
+ @format = :custom
13
+ @parser = options[:parser]
14
+ else
15
+ raise ArgumentError, "invalid argument"
16
+ end
17
+ else
18
+ @format = options[:format] || :ltsv
19
+ end
20
+ end
21
+
22
+ def each
23
+ @log.each do |line|
24
+ yield parse(line.chomp)
25
+ end
26
+ end
27
+
28
+ private
29
+ def parse(line)
30
+ case @format
31
+ when :ltsv then
32
+ row = line.split("\t").map do |f|
33
+ c = f.split(":")
34
+ if c == 2
35
+ [c[0].to_sym, c[1]]
36
+ else
37
+ [c[0].to_sym, c[1..-1].join(":")]
38
+ end
39
+ end
40
+ Hash[row]
41
+ when :combined then
42
+ if /([0-9.]+)\s-\s([^\s]+)\s\[(.*?)\]\s"(.*?)"\s([0-9]+)\s([0-9]+)\s"(.*?)"\s"(.*?)".*/ =~ line
43
+ {
44
+ remote_addr: $1,
45
+ remote_user: $2,
46
+ time_local: $3,
47
+ request: $4,
48
+ status: $5,
49
+ body_bytes_sent: $6,
50
+ http_referer: $7,
51
+ http_user_agent: $8
52
+ }
53
+ else
54
+ {unknown: line}
55
+ end
56
+ when :custom then
57
+ line.scan @parser
58
+ else
59
+ raise "format error"
60
+ end
61
+ end
62
+ end
63
+ end
@@ -2,7 +2,9 @@
2
2
 
3
3
  module NginxUtils
4
4
  class Logrotate
5
- attr_accessor :logger, :rename_logs, :delete_logs
5
+ attr_accessor :logger
6
+ attr_accessor :rename_logs
7
+ attr_accessor :delete_logs
6
8
 
7
9
  def initialize(options={})
8
10
  # Debug
@@ -134,22 +136,22 @@ module NginxUtils
134
136
  @logger.debug "Nginx restart command: #{cmd}" if @logger
135
137
  if @execute
136
138
  if system(cmd)
137
- @logger.info "Nginx restart is successfully!" if @logger
139
+ @logger.info "Nginx restart is successfully" if @logger
138
140
  else
139
- @logger.error "Nginx restart failed!" if @logger
140
- raise "Nginx restart failed!" if @logger == false
141
+ @logger.error "Nginx restart failed" if @logger
142
+ raise "Nginx restart failed" if @logger == false
141
143
  end
142
144
  end
143
145
  else
144
- @logger.warn "Pid file is not found. not restart nginx. (#{@pid_file})" if @logger
146
+ @logger.warn "Pid file is not found. Do not restart nginx. (#{@pid_file})" if @logger
145
147
  end
146
148
  end
147
149
 
148
150
  def execute
149
- @logger.info "Nginx logrotate is started!" if @logger
151
+ @logger.info "Execute Nginx logrotate" if @logger
150
152
  rename
151
153
  delete
152
- @logger.info "Nginx logrotate is successfully!" if @logger
154
+ @logger.info "Nginx logrotate is successfully" if @logger
153
155
  restart
154
156
  end
155
157
 
@@ -1,3 +1,3 @@
1
1
  module NginxUtils
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/nginx_utils.rb CHANGED
@@ -5,4 +5,5 @@ require "net/http"
5
5
 
6
6
  require "nginx_utils/version"
7
7
  require "nginx_utils/logrotate"
8
+ require "nginx_utils/logreader"
8
9
  require "nginx_utils/status"
@@ -0,0 +1,126 @@
1
+ # coding: utf-8
2
+
3
+ require "spec_helper"
4
+
5
+ describe NginxUtils do
6
+ include FakeFS::SpecHelpers
7
+
8
+ def create_log(format)
9
+ log_dir = "/tmp"
10
+ FileUtils.mkdir_p log_dir
11
+
12
+ case format
13
+ when :ltsv then
14
+ line = "time:2013-05-19T08:13:14+00:00\thost:192.168.1.10\txff:-\tmethod:GET\tpath:/\tstatus:200\tua:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31\treq_size:124\treq_time:0.007\tres_size:239\tbody_size:11\tapp_time:-\n"
15
+ when :combined then
16
+ line = "192.168.1.10 - - [19/May/2013:23:14:04 +0900] \"GET / HTTP/1.1\" 200 239 \"-\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31\"\n"
17
+ else raise "format error"
18
+ end
19
+
20
+ File.open(File.join(log_dir, "access.log"), "w") do |f|
21
+ 3.times {f.write line}
22
+ end
23
+ end
24
+
25
+ before(:each) do
26
+ @log_file = "/tmp/access.log"
27
+ @parser = /([0-9.]+)\s-\s([^\s]+)\s\[(.*?)\]\s"(.*?)"\s([0-9]+)\s([0-9]+)\s"(.*?)"\s"(.*?)"\s"(.*)".*/
28
+ end
29
+
30
+ describe "Logreader" do
31
+ describe "#initialize" do
32
+ context "with default parameters" do
33
+ before(:each) do
34
+ create_log(:ltsv)
35
+ @reader = NginxUtils::Logreader.new(@log_file)
36
+ end
37
+
38
+ it "specified file should be opened" do
39
+ expect(@reader.instance_eval{@log}.path).to eq(@log_file)
40
+ end
41
+
42
+ it "default format should be ltsv" do
43
+ expect(@reader.instance_eval{@format}).to eq(:ltsv)
44
+ end
45
+
46
+ it "default parser should be nil" do
47
+ expect(@reader.instance_eval{@parser}).to eq(nil)
48
+ end
49
+ end
50
+
51
+ context "with custom parameters" do
52
+ before(:each) do
53
+ create_log(:combined)
54
+ end
55
+
56
+ it "format should be specified parameter" do
57
+ reader = NginxUtils::Logreader.new(@log_file, format: :combined)
58
+ expect(reader.instance_eval{@format}).to eq(:combined)
59
+ end
60
+
61
+ it "parser should be specified parameter" do
62
+ reader = NginxUtils::Logreader.new(@log_file, parser: @parser)
63
+ expect(reader.instance_eval{@parser}).to eq(@parser)
64
+ end
65
+
66
+ it "format should be :custom if specified parser" do
67
+ reader = NginxUtils::Logreader.new(@log_file, parser: @parser)
68
+ expect(reader.instance_eval{@format}).to eq(:custom)
69
+ end
70
+
71
+ it "should create exception if parser is not Regexp instance" do
72
+ expect(proc{NginxUtils::Logreader.new(@log_file, parser: "invalid parser")}).to raise_error("invalid argument")
73
+ end
74
+ end
75
+ end
76
+
77
+ describe "#each" do
78
+ context "with ltsv log" do
79
+ it "return ltsv hash" do
80
+ create_log(:ltsv)
81
+ reader = NginxUtils::Logreader.new(@log_file)
82
+ ltsv_hash = {
83
+ time: "2013-05-19T08:13:14+00:00",
84
+ host: "192.168.1.10",
85
+ xff:"-",
86
+ method: "GET",
87
+ path: "/",
88
+ status: "200",
89
+ ua: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31",
90
+ req_size: "124",
91
+ req_time: "0.007",
92
+ res_size: "239",
93
+ body_size: "11",
94
+ app_time: "-"
95
+ }
96
+ reader.each {|line| expect(line).to eq(ltsv_hash)}
97
+ end
98
+ end
99
+
100
+ context "with combined log" do
101
+ it "return combined hash" do
102
+ create_log(:combined)
103
+ reader = NginxUtils::Logreader.new(@log_file, format: :combined)
104
+ combined_hash = {
105
+ remote_addr: "192.168.1.10",
106
+ remote_user: "-",
107
+ time_local: "19/May/2013:23:14:04 +0900",
108
+ request: "GET / HTTP/1.1",
109
+ status: "200",
110
+ body_bytes_sent: "239",
111
+ http_referer: "-",
112
+ http_user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31"
113
+ }
114
+ reader.each {|line| expect(line).to eq(combined_hash)}
115
+ end
116
+
117
+ it "return unknown log if parse error" do
118
+ create_log(:combined)
119
+ File.open(@log_file, "w") {|f| f.write "unknown log"}
120
+ reader = NginxUtils::Logreader.new(@log_file, format: :combined)
121
+ reader.each {|line| expect(line).to eq({unknown: "unknown log"})}
122
+ end
123
+ end
124
+ end
125
+ end
126
+ end
@@ -5,21 +5,21 @@ require "spec_helper"
5
5
  describe NginxUtils do
6
6
  include FakeFS::SpecHelpers
7
7
 
8
- def create_files(options={retention: 90})
9
- root_dir = options[:root_dir] || "/usr/local/nginx/logs"
8
+ def create_files
9
+ root_dir = "/usr/local/nginx/logs"
10
10
  FileUtils.mkdir_p root_dir
11
- not_del = Time.now - ((options[:retention].to_i - 1) * 3600 * 24)
12
- do_del = Time.now - ((options[:retention].to_i + 1) * 3600 * 24)
11
+ FileUtils.mkdir_p "/tmp"
12
+ not_del = Time.now - (89 * 3600 * 24)
13
+ do_del = Time.now - (91 * 3600 * 24)
13
14
  not_del_file = "access.log.#{not_del.strftime('%Y%m%d%H%M%S')}"
14
15
  do_del_file = "access.log.#{do_del.strftime('%Y%m%d%H%M%S')}"
15
- files = [
16
+ [
16
17
  "access.log",
17
18
  "error.log",
18
19
  "nginx.pid",
19
20
  not_del_file,
20
21
  do_del_file
21
- ]
22
- files.each{|f| File.open(File.join(root_dir, f), "w").close}
22
+ ].each{|f| File.open(File.join(root_dir, f), "w").close}
23
23
  File.utime(not_del, not_del, File.join(root_dir, not_del_file))
24
24
  File.utime(do_del, do_del, File.join(root_dir, do_del_file))
25
25
  {
@@ -28,8 +28,12 @@ describe NginxUtils do
28
28
  }
29
29
  end
30
30
 
31
+ def log_lines
32
+ File.open("/tmp/nginx_rotate.log").read.split("\n")
33
+ end
34
+
31
35
  before(:each) do
32
- FileUtils.mkdir_p "/tmp"
36
+ @created = create_files
33
37
  @script_log = File.open("/tmp/nginx_rotate.log", "a")
34
38
  end
35
39
 
@@ -37,15 +41,11 @@ describe NginxUtils do
37
41
  describe "#initialize" do
38
42
  before(:each) do
39
43
  @time_now = Time.now
40
- Time.stub!(:now).and_return(@time_now)
44
+ Time.stub(:now).and_return(@time_now)
45
+ @rotate = NginxUtils::Logrotate.new(script_log: @script_log)
41
46
  end
42
47
 
43
48
  context "with default params" do
44
- before(:each) do
45
- create_files
46
- @rotate = NginxUtils::Logrotate.new(script_log: @script_log)
47
- end
48
-
49
49
  it "@execute should be true" do
50
50
  expect(@rotate.instance_eval{@execute}).to eq(true)
51
51
  end
@@ -154,7 +154,7 @@ describe NginxUtils do
154
154
  describe "#config" do
155
155
  before(:each) do
156
156
  @time_now = Time.now
157
- Time.stub!(:now).and_return(@time_now)
157
+ Time.stub(:now).and_return(@time_now)
158
158
  @rotate = NginxUtils::Logrotate.new(script_log: @script_log)
159
159
  end
160
160
 
@@ -225,60 +225,49 @@ describe NginxUtils do
225
225
 
226
226
  describe "#rename" do
227
227
  before(:each) do
228
- create_files
229
- @rotate = NginxUtils::Logrotate.new(script_log: @script_log)
228
+ @prefix = Time.now.strftime('%Y%m%d%H%M%S')
229
+ @rotate = NginxUtils::Logrotate.new(script_log: @script_log, prefix: @prefix)
230
230
  end
231
231
 
232
232
  it "rename target logs" do
233
- prefix = Time.now.strftime('%Y%m%d%H%M%S')
234
- @rotate.config prefix: prefix
235
233
  @rotate.rename
236
234
  @rotate.rename_logs.each do |log|
237
235
  expect(File.exists? log).to eq(false)
238
- expect(File.exists? "#{log}.#{prefix}").to eq(true)
236
+ expect(File.exists? "#{log}.#{@prefix}").to eq(true)
239
237
  end
240
238
  end
241
239
 
242
240
  it "output log file" do
243
241
  @rotate.rename
244
- log_lines = File.open("/tmp/nginx_rotate.log").read.split("\n")
245
242
  expect(log_lines.size).to eq(@rotate.rename_logs.size)
243
+ expect(log_lines.select{|l| /Rename log file/ =~ l}.size).to eq(@rotate.rename_logs.size)
246
244
  end
247
245
 
248
246
  it "do not rename if a file with the same name exists" do
249
- prefix = Time.now.strftime('%Y%m%d%H%M%S')
250
- @rotate.config prefix: prefix
251
- File.open("#{@rotate.rename_logs.first}.#{prefix}", "w").close
247
+ File.open("#{@rotate.rename_logs.first}.#{@prefix}", "w").close
252
248
  @rotate.rename
253
- log_lines = File.open("/tmp/nginx_rotate.log").read.split("\n")
254
249
  expect(File.exists? @rotate.rename_logs.first).to eq(true)
255
250
  expect(log_lines.select{|line| /File already exists/ =~ line}.size).to eq(1)
256
251
  end
257
252
 
258
253
  it "do not rename if not executable" do
259
- prefix = Time.now.strftime('%Y%m%d%H%M%S')
260
- @rotate.config debug: true, script_log: false, prefix: prefix
254
+ @rotate.config debug: true, script_log: false
261
255
  @rotate.rename
262
256
  @rotate.rename_logs.each do |log|
263
257
  expect(File.exists? log).to eq(true)
264
- expect(File.exists? "#{log}.#{prefix}").to eq(false)
258
+ expect(File.exists? "#{log}.#{@prefix}").to eq(false)
265
259
  end
266
260
  end
267
261
 
268
262
  it "do not output log if script_log is false" do
269
263
  @rotate.config script_log: false
270
264
  @rotate.rename
271
- log_lines = File.open("/tmp/nginx_rotate.log").read.split("\n")
272
265
  expect(log_lines.size).to eq(0)
273
266
  end
274
267
  end
275
268
 
276
269
  describe "#delete" do
277
270
  before(:each) do
278
- @time_now = Time.now
279
- Time.stub!(:now).and_return(@time_now)
280
- @retention = @time_now - (90 * 3600 * 24)
281
- @created = create_files
282
271
  @rotate = NginxUtils::Logrotate.new(script_log: @script_log)
283
272
  end
284
273
 
@@ -290,89 +279,101 @@ describe NginxUtils do
290
279
 
291
280
  it "output log file" do
292
281
  @rotate.delete
293
- log_lines = File.open("/tmp/nginx_rotate.log").read.split("\n")
294
282
  expect(log_lines.size).to eq(1)
295
283
  end
296
284
 
297
285
  it "do not delete if not executable" do
286
+ File.should_not_receive(:unlink)
298
287
  @rotate.config debug: true, script_log: false
299
288
  @rotate.delete
300
- expect(File.exists? @created[:do_del_file]).to eq(true)
301
289
  end
302
290
 
303
291
  it "do not output log if script_log is false" do
304
292
  @rotate.config script_log: false
305
293
  @rotate.delete
306
- log_lines = File.open("/tmp/nginx_rotate.log").read.split("\n")
307
294
  expect(log_lines.size).to eq(0)
308
295
  end
309
296
  end
310
297
 
311
298
  describe "#restart" do
312
299
  before(:each) do
313
- @command = "kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`"
314
- create_files
300
+ Object.any_instance.stub(:system).and_return(true)
315
301
  @rotate = NginxUtils::Logrotate.new(script_log: @script_log)
316
302
  end
317
303
 
318
304
  it "should execute command" do
319
- Object.any_instance.should_receive(:system).with(@command).and_return(true)
305
+ Object.any_instance.should_receive(:system).and_return(true)
306
+ @rotate.restart
307
+ end
308
+
309
+ it "output success log" do
320
310
  @rotate.restart
321
- log_lines = File.open("/tmp/nginx_rotate.log").read.split("\n")
322
- expect(log_lines.select{|line| /Nginx restart is successfully!/ =~ line}.size).to eq(1)
311
+ expect(log_lines.select{|l| /Nginx restart command/ =~ l}.size).to eq(1)
312
+ expect(log_lines.select{|l| /Nginx restart is successfully/ =~ l}.size).to eq(1)
323
313
  end
324
314
 
325
315
  it "do not execute command if not exists pid file" do
326
- File.stub!(:exists?).and_return(false)
316
+ Object.any_instance.should_not_receive(:system)
317
+ File.stub(:exists?).and_return(false)
327
318
  @rotate.restart
328
- log_lines = File.open("/tmp/nginx_rotate.log").read.split("\n")
329
- expect(log_lines.select{|line| /Pid file is not found/ =~ line}.size).to eq(1)
319
+ end
320
+
321
+ it "should output log if not exists pid file" do
322
+ File.stub(:exists?).and_return(false)
323
+ @rotate.restart
324
+ expect(log_lines.select{|l| /Pid file is not found/ =~ l}.size).to eq(1)
330
325
  end
331
326
 
332
327
  it "do not execute commando if not executable" do
333
- @rotate.config debug: true, script_log: @script_log
328
+ Object.any_instance.should_not_receive(:system)
329
+ @rotate.config debug: true, script_log: false
334
330
  @rotate.restart
335
- log_lines = File.open("/tmp/nginx_rotate.log").read.split("\n")
336
- expect(log_lines.size).to eq(1)
337
331
  end
338
332
 
339
333
  it "should outputs error log if it fails" do
340
- Object.any_instance.should_receive(:system).with(@command).and_return(false)
334
+ Object.any_instance.should_receive(:system).and_return(false)
341
335
  @rotate.restart
342
- log_lines = File.open("/tmp/nginx_rotate.log").read.split("\n")
343
- expect(log_lines.select{|line| /Nginx restart failed!/ =~ line}.size).to eq(1)
336
+ expect(log_lines.select{|l| /Nginx restart failed/ =~ l}.size).to eq(1)
344
337
  end
345
338
 
346
339
  it "should generate an exception if it fails" do
340
+ Object.any_instance.should_receive(:system).and_return(false)
347
341
  @rotate.config script_log: false
348
- Object.any_instance.should_receive(:system).with(@command).and_return(false)
349
- expect(proc{@rotate.restart}).to raise_error
342
+ expect(proc{@rotate.restart}).to raise_error("Nginx restart failed")
343
+ end
344
+
345
+ it "do not output log if script_log is false" do
346
+ @rotate.config script_log: false
347
+ @rotate.restart
348
+ expect(log_lines.size).to eq(0)
350
349
  end
351
350
  end
352
351
 
353
352
  describe "#execute" do
354
353
  before(:each) do
355
- NginxUtils::Logrotate.any_instance.should_receive(:rename).and_return(true)
356
- NginxUtils::Logrotate.any_instance.should_receive(:delete).and_return(true)
357
- NginxUtils::Logrotate.any_instance.should_receive(:restart).and_return(true)
358
- create_files
354
+ NginxUtils::Logrotate.any_instance.stub(:rename).and_return(true)
355
+ NginxUtils::Logrotate.any_instance.stub(:delete).and_return(true)
356
+ NginxUtils::Logrotate.any_instance.stub(:restart).and_return(true)
359
357
  @rotate = NginxUtils::Logrotate.new(script_log: @script_log)
360
358
  end
361
359
 
362
- it "should call methods" do
360
+ it "should call rename and delete and restart methods" do
361
+ NginxUtils::Logrotate.any_instance.should_receive(:rename).and_return(true)
362
+ NginxUtils::Logrotate.any_instance.should_receive(:delete).and_return(true)
363
+ NginxUtils::Logrotate.any_instance.should_receive(:restart).and_return(true)
363
364
  @rotate.execute
364
365
  end
365
366
 
366
367
  it "output log file" do
367
368
  @rotate.execute
368
- log_lines = File.open("/tmp/nginx_rotate.log").read.split("\n")
369
+ expect(log_lines.select{|l| /Execute Nginx logrotate/ =~ l}.size).to eq(1)
370
+ expect(log_lines.select{|l| /Nginx logrotate is successfully/ =~ l}.size).to eq(1)
369
371
  expect(log_lines.size).to eq(2)
370
372
  end
371
373
 
372
374
  it "do not output log if script_log is false" do
373
375
  @rotate.config script_log: false
374
376
  @rotate.execute
375
- log_lines = File.open("/tmp/nginx_rotate.log").read.split("\n")
376
377
  expect(log_lines.size).to eq(0)
377
378
  end
378
379
  end
@@ -8,14 +8,14 @@ describe NginxUtils do
8
8
  it "should get status" do
9
9
  body = "Active connections: 1 \nserver accepts handled requests\n 4 5 51 \nReading: 1 Writing: 3 Waiting: 2 \n"
10
10
  status = {active_connection: 1, accepts: 4, handled: 5, requests: 51, reading: 1, writing: 3, waiting: 2}
11
- response = OpenStruct.new(body: body)
11
+ response = double("http response mock", body: body)
12
12
  Net::HTTP.should_receive(:start).and_return(response)
13
13
  expect(NginxUtils::Status.get).to eq(status)
14
14
  end
15
15
 
16
16
  it "should generate an exception if status get fails" do
17
- res = OpenStruct.new(body: "invalid content")
18
- Net::HTTP.should_receive(:start).and_return(res)
17
+ response = double("http response mock", body: "invalid content")
18
+ Net::HTTP.should_receive(:start).and_return(response)
19
19
  expect(proc{NginxUtils::Status.get}).to raise_error("Nginx status get failed")
20
20
  end
21
21
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,2 @@
1
1
  require "fakefs/spec_helpers"
2
- require "ostruct"
3
2
  require "nginx_utils"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nginx_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-19 00:00:00.000000000 Z
12
+ date: 2013-05-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -89,10 +89,12 @@ files:
89
89
  - README.md
90
90
  - Rakefile
91
91
  - lib/nginx_utils.rb
92
+ - lib/nginx_utils/logreader.rb
92
93
  - lib/nginx_utils/logrotate.rb
93
94
  - lib/nginx_utils/status.rb
94
95
  - lib/nginx_utils/version.rb
95
96
  - nginx_utils.gemspec
97
+ - spec/nginx_utils/logreader_spec.rb
96
98
  - spec/nginx_utils/logrotate_spec.rb
97
99
  - spec/nginx_utils/status_spec.rb
98
100
  - spec/spec_helper.rb
@@ -111,7 +113,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
111
113
  version: '0'
112
114
  segments:
113
115
  - 0
114
- hash: 17147575815869233
116
+ hash: -10429621290292328
115
117
  required_rubygems_version: !ruby/object:Gem::Requirement
116
118
  none: false
117
119
  requirements:
@@ -120,14 +122,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
122
  version: '0'
121
123
  segments:
122
124
  - 0
123
- hash: 17147575815869233
125
+ hash: -10429621290292328
124
126
  requirements: []
125
127
  rubyforge_project:
126
- rubygems_version: 1.8.23
128
+ rubygems_version: 1.8.25
127
129
  signing_key:
128
130
  specification_version: 3
129
131
  summary: Nginx utilities
130
132
  test_files:
133
+ - spec/nginx_utils/logreader_spec.rb
131
134
  - spec/nginx_utils/logrotate_spec.rb
132
135
  - spec/nginx_utils/status_spec.rb
133
136
  - spec/spec_helper.rb