logstasher 0.4.8 → 0.4.9
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.
- checksums.yaml +8 -8
- data/Gemfile +5 -4
- data/lib/logstasher/device/redis.rb +64 -0
- data/lib/logstasher/version.rb +1 -1
- data/spec/lib/logstasher/device/redis_spec.rb +79 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YjQ0MTI1YmFiNDhhZWU4ODczZmQ2MzUwOTJlYzJlY2Q5NmE0MDFjMQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MGU5ZGIwYWRhYTgwZDUxMDcxNTg1OGNlM2EzMDRkNjA4Yzk4ZDVhNA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YzY2ZGU0NWQxNjk3YjExNjY2YWZlMjQ0MDJhNjBiMjg4YWE3NDUwOTIxZDc2
|
10
|
+
OTkzNzk1ZTU0ZDM5MTM1YTE0ZDgyY2MxODZhNTFiNjJlZjIxYjQ3ZTFkYjUy
|
11
|
+
ZmFmYTBhNTc3MDIxZjkwYTk5NDMxZjIwNzdiNTZhOGQyOTE4NzY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YWNkNzc5OGEwMDVlN2Y0ZmYwMTUyM2U2NTY0NDZhY2ZmNzA3ZjI4M2NhZDIy
|
14
|
+
OWVlM2ZjZDVkMjAzYWU1ZjQ1ODI0ZTczYTBjNWRlNThhY2ViNzNiYTBjOGIx
|
15
|
+
ODNiZTdlYTg2MDVlMjEyN2JiOTM2N2Y3ZGI3YzUwOGU3OTJjNmI=
|
data/Gemfile
CHANGED
@@ -4,11 +4,12 @@ source "https://rubygems.org"
|
|
4
4
|
gemspec
|
5
5
|
|
6
6
|
group :test do
|
7
|
-
gem '
|
7
|
+
gem 'growl'
|
8
8
|
gem 'guard'
|
9
9
|
gem 'guard-rspec'
|
10
|
-
gem 'growl'
|
11
|
-
gem 'simplecov', :platforms => :mri_19, :require => false
|
12
|
-
gem 'rcov', :platforms => :mri_18
|
13
10
|
gem 'rails', "~> #{ENV["RAILS_VERSION"] || "3.2.0"}"
|
11
|
+
gem 'rb-fsevent', '~> 0.9'
|
12
|
+
gem 'rcov', :platforms => :mri_18
|
13
|
+
gem 'redis', :require => false
|
14
|
+
gem 'simplecov', :platforms => :mri_19, :require => false
|
14
15
|
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'redis'
|
2
|
+
|
3
|
+
module LogStasher
|
4
|
+
module Device
|
5
|
+
class Redis
|
6
|
+
|
7
|
+
attr_reader :options, :redis
|
8
|
+
|
9
|
+
def initialize(options = {})
|
10
|
+
@options = default_options.merge(options)
|
11
|
+
validate_options
|
12
|
+
configure_redis
|
13
|
+
end
|
14
|
+
|
15
|
+
def data_type
|
16
|
+
options[:data_type]
|
17
|
+
end
|
18
|
+
|
19
|
+
def key
|
20
|
+
options[:key]
|
21
|
+
end
|
22
|
+
|
23
|
+
def redis_options
|
24
|
+
unless @redis_options
|
25
|
+
default_keys = default_options.keys
|
26
|
+
@redis_options = options.select { |k, v| !default_keys.include?(k) }
|
27
|
+
end
|
28
|
+
|
29
|
+
@redis_options
|
30
|
+
end
|
31
|
+
|
32
|
+
def write(log)
|
33
|
+
case data_type
|
34
|
+
when 'list'
|
35
|
+
redis.rpush(key, log)
|
36
|
+
when 'channel'
|
37
|
+
redis.publish(key, log)
|
38
|
+
else
|
39
|
+
fail "Unknown data type #{data_type}"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def close
|
44
|
+
redis.quit
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def configure_redis
|
50
|
+
@redis = ::Redis.new(redis_options)
|
51
|
+
end
|
52
|
+
|
53
|
+
def default_options
|
54
|
+
{ key: 'logstash', data_type: 'list' }
|
55
|
+
end
|
56
|
+
|
57
|
+
def validate_options
|
58
|
+
unless ['list', 'channel'].include?(options[:data_type])
|
59
|
+
fail 'Expected :data_type to be either "list" or "channel"'
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/lib/logstasher/version.rb
CHANGED
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'logstasher/device/redis'
|
4
|
+
|
5
|
+
describe LogStasher::Device::Redis do
|
6
|
+
|
7
|
+
let(:redis_mock) { double('Redis') }
|
8
|
+
|
9
|
+
let(:default_options) {{
|
10
|
+
key: 'logstash',
|
11
|
+
data_type: 'list'
|
12
|
+
}}
|
13
|
+
|
14
|
+
it 'has default options' do
|
15
|
+
device = LogStasher::Device::Redis.new
|
16
|
+
device.options.should eq(default_options)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'creates a redis instance' do
|
20
|
+
::Redis.should_receive(:new).with({})
|
21
|
+
LogStasher::Device::Redis.new()
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'assumes unknown options are for redis' do
|
25
|
+
::Redis.should_receive(:new).with(hash_including(db: '0'))
|
26
|
+
device = LogStasher::Device::Redis.new(db: '0')
|
27
|
+
device.redis_options.should eq(db: '0')
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'has a key' do
|
31
|
+
device = LogStasher::Device::Redis.new(key: 'the_key')
|
32
|
+
device.key.should eq 'the_key'
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'has a data_type' do
|
36
|
+
device = LogStasher::Device::Redis.new(data_type: 'channel')
|
37
|
+
device.data_type.should eq 'channel'
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'does not allow unsupported data types' do
|
41
|
+
expect {
|
42
|
+
device = LogStasher::Device::Redis.new(data_type: 'blargh')
|
43
|
+
}.to raise_error()
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'quits the redis connection on #close' do
|
47
|
+
device = LogStasher::Device::Redis.new
|
48
|
+
device.redis.should_receive(:quit)
|
49
|
+
device.close
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'works as a logger device' do
|
53
|
+
device = LogStasher::Device::Redis.new
|
54
|
+
device.should_receive(:write).with('blargh')
|
55
|
+
logger = Logger.new(device)
|
56
|
+
logger << 'blargh'
|
57
|
+
end
|
58
|
+
|
59
|
+
describe '#write' do
|
60
|
+
it "rpushes logs onto a list" do
|
61
|
+
device = LogStasher::Device::Redis.new(data_type: 'list')
|
62
|
+
device.redis.should_receive(:rpush).with('logstash', 'the log')
|
63
|
+
device.write('the log')
|
64
|
+
end
|
65
|
+
|
66
|
+
it "rpushes logs onto a custom key" do
|
67
|
+
device = LogStasher::Device::Redis.new(data_type: 'list', key: 'custom')
|
68
|
+
device.redis.should_receive(:rpush).with('custom', 'the log')
|
69
|
+
device.write('the log')
|
70
|
+
end
|
71
|
+
|
72
|
+
it "publishes logs onto a channel" do
|
73
|
+
device = LogStasher::Device::Redis.new(data_type: 'channel', key: 'custom')
|
74
|
+
device.redis.should_receive(:publish).with('custom', 'the log')
|
75
|
+
device.write('the log')
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstasher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shadab Ahmed
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-02-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logstash-event
|
@@ -81,12 +81,14 @@ files:
|
|
81
81
|
- README.md
|
82
82
|
- Rakefile
|
83
83
|
- lib/logstasher.rb
|
84
|
+
- lib/logstasher/device/redis.rb
|
84
85
|
- lib/logstasher/log_subscriber.rb
|
85
86
|
- lib/logstasher/rails_ext/action_controller/metal/instrumentation.rb
|
86
87
|
- lib/logstasher/rails_ext/rack/logger.rb
|
87
88
|
- lib/logstasher/railtie.rb
|
88
89
|
- lib/logstasher/version.rb
|
89
90
|
- logstasher.gemspec
|
91
|
+
- spec/lib/logstasher/device/redis_spec.rb
|
90
92
|
- spec/lib/logstasher/log_subscriber_spec.rb
|
91
93
|
- spec/lib/logstasher_spec.rb
|
92
94
|
- spec/spec_helper.rb
|
@@ -114,6 +116,7 @@ signing_key:
|
|
114
116
|
specification_version: 4
|
115
117
|
summary: Awesome rails logs
|
116
118
|
test_files:
|
119
|
+
- spec/lib/logstasher/device/redis_spec.rb
|
117
120
|
- spec/lib/logstasher/log_subscriber_spec.rb
|
118
121
|
- spec/lib/logstasher_spec.rb
|
119
122
|
- spec/spec_helper.rb
|