fluent-plugin-record-modifier 1.0.0.rc1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bd31ea6b4191c161f1518dbdfb7cbc57b9840902
4
- data.tar.gz: ce1368e0f6b21845deafeb6c72ec60b06d9a2146
3
+ metadata.gz: 9a15e658406cf52a460a2a6edbb1a1337f71b7b4
4
+ data.tar.gz: b7993b3cb32177eb7db0aa36fd3eafd7679adb8f
5
5
  SHA512:
6
- metadata.gz: 00b348bb146840c6e754d974e4400e5dee8444289f3f6bdee1e19b0932f76ece490639e1d0bf2ff0f90e4491b1fc127792b5fadf1130cf08c13e5627b4c30bf6
7
- data.tar.gz: 4fcc2ab8f86c7e7e40df240fdbdde4e88c80fb4f2e1dd06ae45b766faac620c381e762946b0cbdb6c3795ead3e3e62b43219325a2f635d4b0bf6510fff3a586f
6
+ metadata.gz: b482529449bdeff97e0629d896781ac6c8c97f6f26c2f07355e220686ef08bc3e8534f64c98ebfc9c3ca36c8845d98322b81b14032604f8cdb4fcf03ef9d0625
7
+ data.tar.gz: 7e331024d5c7533a2b6a73cf64bcce452fabcd6279f84202449172be7030aa43cd827e336b20829e9ec6c669c8bbe39e45cbec633bae93ef4a62df77fa856039
data/ChangeLog CHANGED
@@ -1,7 +1,9 @@
1
- Release 1.0.0.rc1 - 2016/08/23
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.rc1
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| set_encoding(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| convert_encoding(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.rc1
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-06-07 00:00:00.000000000 Z
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: 1.3.1
95
+ version: '0'
96
96
  requirements: []
97
97
  rubyforge_project:
98
- rubygems_version: 2.6.11
98
+ rubygems_version: 2.6.13
99
99
  signing_key:
100
100
  specification_version: 4
101
101
  summary: Filter plugin for modifying event record