logstash_rails 0.0.15 → 0.0.16
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/lib/logstash_rails/transport/logstash_tcp.rb +15 -4
- data/lib/logstash_rails/version.rb +1 -1
- data/logstash_rails.gemspec +2 -1
- data/spec/lib/logstash_rails/formatter_spec.rb +1 -1
- data/spec/lib/logstash_rails/transport/logstash_tcp_spec.rb +10 -0
- data/spec/lib/logstash_rails/transport/redis_spec.rb +7 -8
- metadata +23 -7
@@ -1,18 +1,23 @@
|
|
1
|
+
require 'celluloid/io'
|
2
|
+
require 'celluloid/io'
|
3
|
+
|
1
4
|
module LogstashRails
|
2
5
|
module Transport
|
3
6
|
class LogstashTcp < TransportBase
|
4
7
|
|
5
8
|
def initialize(options)
|
6
|
-
host = options[:host] || 'localhost'
|
7
|
-
port = options.fetch(:port)
|
8
|
-
|
9
|
-
@socket = TCPSocket.new(host, port)
|
9
|
+
@host = options[:host] || 'localhost'
|
10
|
+
@port = options.fetch(:port)
|
10
11
|
|
11
12
|
super
|
12
13
|
end
|
13
14
|
|
14
15
|
def push(json_event)
|
15
16
|
@socket.write(json_event)
|
17
|
+
rescue Errno::EPIPE, Errno::ECONNREFUSED, NoMethodError => e
|
18
|
+
log(e)
|
19
|
+
connect!
|
20
|
+
retry
|
16
21
|
end
|
17
22
|
|
18
23
|
def destroy
|
@@ -20,6 +25,12 @@ module LogstashRails
|
|
20
25
|
@socket.close
|
21
26
|
end
|
22
27
|
|
28
|
+
private
|
29
|
+
|
30
|
+
def connect!
|
31
|
+
@socket = Celluloid::IO::TCPSocket.new(@host, @port)
|
32
|
+
end
|
33
|
+
|
23
34
|
end
|
24
35
|
end
|
25
36
|
end
|
data/logstash_rails.gemspec
CHANGED
@@ -16,7 +16,8 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.test_files = gem.files.grep(%r{^spec/})
|
17
17
|
gem.require_paths = ["lib"]
|
18
18
|
|
19
|
-
gem.add_dependency('logstash-event')
|
19
|
+
gem.add_dependency('logstash-event', '~> 1.2.02')
|
20
20
|
gem.add_dependency('activesupport')
|
21
21
|
gem.add_dependency('redis')
|
22
|
+
gem.add_dependency('celluloid-io')
|
22
23
|
end
|
@@ -11,7 +11,7 @@ describe 'generated logstash event' do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it 'has the event type as message' do
|
14
|
-
JSON.parse(Redis.new.lpop('logstash'))['
|
14
|
+
JSON.parse(Redis.new.lpop('logstash'))['message'].should eq "process_action.action_controller"
|
15
15
|
end
|
16
16
|
|
17
17
|
end
|
@@ -23,6 +23,9 @@ describe LogstashRails::Transport::LogstashTcp do
|
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'should close the tcp socket' do
|
26
|
+
# initialize tcp socket
|
27
|
+
logstash_tcp.push 'toto'
|
28
|
+
|
26
29
|
socket = logstash_tcp.instance_variable_get(:@socket)
|
27
30
|
expect{ logstash_tcp.destroy }.to change{ socket.closed? }.from(false).to(true)
|
28
31
|
end
|
@@ -33,4 +36,11 @@ describe LogstashRails::Transport::LogstashTcp do
|
|
33
36
|
@thread.join
|
34
37
|
@received.should eq 'toto'
|
35
38
|
end
|
39
|
+
|
40
|
+
it 'lazily connects the socket' do
|
41
|
+
expect{ logstash_tcp.push 'toto' }.to change{
|
42
|
+
logstash_tcp.instance_variable_get(:@socket).class
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
36
46
|
end
|
@@ -27,24 +27,23 @@ describe LogstashRails::Transport::Redis do
|
|
27
27
|
subject.push 'foo'
|
28
28
|
Redis.new.lpop 'logstash'
|
29
29
|
|
30
|
-
|
31
|
-
w.close
|
32
|
-
|
33
|
-
r.read.should eq 'true'
|
34
|
-
|
35
|
-
Process.wait
|
36
|
-
else
|
37
|
-
|
30
|
+
fork do
|
38
31
|
# use connection in child process
|
39
32
|
subject.push 'bar'
|
40
33
|
|
41
34
|
w.write(Redis.new.lpop('logstash') == 'bar')
|
42
35
|
w.flush
|
43
36
|
|
37
|
+
# override exit hooks
|
44
38
|
SimpleCov.at_exit{}
|
45
39
|
Process.exit! true
|
46
40
|
end
|
47
41
|
|
42
|
+
w.close
|
43
|
+
|
44
|
+
r.read.should eq 'true'
|
45
|
+
|
46
|
+
Process.wait
|
48
47
|
end
|
49
48
|
|
50
49
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.16
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,10 +9,26 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-06
|
12
|
+
date: 2013-10-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: logstash-event
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.2.02
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.2.02
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: activesupport
|
16
32
|
requirement: !ruby/object:Gem::Requirement
|
17
33
|
none: false
|
18
34
|
requirements:
|
@@ -28,7 +44,7 @@ dependencies:
|
|
28
44
|
- !ruby/object:Gem::Version
|
29
45
|
version: '0'
|
30
46
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
47
|
+
name: redis
|
32
48
|
requirement: !ruby/object:Gem::Requirement
|
33
49
|
none: false
|
34
50
|
requirements:
|
@@ -44,7 +60,7 @@ dependencies:
|
|
44
60
|
- !ruby/object:Gem::Version
|
45
61
|
version: '0'
|
46
62
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
63
|
+
name: celluloid-io
|
48
64
|
requirement: !ruby/object:Gem::Requirement
|
49
65
|
none: false
|
50
66
|
requirements:
|
@@ -106,7 +122,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
106
122
|
version: '0'
|
107
123
|
segments:
|
108
124
|
- 0
|
109
|
-
hash:
|
125
|
+
hash: 4605437770903519809
|
110
126
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
127
|
none: false
|
112
128
|
requirements:
|
@@ -115,10 +131,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
131
|
version: '0'
|
116
132
|
segments:
|
117
133
|
- 0
|
118
|
-
hash:
|
134
|
+
hash: 4605437770903519809
|
119
135
|
requirements: []
|
120
136
|
rubyforge_project:
|
121
|
-
rubygems_version: 1.8.
|
137
|
+
rubygems_version: 1.8.24
|
122
138
|
signing_key:
|
123
139
|
specification_version: 3
|
124
140
|
summary: Send events from Rails to Logstash without logger foo.
|