fluent-plugin-record-modifier 1.0.0.rc1 → 1.0.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.
- checksums.yaml +4 -4
- data/ChangeLog +3 -1
- data/README.md +14 -0
- data/VERSION +1 -1
- data/lib/fluent/plugin/filter_record_modifier.rb +14 -2
- data/test/test_filter_record_modifier.rb +34 -11
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a15e658406cf52a460a2a6edbb1a1337f71b7b4
|
4
|
+
data.tar.gz: b7993b3cb32177eb7db0aa36fd3eafd7679adb8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b482529449bdeff97e0629d896781ac6c8c97f6f26c2f07355e220686ef08bc3e8534f64c98ebfc9c3ca36c8845d98322b81b14032604f8cdb4fcf03ef9d0625
|
7
|
+
data.tar.gz: 7e331024d5c7533a2b6a73cf64bcce452fabcd6279f84202449172be7030aa43cd827e336b20829e9ec6c669c8bbe39e45cbec633bae93ef4a62df77fa856039
|
data/ChangeLog
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
-
Release 1.0.0
|
1
|
+
Release 1.0.0 - 2017/12/12
|
2
2
|
|
3
3
|
* Use v0.14 API
|
4
4
|
https://github.com/repeatedly/fluent-plugin-record-modifier/pull/14
|
5
|
+
* Support frozen object
|
6
|
+
https://github.com/repeatedly/fluent-plugin-record-modifier/pull/26
|
5
7
|
|
6
8
|
Release 0.5.0 - 2016/08/23
|
7
9
|
|
data/README.md
CHANGED
@@ -136,6 +136,20 @@ then you got new record like below:
|
|
136
136
|
{"key1":"hoge", "key2":"foo"}
|
137
137
|
```
|
138
138
|
|
139
|
+
### Ruby code trick for complex logic
|
140
|
+
|
141
|
+
If you need own complex logic in filter, writing filter plugin is better. But if you don't want to write new plugin, you can use temporal key trick like below:
|
142
|
+
|
143
|
+
```
|
144
|
+
<filter reform.**>
|
145
|
+
@type record_modifier
|
146
|
+
remove_keys _dummy_
|
147
|
+
<record>
|
148
|
+
_dummy_ ${if record.has_key?('foo'); record['bar'] = 'Hi!'; end; nil}
|
149
|
+
</record>
|
150
|
+
</filter>}
|
151
|
+
```
|
152
|
+
|
139
153
|
### record_modifier output
|
140
154
|
|
141
155
|
In v0.10, you can use `record_modifier` output to emulate filter. `record_modifier` output doesn't support `<record>` way.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.0
|
1
|
+
1.0.0
|
@@ -113,7 +113,13 @@ DESC
|
|
113
113
|
if value.is_a?(String)
|
114
114
|
value.force_encoding(@from_enc)
|
115
115
|
elsif value.is_a?(Hash)
|
116
|
-
value.each_pair { |k, v|
|
116
|
+
value.each_pair { |k, v|
|
117
|
+
if v.frozen?
|
118
|
+
value[k] = set_encoding(v.dup)
|
119
|
+
else
|
120
|
+
set_encoding(v)
|
121
|
+
end
|
122
|
+
}
|
117
123
|
elsif value.is_a?(Array)
|
118
124
|
value.each { |v| set_encoding(v) }
|
119
125
|
end
|
@@ -124,7 +130,13 @@ DESC
|
|
124
130
|
value.force_encoding(@from_enc) if value.encoding == Encoding::BINARY
|
125
131
|
value.encode!(@to_enc, @from_enc, :invalid => :replace, :undef => :replace)
|
126
132
|
elsif value.is_a?(Hash)
|
127
|
-
value.each_pair { |k, v|
|
133
|
+
value.each_pair { |k, v|
|
134
|
+
if v.frozen?
|
135
|
+
value[k] = convert_encoding(v.dup)
|
136
|
+
else
|
137
|
+
convert_encoding(v)
|
138
|
+
end
|
139
|
+
}
|
128
140
|
elsif value.is_a?(Array)
|
129
141
|
value.each { |v| convert_encoding(v) }
|
130
142
|
end
|
@@ -11,7 +11,6 @@ class RecordModifierFilterTest < Test::Unit::TestCase
|
|
11
11
|
end
|
12
12
|
|
13
13
|
CONFIG = %q!
|
14
|
-
type record_modifier
|
15
14
|
remove_keys hoge
|
16
15
|
|
17
16
|
<record>
|
@@ -57,8 +56,6 @@ class RecordModifierFilterTest < Test::Unit::TestCase
|
|
57
56
|
|
58
57
|
def test_set_char_encoding
|
59
58
|
d = create_driver %[
|
60
|
-
type record_modifier
|
61
|
-
|
62
59
|
char_encoding utf-8
|
63
60
|
]
|
64
61
|
|
@@ -77,8 +74,6 @@ class RecordModifierFilterTest < Test::Unit::TestCase
|
|
77
74
|
|
78
75
|
def test_convert_char_encoding
|
79
76
|
d = create_driver %[
|
80
|
-
type record_modifier
|
81
|
-
|
82
77
|
char_encoding utf-8:cp932
|
83
78
|
]
|
84
79
|
|
@@ -97,8 +92,6 @@ class RecordModifierFilterTest < Test::Unit::TestCase
|
|
97
92
|
|
98
93
|
def test_remove_one_key
|
99
94
|
d = create_driver %[
|
100
|
-
type record_modifier
|
101
|
-
|
102
95
|
remove_keys k1
|
103
96
|
]
|
104
97
|
|
@@ -111,8 +104,6 @@ class RecordModifierFilterTest < Test::Unit::TestCase
|
|
111
104
|
|
112
105
|
def test_remove_multiple_keys
|
113
106
|
d = create_driver %[
|
114
|
-
type record_modifier
|
115
|
-
|
116
107
|
remove_keys k1, k2, k3
|
117
108
|
]
|
118
109
|
|
@@ -125,8 +116,6 @@ class RecordModifierFilterTest < Test::Unit::TestCase
|
|
125
116
|
|
126
117
|
def test_remove_non_whitelist_keys
|
127
118
|
d = create_driver %[
|
128
|
-
type record_modifier
|
129
|
-
|
130
119
|
whitelist_keys k1, k2, k3
|
131
120
|
]
|
132
121
|
|
@@ -136,4 +125,38 @@ class RecordModifierFilterTest < Test::Unit::TestCase
|
|
136
125
|
|
137
126
|
assert_equal [{"k1" => 'v', "k2" => 'v'}], d.filtered.map(&:last)
|
138
127
|
end
|
128
|
+
|
129
|
+
sub_test_case 'frozen check' do
|
130
|
+
def test_set_char_encoding
|
131
|
+
d = create_driver %[
|
132
|
+
char_encoding utf-8
|
133
|
+
]
|
134
|
+
|
135
|
+
d.run(default_tag: @tag) do
|
136
|
+
d.feed("k" => 'v'.force_encoding('BINARY').freeze)
|
137
|
+
d.feed("k" => {"l" => 'v'.force_encoding('BINARY').freeze})
|
138
|
+
end
|
139
|
+
|
140
|
+
assert_equal [
|
141
|
+
{"k" => 'v'.force_encoding('UTF-8')},
|
142
|
+
{"k" => {"l" => 'v'.force_encoding('UTF-8')}},
|
143
|
+
], d.filtered.map { |e| e.last }
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_convert_char_encoding
|
147
|
+
d = create_driver %[
|
148
|
+
char_encoding utf-8:cp932
|
149
|
+
]
|
150
|
+
|
151
|
+
d.run(default_tag: @tag) do
|
152
|
+
d.feed("k" => 'v'.force_encoding('utf-8').freeze)
|
153
|
+
d.feed("k" => {"l" => 'v'.force_encoding('utf-8').freeze})
|
154
|
+
end
|
155
|
+
|
156
|
+
assert_equal [
|
157
|
+
{"k" => 'v'.force_encoding('cp932')},
|
158
|
+
{"k" => {"l" => 'v'.force_encoding('cp932')}},
|
159
|
+
], d.filtered.map { |e| e.last }
|
160
|
+
end
|
161
|
+
end
|
139
162
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-record-modifier
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masahiro Nakagawa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -90,12 +90,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
90
90
|
version: '0'
|
91
91
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
|
-
- - "
|
93
|
+
- - ">="
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version:
|
95
|
+
version: '0'
|
96
96
|
requirements: []
|
97
97
|
rubyforge_project:
|
98
|
-
rubygems_version: 2.6.
|
98
|
+
rubygems_version: 2.6.13
|
99
99
|
signing_key:
|
100
100
|
specification_version: 4
|
101
101
|
summary: Filter plugin for modifying event record
|