ralf 1.0.0 → 1.1.0

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/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm --create ruby-1.8.7-p249@ralf
data/README.rdoc CHANGED
@@ -123,4 +123,6 @@ install the ralf gem.
123
123
  = Authors
124
124
  Authors: {Leon Berenschot}[http://github.com/LeipeLeon] and {K.J. Wierenga}[http://github.com/kjwierenga]
125
125
 
126
+ Contributers: {Victor Castell}[http://github.com/victorcoder]
127
+
126
128
  This program is used for {kerkdienstgemist.nl}[http://kerkdienstgemist.nl] {Amazon S3}[http://aws.amazon.com/s3/] log file processing.
data/Rakefile CHANGED
@@ -15,11 +15,11 @@ begin
15
15
  gem.homepage = "http://github.com/kjwierenga/ralf"
16
16
  gem.authors = ["Klaas Jan Wierenga", "Leon Berenschot"]
17
17
 
18
- gem.add_development_dependency 'rspec', '>= 1.3.0'
19
- gem.add_development_dependency 'fakeweb', '>= 1.2.8'
18
+ gem.add_development_dependency 'rspec', '~> 1.3.0'
19
+ gem.add_development_dependency 'fakeweb', '~> 1.2.8'
20
20
 
21
- gem.add_dependency 'right_aws', '>= 1.10.0'
22
- gem.add_dependency 'logmerge', '>= 1.0.2'
21
+ gem.add_dependency 'right_aws', '~> 1.10.0'
22
+ gem.add_dependency 'logmerge', '~> 1.0.2'
23
23
  gem.add_dependency 'chronic', '>= 0.2.3'
24
24
 
25
25
  gem.rdoc_options << '--exclude' << '.'
@@ -27,24 +27,30 @@ begin
27
27
  end
28
28
  Jeweler::GemcutterTasks.new
29
29
  rescue LoadError
30
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
30
+ puts "Warning: Jeweler (or a dependency) not available."
31
+ puts " Check dependencies with `rake check_dependencies`."
31
32
  end
32
33
 
33
- require 'spec/rake/spectask'
34
- Spec::Rake::SpecTask.new(:spec) do |spec|
35
- spec.libs << 'lib' << 'spec'
36
- spec.spec_files = FileList['spec/**/*_spec.rb']
37
- end
34
+ begin
35
+ require 'spec/rake/spectask'
36
+ Spec::Rake::SpecTask.new(:spec) do |spec|
37
+ spec.libs << 'lib' << 'spec'
38
+ spec.spec_files = FileList['spec/**/*_spec.rb']
39
+ end
38
40
 
39
- Spec::Rake::SpecTask.new(:rcov) do |spec|
40
- spec.libs << 'lib' << 'spec'
41
- spec.pattern = 'spec/**/*_spec.rb'
42
- spec.rcov = true
43
- end
41
+ Spec::Rake::SpecTask.new(:rcov) do |spec|
42
+ spec.libs << 'lib' << 'spec'
43
+ spec.pattern = 'spec/**/*_spec.rb'
44
+ spec.rcov = true
45
+ end
44
46
 
45
- task :spec => :check_dependencies
47
+ task :spec => :check_dependencies
46
48
 
47
- task :default => :spec
49
+ task :default => :spec
50
+ rescue LoadError
51
+ puts "Warning: Rspec not available."
52
+ puts " Check dependencies with `rake check_dependencies`."
53
+ end
48
54
 
49
55
  require 'rake/rdoctask'
50
56
  Rake::RDocTask.new do |rdoc|
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.0
data/lib/ralf.rb CHANGED
@@ -1,10 +1,12 @@
1
1
  require 'rubygems'
2
2
  require 'right_aws'
3
3
  require 'logmerge'
4
- require 'ftools'
4
+ require 'fileutils'
5
5
  require 'ralf/config'
6
6
  require 'ralf/bucket'
7
7
  require 'chronic'
8
+ require 'stringio'
9
+ require 'date'
8
10
 
9
11
  class Ralf
10
12
 
@@ -17,6 +19,7 @@ class Ralf
17
19
  USER_DEFAULT_CONFIG_FILE = '~/.ralf.conf'
18
20
 
19
21
  AMAZON_LOG_FORMAT = Regexp.new('([^ ]*) ([^ ]*) \[([^\]]*)\] ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) "([^"]*)" ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) "([^"]*)" "([^"]*)"')
22
+ AMAZON_LOG_FORMAT_COPY = Regexp.new('([^ ]*) ([^ ]*) \[([^\]]*)\] ([^ ]*) ([^ ]*) ([^ ]*) (REST.COPY.OBJECT_GET) ([^ ]*) (-) ([^ ]*) (-) (-) ([^ ]*) (-) (-) (-) (-) (-)')
20
23
 
21
24
  # The current configuration.
22
25
  attr_reader :config
@@ -81,7 +84,7 @@ class Ralf
81
84
  merged_log = output_log + ".alf"
82
85
 
83
86
  # create directory for output file
84
- File.makedirs(File.dirname(merged_log))
87
+ FileUtils.mkdir_p(File.dirname(merged_log))
85
88
 
86
89
  # merge the log files
87
90
  Ralf.merge(merged_log, log_files)
@@ -109,7 +112,7 @@ class Ralf
109
112
 
110
113
  # Download log files for +bucket+ and +date+ to +dir+.
111
114
  def self.download_logs(bucket, date, dir)
112
- File.makedirs(dir)
115
+ FileUtils.mkdir_p(dir)
113
116
 
114
117
  # iterate over the available log files, saving them to disk and
115
118
  log_files = []
@@ -134,7 +137,9 @@ class Ralf
134
137
  out_file = File.open(output_log, 'w')
135
138
  File.open(input_log, 'r') do |in_file|
136
139
  while (line = in_file.gets)
137
- out_file.puts(translate_to_clf(line))
140
+ if clf = translate_to_clf(line)
141
+ out_file.puts(clf)
142
+ end
138
143
  end
139
144
  end
140
145
  out_file.close
@@ -142,10 +147,13 @@ class Ralf
142
147
 
143
148
  def self.translate_to_clf(line)
144
149
  if line =~ AMAZON_LOG_FORMAT
145
- # host, date, ip, acl, request, status, bytes, agent = $2, $3, $4, $5, $9, $10, $12, $17
146
- "%s - %s [%s] \"%s\" %d %s \"%s\" \"%s\"" % [$4, $5, $3, $9, $10, $12, $16, $17]
150
+ # host, date, ip, acl, request, status, bytes, agent, total_time_ms = $2, $3, $4, $5, $9, $10, $12, $17, $14
151
+ "%s - %s [%s] \"%s\" %s %s \"%s\" \"%s\" %d" % [$4, $5, $3, $9, $10, $12, $16, $17, ($14.to_i/1000.0).round]
152
+ elsif line =~ AMAZON_LOG_FORMAT_COPY
153
+ "%s - %s [%s] \"%s\" %s %s \"%s\" \"REST.COPY.OBJECT_GET\" %d" % [$4, $5, $3, "POST /#{$8} HTTP/1.1", $10, $12, $16, 0]
147
154
  else
148
155
  $stderr.puts "# ERROR: #{line}"
156
+ nil
149
157
  end
150
158
  end
151
159
 
data/lib/ralf/config.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'ralf/interpolation'
2
+ require 'yaml'
2
3
 
3
4
  class Ralf::Config
4
5
 
data/ralf.gemspec ADDED
@@ -0,0 +1,77 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{ralf}
8
+ s.version = "1.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Klaas Jan Wierenga", "Leon Berenschot"]
12
+ s.date = %q{2011-05-09}
13
+ s.default_executable = %q{ralf}
14
+ s.description = %q{ Download logfiles from Amazon S3 buckets to local disk and combine them in one Apache CLF per bucket
15
+ }
16
+ s.email = ["k.j.wierenga@gmail.com", "leonb@beriedata.nl"]
17
+ s.executables = ["ralf"]
18
+ s.extra_rdoc_files = [
19
+ "README.rdoc"
20
+ ]
21
+ s.files = [
22
+ ".rvmrc",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "bin/ralf",
27
+ "lib/ralf.rb",
28
+ "lib/ralf/bucket.rb",
29
+ "lib/ralf/config.rb",
30
+ "lib/ralf/interpolation.rb",
31
+ "lib/ralf/log.rb",
32
+ "lib/ralf/option_parser.rb",
33
+ "ralf.gemspec",
34
+ "spec/fixtures/apache.log",
35
+ "spec/fixtures/example_buckets.yaml",
36
+ "spec/ralf/bucket_spec.rb",
37
+ "spec/ralf/config_spec.rb",
38
+ "spec/ralf/interpolation_spec.rb",
39
+ "spec/ralf/log_spec.rb",
40
+ "spec/ralf/option_parser_spec.rb",
41
+ "spec/ralf_spec.rb",
42
+ "spec/spec.opts",
43
+ "spec/spec_helper.rb",
44
+ "spec/support/fakeweb.rb"
45
+ ]
46
+ s.homepage = %q{http://github.com/kjwierenga/ralf}
47
+ s.rdoc_options = ["--exclude", "."]
48
+ s.require_paths = ["lib"]
49
+ s.rubygems_version = %q{1.3.7}
50
+ s.summary = %q{Retrieve Amazon Log Files}
51
+
52
+ if s.respond_to? :specification_version then
53
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
54
+ s.specification_version = 3
55
+
56
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
57
+ s.add_development_dependency(%q<rspec>, ["~> 1.3.0"])
58
+ s.add_development_dependency(%q<fakeweb>, ["~> 1.2.8"])
59
+ s.add_runtime_dependency(%q<right_aws>, ["~> 1.10.0"])
60
+ s.add_runtime_dependency(%q<logmerge>, ["~> 1.0.2"])
61
+ s.add_runtime_dependency(%q<chronic>, [">= 0.2.3"])
62
+ else
63
+ s.add_dependency(%q<rspec>, ["~> 1.3.0"])
64
+ s.add_dependency(%q<fakeweb>, ["~> 1.2.8"])
65
+ s.add_dependency(%q<right_aws>, ["~> 1.10.0"])
66
+ s.add_dependency(%q<logmerge>, ["~> 1.0.2"])
67
+ s.add_dependency(%q<chronic>, [">= 0.2.3"])
68
+ end
69
+ else
70
+ s.add_dependency(%q<rspec>, ["~> 1.3.0"])
71
+ s.add_dependency(%q<fakeweb>, ["~> 1.2.8"])
72
+ s.add_dependency(%q<right_aws>, ["~> 1.10.0"])
73
+ s.add_dependency(%q<logmerge>, ["~> 1.0.2"])
74
+ s.add_dependency(%q<chronic>, [">= 0.2.3"])
75
+ end
76
+ end
77
+
data/spec/ralf_spec.rb CHANGED
@@ -255,7 +255,7 @@ describe Ralf do
255
255
  @example_buckets[name]
256
256
  end
257
257
 
258
- File.stub(:makedirs)
258
+ FileUtils.stub(:mkdir_p)
259
259
  ralf = Ralf.new(@valid_options.merge(:cache_dir => '/var/log/s3/cache/:bucket',
260
260
  :output_file => '/var/log/s3/:bucket.log',
261
261
  :buckets => 'test1',
@@ -313,22 +313,31 @@ describe Ralf do
313
313
 
314
314
  it "should convert output files to common_log_format" do
315
315
  input_log = StringIO.new
316
+
317
+ # last two lines are ignored because they don't match
316
318
  input_log.string = <<EOF_INPUT
317
319
  2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 assets.staging.kerkdienstgemist.nl [10/Feb/2010:07:17:01 +0000] 10.32.219.38 3272ee65a908a7677109fedda345db8d9554ba26398b2ca10581de88777e2b61 784FD457838EFF42 REST.GET.ACL - "GET /?acl HTTP/1.1" 200 - 1384 - 399 - "-" "Jakarta Commons-HttpClient/3.0" -
318
320
  2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 assets.staging.kerkdienstgemist.nl [10/Feb/2010:07:17:02 +0000] 10.32.219.38 3272ee65a908a7677109fedda345db8d9554ba26398b2ca10581de88777e2b61 6E239BC5A4AC757C SOAP.PUT.OBJECT logs/2010-02-10-07-17-02-F6EFD00DAB9A08B6 "POST /soap/ HTTP/1.1" 200 - 797 686 63 31 "-" "Axis/1.3" -
319
321
  2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 assets.staging.kerkdienstgemist.nl [10/Feb/2010:07:24:40 +0000] 10.217.37.15 - 0B76C90B3634290B REST.GET.ACL - "GET /?acl HTTP/1.1" 307 TemporaryRedirect 488 - 7 - "-" "Jakarta Commons-HttpClient/3.0" -
322
+ 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 media.staging.kerkdienstgemist.nl [17/Sep/2010:13:38:36 +0000] 85.113.244.146 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 71F7D2AAA93B0A05 REST.COPY.OBJECT_GET 10010150/2010-08-29-0930.mp3 - 200 - - 13538337 - - - - -
323
+ 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 media.staging.kerkdienstgemist.nl [17/Sep/2010:13:38:37 +0000] 85.113.244.146 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 7CC5E3D09AE78CAE REST.COPY.OBJECT_GET 10010150/2010-09-05-1000.mp3 - 200 - - 9860402 - - - - -
320
324
  EOF_INPUT
321
325
 
322
326
  clf_log =<<EOF_OUTPUT
323
- 10.32.219.38 - 3272ee65a908a7677109fedda345db8d9554ba26398b2ca10581de88777e2b61 [10/Feb/2010:07:17:01 +0000] "GET /?acl HTTP/1.1" 200 1384 "-" "Jakarta Commons-HttpClient/3.0"
324
- 10.32.219.38 - 3272ee65a908a7677109fedda345db8d9554ba26398b2ca10581de88777e2b61 [10/Feb/2010:07:17:02 +0000] "POST /soap/ HTTP/1.1" 200 797 "-" "Axis/1.3"
325
- 10.217.37.15 - - [10/Feb/2010:07:24:40 +0000] "GET /?acl HTTP/1.1" 307 488 "-" "Jakarta Commons-HttpClient/3.0"
327
+ 10.32.219.38 - 3272ee65a908a7677109fedda345db8d9554ba26398b2ca10581de88777e2b61 [10/Feb/2010:07:17:01 +0000] "GET /?acl HTTP/1.1" 200 1384 "-" "Jakarta Commons-HttpClient/3.0" 0
328
+ 10.32.219.38 - 3272ee65a908a7677109fedda345db8d9554ba26398b2ca10581de88777e2b61 [10/Feb/2010:07:17:02 +0000] "POST /soap/ HTTP/1.1" 200 797 "-" "Axis/1.3" 0
329
+ 10.217.37.15 - - [10/Feb/2010:07:24:40 +0000] "GET /?acl HTTP/1.1" 307 488 "-" "Jakarta Commons-HttpClient/3.0" 0
330
+ 85.113.244.146 - 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 [17/Sep/2010:13:38:36 +0000] "POST /10010150/2010-08-29-0930.mp3 HTTP/1.1" 200 - "-" "REST.COPY.OBJECT_GET" 0
331
+ 85.113.244.146 - 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 [17/Sep/2010:13:38:37 +0000] "POST /10010150/2010-09-05-1000.mp3 HTTP/1.1" 200 - "-" "REST.COPY.OBJECT_GET" 0
326
332
  EOF_OUTPUT
327
333
 
328
334
  output_log = StringIO.new
329
335
 
330
336
  File.should_receive(:open).with('input_file', 'r').and_yield(input_log)
331
337
  File.should_receive(:open).with('output_file', 'w').and_return(output_log)
338
+
339
+ # $stderr.should_receive(:puts).with("# ERROR: 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 media.staging.kerkdienstgemist.nl [17/Sep/2010:13:38:36 +0000] 85.113.244.146 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 71F7D2AAA93B0A05 REST.COPY.OBJECT_GET 10010150/2010-08-29-0930.mp3 - 200 - - 13538337 - - - - -\n")
340
+ # $stderr.should_receive(:puts).with("# ERROR: 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 media.staging.kerkdienstgemist.nl [17/Sep/2010:13:38:37 +0000] 85.113.244.146 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 7CC5E3D09AE78CAE REST.COPY.OBJECT_GET 10010150/2010-09-05-1000.mp3 - 200 - - 9860402 - - - - -\n")
332
341
 
333
342
  Ralf.convert_to_common_log_format('input_file', 'output_file')
334
343
  output_log.string.should eql(clf_log)
@@ -341,6 +350,13 @@ EOF_OUTPUT
341
350
  $stderr.string.should eql("# ERROR: #{invalid_line}\n")
342
351
  end
343
352
 
353
+ it "should add rounded total_time in seconds" do
354
+ $stderr = StringIO.new
355
+ input_line = '2010-10-02-19-15-45-6879098C3140BE9D:2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 media.kerkdienstgemist.nl [02/Oct/2010:18:29:16 +0000] 82.168.113.55 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 4F911681022807C6 REST.GET.OBJECT 10028050/2010-09-26-1830.mp3 "GET /10028050/2010-09-26-1830.mp3?Signature=E3ehd6nkXjNg7vr%2F4b3LtxCWads%3D&Expires=1286051333&AWSAccessKeyId=AKIAI3XHXJPFSJW2UQAQ HTTP/1.1" 206 - 4194304 17537676 1600 12 "-" "VLC media player - version 1.0.5 Goldeneye - (c) 1996-2010 the VideoLAN team" -'
356
+ Ralf.translate_to_clf(input_line).should eql("82.168.113.55 - 2cf7e6b06335c0689c6d29163df5bb001c96870cd78609e3845f1ed76a632621 [02/Oct/2010:18:29:16 +0000] \"GET /10028050/2010-09-26-1830.mp3?Signature=E3ehd6nkXjNg7vr%2F4b3LtxCWads%3D&Expires=1286051333&AWSAccessKeyId=AKIAI3XHXJPFSJW2UQAQ HTTP/1.1\" 206 4194304 \"-\" \"VLC media player - version 1.0.5 Goldeneye - (c) 1996-2010 the VideoLAN team\" 2")
357
+ $stderr.string.should be_empty
358
+ end
359
+
344
360
  end
345
361
 
346
362
  end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ralf
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 19
4
5
  prerelease: false
5
6
  segments:
6
7
  - 1
8
+ - 1
7
9
  - 0
8
- - 0
9
- version: 1.0.0
10
+ version: 1.1.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Klaas Jan Wierenga
@@ -15,16 +16,18 @@ autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
17
18
 
18
- date: 2010-05-21 00:00:00 +02:00
19
+ date: 2011-05-09 00:00:00 +02:00
19
20
  default_executable: ralf
20
21
  dependencies:
21
22
  - !ruby/object:Gem::Dependency
22
23
  name: rspec
23
24
  prerelease: false
24
25
  requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
25
27
  requirements:
26
- - - ">="
28
+ - - ~>
27
29
  - !ruby/object:Gem::Version
30
+ hash: 27
28
31
  segments:
29
32
  - 1
30
33
  - 3
@@ -36,9 +39,11 @@ dependencies:
36
39
  name: fakeweb
37
40
  prerelease: false
38
41
  requirement: &id002 !ruby/object:Gem::Requirement
42
+ none: false
39
43
  requirements:
40
- - - ">="
44
+ - - ~>
41
45
  - !ruby/object:Gem::Version
46
+ hash: 15
42
47
  segments:
43
48
  - 1
44
49
  - 2
@@ -50,9 +55,11 @@ dependencies:
50
55
  name: right_aws
51
56
  prerelease: false
52
57
  requirement: &id003 !ruby/object:Gem::Requirement
58
+ none: false
53
59
  requirements:
54
- - - ">="
60
+ - - ~>
55
61
  - !ruby/object:Gem::Version
62
+ hash: 63
56
63
  segments:
57
64
  - 1
58
65
  - 10
@@ -64,9 +71,11 @@ dependencies:
64
71
  name: logmerge
65
72
  prerelease: false
66
73
  requirement: &id004 !ruby/object:Gem::Requirement
74
+ none: false
67
75
  requirements:
68
- - - ">="
76
+ - - ~>
69
77
  - !ruby/object:Gem::Version
78
+ hash: 19
70
79
  segments:
71
80
  - 1
72
81
  - 0
@@ -78,9 +87,11 @@ dependencies:
78
87
  name: chronic
79
88
  prerelease: false
80
89
  requirement: &id005 !ruby/object:Gem::Requirement
90
+ none: false
81
91
  requirements:
82
92
  - - ">="
83
93
  - !ruby/object:Gem::Version
94
+ hash: 17
84
95
  segments:
85
96
  - 0
86
97
  - 2
@@ -99,7 +110,7 @@ extensions: []
99
110
  extra_rdoc_files:
100
111
  - README.rdoc
101
112
  files:
102
- - .gitignore
113
+ - .rvmrc
103
114
  - README.rdoc
104
115
  - Rakefile
105
116
  - VERSION
@@ -110,6 +121,7 @@ files:
110
121
  - lib/ralf/interpolation.rb
111
122
  - lib/ralf/log.rb
112
123
  - lib/ralf/option_parser.rb
124
+ - ralf.gemspec
113
125
  - spec/fixtures/apache.log
114
126
  - spec/fixtures/example_buckets.yaml
115
127
  - spec/ralf/bucket_spec.rb
@@ -127,38 +139,34 @@ licenses: []
127
139
 
128
140
  post_install_message:
129
141
  rdoc_options:
130
- - --charset=UTF-8
131
142
  - --exclude
132
143
  - .
133
144
  require_paths:
134
145
  - lib
135
146
  required_ruby_version: !ruby/object:Gem::Requirement
147
+ none: false
136
148
  requirements:
137
149
  - - ">="
138
150
  - !ruby/object:Gem::Version
151
+ hash: 3
139
152
  segments:
140
153
  - 0
141
154
  version: "0"
142
155
  required_rubygems_version: !ruby/object:Gem::Requirement
156
+ none: false
143
157
  requirements:
144
158
  - - ">="
145
159
  - !ruby/object:Gem::Version
160
+ hash: 3
146
161
  segments:
147
162
  - 0
148
163
  version: "0"
149
164
  requirements: []
150
165
 
151
166
  rubyforge_project:
152
- rubygems_version: 1.3.6
167
+ rubygems_version: 1.3.7
153
168
  signing_key:
154
169
  specification_version: 3
155
170
  summary: Retrieve Amazon Log Files
156
- test_files:
157
- - spec/ralf/bucket_spec.rb
158
- - spec/ralf/config_spec.rb
159
- - spec/ralf/interpolation_spec.rb
160
- - spec/ralf/log_spec.rb
161
- - spec/ralf/option_parser_spec.rb
162
- - spec/ralf_spec.rb
163
- - spec/spec_helper.rb
164
- - spec/support/fakeweb.rb
171
+ test_files: []
172
+
data/.gitignore DELETED
@@ -1,4 +0,0 @@
1
- **.gem
2
- tmp/**
3
- ralf.gemspec
4
- rdoc