logstash-input-jdbc 2.0.5 → 2.1.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: 6fcc8b3eaba96543efed3777360fd0af48db6bae
4
- data.tar.gz: 6c87821ec96f4df83b055f5510b03ec2e5bba48f
3
+ metadata.gz: f9bab690eb90f270679aa61551938fa2bf7ee6de
4
+ data.tar.gz: ef01a9593412b885252102358fde81cb50a268e2
5
5
  SHA512:
6
- metadata.gz: 38f419423f8fe7d82988049061049b6ff1af9c099e6af124da46aa4d1957076382c6fef6b49f461e83ffe9c562fe0f7e3df3ddeda08c9e786cf2057fda2aede2
7
- data.tar.gz: 1d068d7aa44690298e49fe8ce926bc67c1663970cb10418d8d27f4879a8932dbc7c5027f84a295222906f90a8aa799b4f75838fa76dbed6e79ecc8dc1bca1885
6
+ metadata.gz: bfb164e27f19f96e41026ceaca231a62855aef0e1d9c4e38ab39f923d9d0059bb39361576a442c78fa6b9f618acb6df33dd196b581337b53fc3f26ac6b4f2d64
7
+ data.tar.gz: 854657f5cecda124c91baf0342921b7cbca9e451957a33587cb670f189cb7dbf93312d3cfdd28634509d3a1858baeedc6f9a4c6a9827cb9fbc8a9f8ba3b08eb6
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 2.1.0
2
+ - [#85](https://github.com/logstash-plugins/logstash-input-jdbc/issues/85) make the jdbc_driver_library accept a list of elements separated by commas as in some situations we might need to load more than one jar/lib.
3
+ - [#89](https://github.com/logstash-plugins/logstash-input-jdbc/issues/89) Set application timezone for cases where time fields in data have no timezone.
4
+
1
5
  ## 2.0.5
2
6
  - [#77](https://github.com/logstash-plugins/logstash-input-jdbc/issues/77) Time represented as RubyTime and not as Logstash::Timestamp
3
7
 
@@ -10,7 +14,7 @@
10
14
  - Added catch-all configuration option for any other options that Sequel lib supports
11
15
 
12
16
  ## 2.0.0
13
- - Plugins were updated to follow the new shutdown semantic, this mainly allows Logstash to instruct input plugins to terminate gracefully,
17
+ - Plugins were updated to follow the new shutdown semantic, this mainly allows Logstash to instruct input plugins to terminate gracefully,
14
18
  instead of using Thread.raise on the plugins' threads. Ref: https://github.com/elastic/logstash/pull/3895
15
19
  - Dependency on logstash-core update to 2.0
16
20
 
@@ -1,8 +1,10 @@
1
1
  # encoding: utf-8
2
2
  # TAKEN FROM WIIBAA
3
3
  require "logstash/config/mixin"
4
+ require "time"
5
+ require "date"
4
6
 
5
- # Tentative of abstracting JDBC logic to a mixin
7
+ # Tentative of abstracting JDBC logic to a mixin
6
8
  # for potential reuse in other plugins (input/output)
7
9
  module LogStash::PluginMixins::Jdbc
8
10
 
@@ -18,10 +20,11 @@ module LogStash::PluginMixins::Jdbc
18
20
 
19
21
  public
20
22
  def setup_jdbc_config
21
- # JDBC driver library path to third party driver library.
23
+ # JDBC driver library path to third party driver library. In case of multiple libraries being
24
+ # required you can pass them separated by a comma.
22
25
  #
23
26
  # If not provided, Plugin will look for the driver class in the Logstash Java classpath.
24
- config :jdbc_driver_library, :validate => :path
27
+ config :jdbc_driver_library, :validate => :string
25
28
 
26
29
  # JDBC driver class to load, for exmaple, "org.apache.derby.jdbc.ClientDriver"
27
30
  # NB per https://github.com/logstash-plugins/logstash-input-jdbc/issues/43 if you are using
@@ -44,7 +47,7 @@ module LogStash::PluginMixins::Jdbc
44
47
  # result-set. The limit size is set with `jdbc_page_size`.
45
48
  #
46
49
  # Be aware that ordering is not guaranteed between queries.
47
- config :jdbc_paging_enabled, :validate => :boolean, :default => false
50
+ config :jdbc_paging_enabled, :validate => :boolean, :default => false
48
51
 
49
52
  # JDBC page size
50
53
  config :jdbc_page_size, :validate => :number, :default => 100000
@@ -64,6 +67,15 @@ module LogStash::PluginMixins::Jdbc
64
67
  # The amount of seconds to wait to acquire a connection before raising a PoolTimeoutError (default 5)
65
68
  config :jdbc_pool_timeout, :validate => :number, :default => 5
66
69
 
70
+ # Timezone conversion.
71
+ # SQL does not allow for timezone data in timestamp fields. This plugin will automatically
72
+ # convert your SQL timestamp fields to Logstash timestamps, in relative UTC time in ISO8601 format.
73
+ #
74
+ # Using this setting will manually assign a specified timezone offset, instead
75
+ # of using the timezone setting of the local machine. You must use a canonical
76
+ # timezone, *America/Denver*, for example.
77
+ config :jdbc_default_timezone, :validate => :string
78
+
67
79
  # General/Vendor-specific Sequel configuration options.
68
80
  #
69
81
  # An example of an optional connection pool configuration
@@ -72,6 +84,10 @@ module LogStash::PluginMixins::Jdbc
72
84
  # examples of vendor-specific options can be found in this
73
85
  # documentation page: https://github.com/jeremyevans/sequel/blob/master/doc/opening_databases.rdoc
74
86
  config :sequel_opts, :validate => :hash, :default => {}
87
+
88
+ # Log level at which to log SQL queries, the accepted values are the common ones fatal, error, warn,
89
+ # info and debug. The default value is info.
90
+ config :sql_log_level, :validate => [ "fatal", "error", "warn", "info", "debug" ], :default => "info"
75
91
  end
76
92
 
77
93
  private
@@ -92,17 +108,29 @@ module LogStash::PluginMixins::Jdbc
92
108
  end
93
109
  end
94
110
 
111
+ private
112
+ def load_drivers(drivers)
113
+ drivers.each do |driver|
114
+ begin
115
+ require driver
116
+ rescue => e
117
+ @logger.error("Failed to load #{driver}", :exception => e)
118
+ end
119
+ end
120
+ end
121
+
95
122
  public
96
123
  def prepare_jdbc_connection
97
124
  require "java"
98
125
  require "sequel"
99
126
  require "sequel/adapters/jdbc"
100
- require @jdbc_driver_library if @jdbc_driver_library
127
+ load_drivers(@jdbc_driver_library.split(",")) if @jdbc_driver_library
128
+
101
129
  begin
102
130
  Sequel::JDBC.load_driver(@jdbc_driver_class)
103
131
  rescue Sequel::AdapterNotFound => e
104
132
  message = if @jdbc_driver_library.nil?
105
- ":jdbc_driver_library is not set, are you sure you included
133
+ ":jdbc_driver_library is not set, are you sure you included
106
134
  the proper driver client libraries in your classpath?"
107
135
  else
108
136
  "Are you sure you've included the correct jdbc driver in :jdbc_driver_library?"
@@ -111,6 +139,10 @@ module LogStash::PluginMixins::Jdbc
111
139
  end
112
140
  @database = jdbc_connect()
113
141
  @database.extension(:pagination)
142
+ if @jdbc_default_timezone
143
+ @database.extension(:named_timezones)
144
+ @database.timezone = @jdbc_default_timezone
145
+ end
114
146
  if @jdbc_validate_connection
115
147
  @database.extension(:connection_validator)
116
148
  @database.pool.connection_validation_timeout = @jdbc_validation_timeout
@@ -122,7 +154,8 @@ module LogStash::PluginMixins::Jdbc
122
154
  #TODO return false and let the plugin raise a LogStash::ConfigurationError
123
155
  raise e
124
156
  end
125
-
157
+ @database.sql_log_level = @sql_log_level.to_sym
158
+ @database.logger = @logger
126
159
  @sql_last_start = Time.at(0).utc
127
160
  end # def prepare_jdbc_connection
128
161
 
@@ -134,10 +167,10 @@ module LogStash::PluginMixins::Jdbc
134
167
  public
135
168
  def execute_statement(statement, parameters)
136
169
  success = false
137
- begin
170
+ begin
138
171
  parameters = symbolized_params(parameters)
139
172
  query = @database[statement, parameters]
140
- @logger.debug? and @logger.debug("Executing JDBC query", :statement => statement, :parameters => parameters)
173
+ @logger.debug? and @logger.debug("Executing JDBC query", :statement => statement, :parameters => parameters, :count => query.count)
141
174
  @sql_last_start = Time.now.utc
142
175
 
143
176
  if @jdbc_paging_enabled
@@ -159,9 +192,9 @@ module LogStash::PluginMixins::Jdbc
159
192
  end
160
193
 
161
194
  # Symbolize parameters keys to use with Sequel
162
- private
195
+ private
163
196
  def symbolized_params(parameters)
164
- parameters.inject({}) do |hash,(k,v)|
197
+ parameters.inject({}) do |hash,(k,v)|
165
198
  case v
166
199
  when LogStash::Timestamp
167
200
  hash[k.to_sym] = v.time
@@ -180,9 +213,14 @@ module LogStash::PluginMixins::Jdbc
180
213
 
181
214
  private
182
215
  def decorate_value(value)
216
+
183
217
  if value.is_a?(Time)
184
218
  # transform it to LogStash::Timestamp as required by LS
185
219
  LogStash::Timestamp.new(value)
220
+ elsif value.is_a?(DateTime)
221
+ # Manual timezone conversion detected.
222
+ # This is slower, so we put it in as a conditional case.
223
+ LogStash::Timestamp.new(Time.parse(value.to_s))
186
224
  else
187
225
  value # no-op
188
226
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-input-jdbc'
3
- s.version = '2.0.5'
3
+ s.version = '2.1.0'
4
4
  s.licenses = ['Apache License (2.0)']
5
5
  s.summary = "This example input streams a string at a definable interval."
6
6
  s.description = "This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program"
@@ -21,6 +21,8 @@ Gem::Specification.new do |s|
21
21
  s.add_runtime_dependency "logstash-core", ">= 2.0.0.beta2", "< 3.0.0"
22
22
  s.add_runtime_dependency 'logstash-codec-plain'
23
23
  s.add_runtime_dependency 'sequel'
24
+ s.add_runtime_dependency 'tzinfo'
25
+ s.add_runtime_dependency 'tzinfo-data'
24
26
  s.add_runtime_dependency 'rufus-scheduler'
25
27
 
26
28
  s.add_development_dependency 'logstash-devutils'
@@ -5,9 +5,18 @@ require "sequel"
5
5
  require "sequel/adapters/jdbc"
6
6
  require "timecop"
7
7
  require "stud/temporary"
8
+ require "time"
9
+ require "date"
8
10
 
9
11
  describe LogStash::Inputs::Jdbc do
10
- let(:mixin_settings) { {"jdbc_user" => ENV['USER'], "jdbc_driver_class" => "org.apache.derby.jdbc.EmbeddedDriver", "jdbc_connection_string" => "jdbc:derby:memory:testdb;create=true"} }
12
+ # This is a necessary change test-wide to guarantee that no local timezone
13
+ # is picked up. It could be arbitrarily set to any timezone, but then the test
14
+ # would have to compensate differently. That's why UTC is chosen.
15
+ ENV["TZ"] = "Etc/UTC"
16
+ let(:mixin_settings) do
17
+ { "jdbc_user" => ENV['USER'], "jdbc_driver_class" => "org.apache.derby.jdbc.EmbeddedDriver",
18
+ "jdbc_connection_string" => "jdbc:derby:memory:testdb;create=true"}
19
+ end
11
20
  let(:settings) { {} }
12
21
  let(:plugin) { LogStash::Inputs::Jdbc.new(mixin_settings.merge(settings)) }
13
22
  let(:queue) { Queue.new }
@@ -42,6 +51,20 @@ describe LogStash::Inputs::Jdbc do
42
51
  plugin.stop
43
52
  end
44
53
 
54
+ it "should load all drivers when passing an array" do
55
+ mixin_settings['jdbc_driver_library'] = '/foo/bar,/bar/foo'
56
+ expect(plugin).to receive(:load_drivers).with(['/foo/bar', '/bar/foo'])
57
+ plugin.register
58
+ plugin.stop
59
+ end
60
+
61
+ it "should load all drivers when using a single value" do
62
+ mixin_settings['jdbc_driver_library'] = '/foo/bar'
63
+ expect(plugin).to receive(:load_drivers).with(['/foo/bar'])
64
+ plugin.register
65
+ plugin.stop
66
+ end
67
+
45
68
  it "should stop without raising exception" do
46
69
  plugin.register
47
70
  expect { plugin.stop }.to_not raise_error
@@ -199,6 +222,77 @@ describe LogStash::Inputs::Jdbc do
199
222
  end
200
223
  end
201
224
 
225
+ context "when fetching time data with jdbc_default_timezone set" do
226
+ let(:mixin_settings) do
227
+ { "jdbc_user" => ENV['USER'], "jdbc_driver_class" => "org.apache.derby.jdbc.EmbeddedDriver",
228
+ "jdbc_connection_string" => "jdbc:derby:memory:testdb;create=true",
229
+ "jdbc_default_timezone" => "America/Chicago"
230
+ }
231
+ end
232
+
233
+ let(:settings) do
234
+ {
235
+ "statement" => "SELECT * from test_table",
236
+ }
237
+ end
238
+
239
+ let(:num_rows) { 10 }
240
+
241
+ before do
242
+ num_rows.times do
243
+ db[:test_table].insert(:num => 1, :custom_time => "2015-01-01 12:00:00", :created_at => Time.now.utc)
244
+ end
245
+
246
+ plugin.register
247
+ end
248
+
249
+ after do
250
+ plugin.stop
251
+ end
252
+
253
+ it "should convert the time to reflect the timezone " do
254
+ plugin.run(queue)
255
+ event = queue.pop
256
+ # This reflects a 6 hour time difference between UTC and America/Chicago
257
+ expect(event["custom_time"].time).to eq(Time.iso8601("2015-01-01T18:00:00Z"))
258
+ end
259
+ end
260
+
261
+ context "when fetching time data without jdbc_default_timezone set" do
262
+ let(:mixin_settings) do
263
+ { "jdbc_user" => ENV['USER'], "jdbc_driver_class" => "org.apache.derby.jdbc.EmbeddedDriver",
264
+ "jdbc_connection_string" => "jdbc:derby:memory:testdb;create=true"
265
+ }
266
+ end
267
+
268
+ let(:settings) do
269
+ {
270
+ "statement" => "SELECT * from test_table",
271
+ }
272
+ end
273
+
274
+ let(:num_rows) { 1 }
275
+
276
+ before do
277
+ num_rows.times do
278
+ db.run "INSERT INTO test_table (created_at, num, custom_time) VALUES (TIMESTAMP('2015-01-01 12:00:00'), 1, TIMESTAMP('2015-01-01 12:00:00'))"
279
+ end
280
+
281
+ plugin.register
282
+ end
283
+
284
+ after do
285
+ plugin.stop
286
+ end
287
+
288
+ it "should not convert the time to reflect the timezone " do
289
+ plugin.run(queue)
290
+ event = queue.pop
291
+ # With no timezone set, no change should occur
292
+ expect(event["custom_time"].time).to eq(Time.iso8601("2015-01-01T12:00:00Z"))
293
+ end
294
+ end
295
+
202
296
  context "when iteratively running plugin#run" do
203
297
  let(:settings) do
204
298
  {"statement" => "SELECT num, created_at FROM test_table WHERE created_at > :sql_last_start"}
@@ -379,4 +473,37 @@ describe LogStash::Inputs::Jdbc do
379
473
  expect { plugin.register }.to raise_error(Sequel::PoolTimeout)
380
474
  end
381
475
  end
476
+
477
+ context "when using logging" do
478
+
479
+ let(:settings) do
480
+ {
481
+ "statement" => "SELECT * from test_table", "sql_log_level" => "debug"
482
+ }
483
+ end
484
+
485
+ let(:num_rows) { 5 }
486
+
487
+ before do
488
+ plugin.instance_variable_set("@logger", logger)
489
+ allow(logger).to receive(:debug?)
490
+ num_rows.times do
491
+ db[:test_table].insert(:num => 1)
492
+ end
493
+
494
+ plugin.register
495
+ end
496
+
497
+ after do
498
+ plugin.stop
499
+ end
500
+
501
+ let(:logger) { double("logger") }
502
+
503
+ it "should report the staments to logging" do
504
+ expect(logger).to receive(:debug).with(kind_of(String)).once
505
+ plugin.run(queue)
506
+ end
507
+ end
508
+
382
509
  end
metadata CHANGED
@@ -1,148 +1,176 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-input-jdbc
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.5
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-17 00:00:00.000000000 Z
11
+ date: 2015-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: logstash-core
15
- version_requirements: !ruby/object:Gem::Requirement
14
+ requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - '>='
16
+ - - ">="
18
17
  - !ruby/object:Gem::Version
19
18
  version: 2.0.0.beta2
20
- - - <
19
+ - - "<"
21
20
  - !ruby/object:Gem::Version
22
21
  version: 3.0.0
23
- requirement: !ruby/object:Gem::Requirement
22
+ name: logstash-core
23
+ prerelease: false
24
+ type: :runtime
25
+ version_requirements: !ruby/object:Gem::Requirement
24
26
  requirements:
25
- - - '>='
27
+ - - ">="
26
28
  - !ruby/object:Gem::Version
27
29
  version: 2.0.0.beta2
28
- - - <
30
+ - - "<"
29
31
  - !ruby/object:Gem::Version
30
32
  version: 3.0.0
31
- prerelease: false
32
- type: :runtime
33
33
  - !ruby/object:Gem::Dependency
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
34
39
  name: logstash-codec-plain
40
+ prerelease: false
41
+ type: :runtime
35
42
  version_requirements: !ruby/object:Gem::Requirement
36
43
  requirements:
37
- - - '>='
44
+ - - ">="
38
45
  - !ruby/object:Gem::Version
39
46
  version: '0'
47
+ - !ruby/object:Gem::Dependency
40
48
  requirement: !ruby/object:Gem::Requirement
41
49
  requirements:
42
- - - '>='
50
+ - - ">="
43
51
  - !ruby/object:Gem::Version
44
52
  version: '0'
53
+ name: sequel
45
54
  prerelease: false
46
55
  type: :runtime
47
- - !ruby/object:Gem::Dependency
48
- name: sequel
49
56
  version_requirements: !ruby/object:Gem::Requirement
50
57
  requirements:
51
- - - '>='
58
+ - - ">="
52
59
  - !ruby/object:Gem::Version
53
60
  version: '0'
61
+ - !ruby/object:Gem::Dependency
54
62
  requirement: !ruby/object:Gem::Requirement
55
63
  requirements:
56
- - - '>='
64
+ - - ">="
57
65
  - !ruby/object:Gem::Version
58
66
  version: '0'
67
+ name: tzinfo
59
68
  prerelease: false
60
69
  type: :runtime
61
- - !ruby/object:Gem::Dependency
62
- name: rufus-scheduler
63
70
  version_requirements: !ruby/object:Gem::Requirement
64
71
  requirements:
65
- - - '>='
72
+ - - ">="
66
73
  - !ruby/object:Gem::Version
67
74
  version: '0'
75
+ - !ruby/object:Gem::Dependency
68
76
  requirement: !ruby/object:Gem::Requirement
69
77
  requirements:
70
- - - '>='
78
+ - - ">="
71
79
  - !ruby/object:Gem::Version
72
80
  version: '0'
81
+ name: tzinfo-data
73
82
  prerelease: false
74
83
  type: :runtime
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
75
89
  - !ruby/object:Gem::Dependency
76
- name: logstash-devutils
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ name: rufus-scheduler
96
+ prerelease: false
97
+ type: :runtime
77
98
  version_requirements: !ruby/object:Gem::Requirement
78
99
  requirements:
79
- - - '>='
100
+ - - ">="
80
101
  - !ruby/object:Gem::Version
81
102
  version: '0'
103
+ - !ruby/object:Gem::Dependency
82
104
  requirement: !ruby/object:Gem::Requirement
83
105
  requirements:
84
- - - '>='
106
+ - - ">="
85
107
  - !ruby/object:Gem::Version
86
108
  version: '0'
109
+ name: logstash-devutils
87
110
  prerelease: false
88
111
  type: :development
89
- - !ruby/object:Gem::Dependency
90
- name: timecop
91
112
  version_requirements: !ruby/object:Gem::Requirement
92
113
  requirements:
93
- - - '>='
114
+ - - ">="
94
115
  - !ruby/object:Gem::Version
95
116
  version: '0'
117
+ - !ruby/object:Gem::Dependency
96
118
  requirement: !ruby/object:Gem::Requirement
97
119
  requirements:
98
- - - '>='
120
+ - - ">="
99
121
  - !ruby/object:Gem::Version
100
122
  version: '0'
123
+ name: timecop
101
124
  prerelease: false
102
125
  type: :development
103
- - !ruby/object:Gem::Dependency
104
- name: jdbc-derby
105
126
  version_requirements: !ruby/object:Gem::Requirement
106
127
  requirements:
107
- - - '>='
128
+ - - ">="
108
129
  - !ruby/object:Gem::Version
109
130
  version: '0'
131
+ - !ruby/object:Gem::Dependency
110
132
  requirement: !ruby/object:Gem::Requirement
111
133
  requirements:
112
- - - '>='
134
+ - - ">="
113
135
  - !ruby/object:Gem::Version
114
136
  version: '0'
137
+ name: jdbc-derby
115
138
  prerelease: false
116
139
  type: :development
117
- - !ruby/object:Gem::Dependency
118
- name: docker-api
119
140
  version_requirements: !ruby/object:Gem::Requirement
120
141
  requirements:
121
- - - '>='
142
+ - - ">="
122
143
  - !ruby/object:Gem::Version
123
144
  version: '0'
145
+ - !ruby/object:Gem::Dependency
124
146
  requirement: !ruby/object:Gem::Requirement
125
147
  requirements:
126
- - - '>='
148
+ - - ">="
127
149
  - !ruby/object:Gem::Version
128
150
  version: '0'
151
+ name: docker-api
129
152
  prerelease: false
130
153
  type: :development
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
131
159
  description: This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program
132
160
  email: info@elastic.co
133
161
  executables: []
134
162
  extensions: []
135
163
  extra_rdoc_files: []
136
164
  files:
137
- - lib/logstash/inputs/jdbc.rb
138
- - lib/logstash/plugin_mixins/jdbc.rb
139
- - spec/inputs/jdbc_spec.rb
140
- - logstash-input-jdbc.gemspec
141
- - README.md
142
165
  - CHANGELOG.md
143
166
  - Gemfile
144
167
  - LICENSE
145
168
  - NOTICE.TXT
169
+ - README.md
170
+ - lib/logstash/inputs/jdbc.rb
171
+ - lib/logstash/plugin_mixins/jdbc.rb
172
+ - logstash-input-jdbc.gemspec
173
+ - spec/inputs/jdbc_spec.rb
146
174
  homepage: http://www.elastic.co/guide/en/logstash/current/index.html
147
175
  licenses:
148
176
  - Apache License (2.0)
@@ -155,17 +183,17 @@ require_paths:
155
183
  - lib
156
184
  required_ruby_version: !ruby/object:Gem::Requirement
157
185
  requirements:
158
- - - '>='
186
+ - - ">="
159
187
  - !ruby/object:Gem::Version
160
188
  version: '0'
161
189
  required_rubygems_version: !ruby/object:Gem::Requirement
162
190
  requirements:
163
- - - '>='
191
+ - - ">="
164
192
  - !ruby/object:Gem::Version
165
193
  version: '0'
166
194
  requirements: []
167
195
  rubyforge_project:
168
- rubygems_version: 2.1.9
196
+ rubygems_version: 2.4.8
169
197
  signing_key:
170
198
  specification_version: 4
171
199
  summary: This example input streams a string at a definable interval.