fluent-plugin-pgjson 0.0.9 → 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/.travis.yml +17 -0
- data/Gemfile +1 -1
- data/README.md +38 -28
- data/Rakefile +3 -3
- data/fluent-plugin-pgjson.gemspec +4 -5
- data/lib/fluent/plugin/out_pgjson.rb +111 -99
- data/test/helper.rb +5 -5
- data/test/plugin/test_out.rb +28 -28
- metadata +14 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a4583a2849d4add68b6735fd279bed9d975fc9f78e88043cf07dee81bbcbb4f4
|
4
|
+
data.tar.gz: 2b13f3c83f4b35f605450c304b01d1a2510f5928609847aa7036f2ad885ec362
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee23b29a5a9d27a29be7bfa42e1ba4970e7876a2c422d535b9f47fb155a45c606646b5857a3865d4044bc7639a1966f4af6757f407d55ae47dac9026300f3c92
|
7
|
+
data.tar.gz: 7cb84bc39f1bfa14be686a31a6b14d3f47bf552c368b99ed4dbed8844ee6b726e514f5957d01a60009ecb03a9883871fb0d34c004f3cb3988a3e1bb3d6bec1e9
|
data/.travis.yml
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
language: ruby
|
2
|
+
|
3
|
+
rvm:
|
4
|
+
- 2.2
|
5
|
+
- 2.3
|
6
|
+
- 2.4
|
7
|
+
- 2.5
|
8
|
+
|
9
|
+
addons:
|
10
|
+
postgresql: "9.6"
|
11
|
+
|
12
|
+
services:
|
13
|
+
- postgresql
|
14
|
+
|
15
|
+
before_script:
|
16
|
+
- psql -c "create role fluentd with LOGIN CREATEDB password 'fluentd';" -U postgres
|
17
|
+
- psql -c "create database pgjsontest owner fluentd encoding 'utf-8'" -U postgres
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -4,19 +4,28 @@ Output Plugin for PostgreSQL Json Type.
|
|
4
4
|
|
5
5
|
<b>Json type is availble in PostgreSQL version over 9.2</b>
|
6
6
|
|
7
|
+
## Requirements
|
8
|
+
|
9
|
+
| fluent-plugin-pgjson | fluentd | Ruby |
|
10
|
+
|----------------------|------------|--------|
|
11
|
+
| >= 1.0.0 | >= v1.0.0 | >= 2.2 |
|
12
|
+
| < 1.0.0 | >= v0.12.0 | >= 1.9 |
|
13
|
+
|
7
14
|
## Installation
|
8
15
|
|
9
|
-
|
16
|
+
```
|
17
|
+
$ fluent-gem install fluent-plugin-pgjson
|
18
|
+
```
|
10
19
|
|
11
20
|
## Schema
|
12
21
|
|
13
|
-
Specified table must have
|
22
|
+
Specified table must have following schema:
|
14
23
|
|
15
|
-
|col|type|
|
16
|
-
|
17
|
-
|{tag_col}|Text|
|
18
|
-
|{time_col}|Timestamp WITH TIME ZONE|
|
19
|
-
|{record_col}|Json|
|
24
|
+
| col | type |
|
25
|
+
|--------------|--------------------------|
|
26
|
+
| {tag_col} | Text |
|
27
|
+
| {time_col} | Timestamp WITH TIME ZONE |
|
28
|
+
| {record_col} | Json |
|
20
29
|
|
21
30
|
### Example
|
22
31
|
|
@@ -39,19 +48,13 @@ CREATE TABLE fluentd (
|
|
39
48
|
);
|
40
49
|
```
|
41
50
|
|
42
|
-
### Configurable JSON Encoder
|
43
|
-
|
44
|
-
Fluentd's standard JSON encoder is `yajl`.
|
45
|
-
`yajl` is robust for invalid byte sequence.
|
46
|
-
But this plugin's default value is `json` which is Ruby standard JSON encoder for backward compatibility.
|
47
|
-
|
48
51
|
## Configuration
|
49
52
|
|
50
53
|
### Example
|
51
54
|
|
52
55
|
```
|
53
56
|
<match **>
|
54
|
-
type pgjson
|
57
|
+
@type pgjson
|
55
58
|
host localhost
|
56
59
|
port 5432
|
57
60
|
sslmode require
|
@@ -67,20 +70,27 @@ But this plugin's default value is `json` which is Ruby standard JSON encoder fo
|
|
67
70
|
|
68
71
|
### Parameter
|
69
72
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
73
|
+
* **host** (string) (optional): The hostname of PostgreSQL server
|
74
|
+
* Default value: `localhost`.
|
75
|
+
* **port** (integer) (optional): The port of PostgreSQL server
|
76
|
+
* Default value: `5432`.
|
77
|
+
* **sslmode** (enum) (optional): Set the sslmode to enable Eavesdropping protection/MITM protection. See [PostgreSQL Documentation](https://www.postgresql.org/docs/10/static/libpq-ssl.html) for more details.
|
78
|
+
* Available values: disable, allow, prefer, require, verify-ca, verify-full
|
79
|
+
* Default value: `prefer`.
|
80
|
+
* **database** (string) (required): The database name to connect
|
81
|
+
* **table** (string) (required): The table name to insert records
|
82
|
+
* **user** (string) (optional): The user name to connect database
|
83
|
+
* **password** (string) (optional): The password to connect database
|
84
|
+
* **time_col** (string) (optional): The column name for the time
|
85
|
+
* Default value: `time`.
|
86
|
+
* **tag_col** (string) (optional): The column name for the tag
|
87
|
+
* Default value: `tag`.
|
88
|
+
* **record_col** (string) (optional): The column name for the record
|
89
|
+
* Default value: `record`.
|
90
|
+
* **msgpack** (bool) (optional): If true, insert records formatted as msgpack
|
91
|
+
* **encoder** (enum) (optional): JSON encoder (yajl/json)
|
92
|
+
* Available values: yajl, json
|
93
|
+
* Default value: `yajl`.
|
84
94
|
|
85
95
|
## Copyright
|
86
96
|
|
data/Rakefile
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
#!/usr/bin/env rake
|
2
2
|
require "bundler/gem_tasks"
|
3
3
|
|
4
|
-
require
|
4
|
+
require "rake/testtask"
|
5
5
|
Rake::TestTask.new(:test) do |test|
|
6
|
-
test.libs <<
|
7
|
-
test.pattern =
|
6
|
+
test.libs << "lib" << "test"
|
7
|
+
test.pattern = "test/**/test_*.rb"
|
8
8
|
test.verbose = true
|
9
9
|
end
|
10
10
|
|
@@ -1,13 +1,12 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
1
|
$:.push File.expand_path("../lib", __FILE__)
|
3
2
|
|
4
3
|
Gem::Specification.new do |s|
|
5
4
|
s.name = "fluent-plugin-pgjson"
|
6
|
-
s.version = "0.0
|
5
|
+
s.version = "1.0.0"
|
7
6
|
s.authors = ["OKUNO Akihiro"]
|
8
7
|
s.email = ["choplin.choplin@gmail.com"]
|
9
|
-
s.homepage = "https://github.com/
|
10
|
-
s.summary = %q{}
|
8
|
+
s.homepage = "https://github.com/fluent-plugins-nursery/fluent-plugin-pgjson"
|
9
|
+
s.summary = %q{Fluentd Output Plugin for PostgreSQL JSON Type.}
|
11
10
|
s.description = %q{}
|
12
11
|
s.license = "Apache-2.0"
|
13
12
|
|
@@ -16,7 +15,7 @@ Gem::Specification.new do |s|
|
|
16
15
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
16
|
s.require_paths = ["lib"]
|
18
17
|
|
19
|
-
s.add_runtime_dependency "fluentd"
|
18
|
+
s.add_runtime_dependency "fluentd", ">=1.0.0", "<2"
|
20
19
|
s.add_runtime_dependency "pg"
|
21
20
|
s.add_development_dependency "test-unit", ">= 3.1.0"
|
22
21
|
s.add_development_dependency "rake", ">= 11.0"
|
@@ -1,121 +1,133 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
1
|
+
require "fluent/plugin/output"
|
2
|
+
require "pg"
|
3
|
+
require "yajl"
|
4
|
+
require "json"
|
5
5
|
|
6
6
|
module Fluent::Plugin
|
7
|
+
class PgJsonOutput < Fluent::Plugin::Output
|
8
|
+
Fluent::Plugin.register_output("pgjson", self)
|
9
|
+
|
10
|
+
helpers :compat_parameters
|
11
|
+
|
12
|
+
DEFAULT_BUFFER_TYPE = "memory"
|
13
|
+
|
14
|
+
desc "The hostname of PostgreSQL server"
|
15
|
+
config_param :host, :string, default: "localhost"
|
16
|
+
desc "The port of PostgreSQL server"
|
17
|
+
config_param :port, :integer, default: 5432
|
18
|
+
desc "Set the sslmode to enable Eavesdropping protection/MITM protection"
|
19
|
+
config_param :sslmode, :enum, list: %i[disable allow prefer require verify-ca verify-full], default: :prefer
|
20
|
+
desc "The database name to connect"
|
21
|
+
config_param :database, :string
|
22
|
+
desc "The table name to insert records"
|
23
|
+
config_param :table, :string
|
24
|
+
desc "The user name to connect database"
|
25
|
+
config_param :user, :string, default: nil
|
26
|
+
desc "The password to connect database"
|
27
|
+
config_param :password, :string, default: nil, secret: true
|
28
|
+
desc "The column name for the time"
|
29
|
+
config_param :time_col, :string, default: "time"
|
30
|
+
desc "The column name for the tag"
|
31
|
+
config_param :tag_col, :string, default: "tag"
|
32
|
+
desc "The column name for the record"
|
33
|
+
config_param :record_col, :string, default: "record"
|
34
|
+
desc "If true, insert records formatted as msgpack"
|
35
|
+
config_param :msgpack, :bool, default: false
|
36
|
+
desc "JSON encoder (yajl/json)"
|
37
|
+
config_param :encoder, :enum, list: [:yajl, :json], default: :yajl
|
38
|
+
|
39
|
+
config_param :time_format, :string, default: "%F %T.%N %z"
|
40
|
+
|
41
|
+
config_section :buffer do
|
42
|
+
config_set_default :@type, DEFAULT_BUFFER_TYPE
|
43
|
+
config_set_default :chunk_keys, ["tag"]
|
44
|
+
end
|
7
45
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
helpers :compat_parameters
|
12
|
-
|
13
|
-
DEFAULT_BUFFER_TYPE = "memory"
|
14
|
-
|
15
|
-
config_param :host , :string , :default => 'localhost'
|
16
|
-
config_param :port , :integer , :default => 5432
|
17
|
-
config_param :sslmode , :string , :default => 'prefer'
|
18
|
-
config_param :database , :string
|
19
|
-
config_param :table , :string
|
20
|
-
config_param :user , :string , :default => nil
|
21
|
-
config_param :password , :string , :default => nil , :secret => true
|
22
|
-
config_param :time_col , :string , :default => 'time'
|
23
|
-
config_param :tag_col , :string , :default => 'tag'
|
24
|
-
config_param :record_col , :string , :default => 'record'
|
25
|
-
config_param :msgpack , :bool , :default => false
|
26
|
-
config_param :encoder , :enum, list: [:yajl, :json], :default => :json
|
27
|
-
config_param :time_format, :string , :default => '%F %T.%N %z'
|
28
|
-
|
29
|
-
config_section :buffer do
|
30
|
-
config_set_default :@type, DEFAULT_BUFFER_TYPE
|
31
|
-
config_set_default :chunk_keys, ['tag']
|
32
|
-
end
|
33
|
-
|
34
|
-
def initialize
|
35
|
-
super
|
36
|
-
@conn = nil
|
37
|
-
end
|
38
|
-
|
39
|
-
def configure(conf)
|
40
|
-
compat_parameters_convert(conf, :buffer)
|
41
|
-
super
|
42
|
-
unless @chunk_key_tag
|
43
|
-
raise Fluent::ConfigError, "'tag' in chunk_keys is required."
|
46
|
+
def initialize
|
47
|
+
super
|
48
|
+
@conn = nil
|
44
49
|
end
|
45
|
-
@encoder = case @encoder
|
46
|
-
when :yajl
|
47
|
-
Yajl
|
48
|
-
when :json
|
49
|
-
JSON
|
50
|
-
end
|
51
|
-
end
|
52
50
|
|
53
|
-
|
54
|
-
|
55
|
-
|
51
|
+
def configure(conf)
|
52
|
+
compat_parameters_convert(conf, :buffer)
|
53
|
+
super
|
54
|
+
unless @chunk_key_tag
|
55
|
+
raise Fluent::ConfigError, "'tag' in chunk_keys is required."
|
56
|
+
end
|
57
|
+
@encoder = case @encoder
|
58
|
+
when :yajl
|
59
|
+
Yajl
|
60
|
+
when :json
|
61
|
+
JSON
|
62
|
+
end
|
56
63
|
end
|
57
64
|
|
58
|
-
|
59
|
-
|
65
|
+
def shutdown
|
66
|
+
if ! @conn.nil? and ! @conn.finished?
|
67
|
+
@conn.close()
|
68
|
+
end
|
60
69
|
|
61
|
-
|
62
|
-
|
63
|
-
end
|
70
|
+
super
|
71
|
+
end
|
64
72
|
|
65
|
-
|
66
|
-
|
67
|
-
|
73
|
+
def formatted_to_msgpack_binary
|
74
|
+
true
|
75
|
+
end
|
68
76
|
|
69
|
-
|
70
|
-
|
71
|
-
|
77
|
+
def multi_workers_ready?
|
78
|
+
true
|
79
|
+
end
|
80
|
+
|
81
|
+
def format(tag, time, record)
|
82
|
+
[Time.at(time).strftime(@time_format), record].to_msgpack
|
83
|
+
end
|
72
84
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
85
|
+
def write(chunk)
|
86
|
+
init_connection
|
87
|
+
@conn.exec("COPY #{@table} (#{@tag_col}, #{@time_col}, #{@record_col}) FROM STDIN WITH DELIMITER E'\\x01'")
|
88
|
+
begin
|
89
|
+
tag = chunk.metadata.tag
|
90
|
+
chunk.msgpack_each do |time, record|
|
91
|
+
@conn.put_copy_data "#{tag}\x01#{time}\x01#{record_value(record)}\n"
|
92
|
+
end
|
93
|
+
rescue => err
|
94
|
+
errmsg = "%s while copy data: %s" % [ err.class.name, err.message ]
|
95
|
+
@conn.put_copy_end( errmsg )
|
96
|
+
@conn.get_result
|
97
|
+
raise
|
98
|
+
else
|
99
|
+
@conn.put_copy_end
|
100
|
+
res = @conn.get_result
|
101
|
+
raise res.result_error_message if res.result_status!=PG::PGRES_COMMAND_OK
|
80
102
|
end
|
81
|
-
rescue => err
|
82
|
-
errmsg = "%s while copy data: %s" % [ err.class.name, err.message ]
|
83
|
-
@conn.put_copy_end( errmsg )
|
84
|
-
@conn.get_result
|
85
|
-
raise
|
86
|
-
else
|
87
|
-
@conn.put_copy_end
|
88
|
-
res = @conn.get_result
|
89
|
-
raise res.result_error_message if res.result_status!=PG::PGRES_COMMAND_OK
|
90
103
|
end
|
91
|
-
end
|
92
104
|
|
93
|
-
|
94
|
-
def init_connection
|
95
|
-
if @conn.nil?
|
96
|
-
$log.debug "connecting to PostgreSQL server #{@host}:#{@port}, database #{@database}..."
|
105
|
+
private
|
97
106
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
@conn =
|
107
|
+
def init_connection
|
108
|
+
if @conn.nil?
|
109
|
+
log.debug "connecting to PostgreSQL server #{@host}:#{@port}, database #{@database}..."
|
110
|
+
|
111
|
+
begin
|
112
|
+
@conn = PG::Connection.new(dbname: @database, host: @host, port: @port, sslmode: @sslmode, user: @user, password: @password)
|
113
|
+
rescue
|
114
|
+
if ! @conn.nil?
|
115
|
+
@conn.close()
|
116
|
+
@conn = nil
|
117
|
+
end
|
118
|
+
raise "failed to initialize connection: #$!"
|
104
119
|
end
|
105
|
-
raise "failed to initialize connection: #$!"
|
106
120
|
end
|
107
121
|
end
|
108
|
-
end
|
109
122
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
123
|
+
def record_value(record)
|
124
|
+
if @msgpack
|
125
|
+
"\\#{@conn.escape_bytea(record.to_msgpack)}"
|
126
|
+
else
|
127
|
+
json = @encoder.dump(record)
|
128
|
+
json.gsub!(/\\/){ '\\\\' }
|
129
|
+
json
|
130
|
+
end
|
117
131
|
end
|
118
132
|
end
|
119
133
|
end
|
120
|
-
|
121
|
-
end
|
data/test/helper.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "bundler/setup"
|
2
|
+
require "test/unit"
|
3
3
|
|
4
|
-
$LOAD_PATH.unshift(File.join(__dir__,
|
4
|
+
$LOAD_PATH.unshift(File.join(__dir__, "..", "lib"))
|
5
5
|
$LOAD_PATH.unshift(__dir__)
|
6
|
-
require
|
7
|
-
require
|
6
|
+
require "fluent/test"
|
7
|
+
require "fluent/plugin/out_pgjson"
|
data/test/plugin/test_out.rb
CHANGED
@@ -1,26 +1,26 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
1
|
+
require "pg"
|
2
|
+
require "securerandom"
|
3
|
+
require "helper"
|
4
|
+
require "fluent/test/driver/output"
|
5
|
+
require "fluent/test/helpers"
|
6
6
|
|
7
7
|
class PgJsonOutputTest < Test::Unit::TestCase
|
8
8
|
include Fluent::Test::Helpers
|
9
9
|
|
10
10
|
HOST = "localhost"
|
11
11
|
PORT = 5432
|
12
|
-
DATABASE = "
|
12
|
+
DATABASE = "pgjsontest"
|
13
13
|
TABLE = "test_fluentd_#{SecureRandom.hex}"
|
14
|
-
USER =
|
15
|
-
PASSWORD =
|
14
|
+
USER = "fluentd"
|
15
|
+
PASSWORD = "fluentd"
|
16
16
|
|
17
17
|
TIME_COL = "time"
|
18
18
|
TAG_COL = "tag"
|
19
19
|
RECORD_COL = "record"
|
20
|
-
ENCODER =
|
20
|
+
ENCODER = Yajl
|
21
21
|
|
22
22
|
CONFIG = %[
|
23
|
-
type pgjson
|
23
|
+
@type pgjson
|
24
24
|
host #{HOST}
|
25
25
|
port #{PORT}
|
26
26
|
database #{DATABASE}
|
@@ -58,20 +58,20 @@ class PgJsonOutputTest < Test::Unit::TestCase
|
|
58
58
|
def test_invalid_chunk_keys
|
59
59
|
assert_raise_message(/'tag' in chunk_keys is required./) do
|
60
60
|
create_driver(Fluent::Config::Element.new(
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
61
|
+
"ROOT", "", {
|
62
|
+
"@type" => "pgjson",
|
63
|
+
"host" => "#{HOST}",
|
64
|
+
"port" => "#{PORT}",
|
65
|
+
"database" => "#{DATABASE}",
|
66
|
+
"table" => "#{TABLE}",
|
67
|
+
"user" => "#{USER}",
|
68
|
+
"password" => "#{PASSWORD}",
|
69
|
+
"time_col" => "#{TIME_COL}",
|
70
|
+
"tag_col" => "#{TAG_COL}",
|
71
|
+
"record_col" => "#{RECORD_COL}",
|
72
72
|
}, [
|
73
|
-
Fluent::Config::Element.new(
|
74
|
-
|
73
|
+
Fluent::Config::Element.new("buffer", "mykey", {
|
74
|
+
"chunk_keys" => "mykey"
|
75
75
|
}, [])
|
76
76
|
]))
|
77
77
|
end
|
@@ -79,7 +79,7 @@ class PgJsonOutputTest < Test::Unit::TestCase
|
|
79
79
|
|
80
80
|
def test_write
|
81
81
|
with_connection do |conn|
|
82
|
-
tag =
|
82
|
+
tag = "test"
|
83
83
|
time = event_time("2014-12-26 07:58:37 UTC")
|
84
84
|
record = {"a"=>1}
|
85
85
|
|
@@ -98,7 +98,7 @@ class PgJsonOutputTest < Test::Unit::TestCase
|
|
98
98
|
|
99
99
|
def test_escape_of_backslash
|
100
100
|
with_connection do |conn|
|
101
|
-
tag =
|
101
|
+
tag = "test"
|
102
102
|
time = event_time("2014-12-26 07:58:37 UTC")
|
103
103
|
record = {"a"=>"\"foo\""}
|
104
104
|
|
@@ -117,13 +117,13 @@ class PgJsonOutputTest < Test::Unit::TestCase
|
|
117
117
|
|
118
118
|
def test_invalid_json
|
119
119
|
with_connection do |conn|
|
120
|
-
tag =
|
120
|
+
tag = "test"
|
121
121
|
time = event_time("2014-12-26 07:58:37 UTC")
|
122
122
|
|
123
123
|
d = create_driver(CONFIG)
|
124
124
|
instance = d.instance
|
125
125
|
def instance.record_value(record)
|
126
|
-
|
126
|
+
"invalid json"
|
127
127
|
end
|
128
128
|
|
129
129
|
assert_raise RuntimeError do
|
@@ -139,7 +139,7 @@ class PgJsonOutputTest < Test::Unit::TestCase
|
|
139
139
|
conn = nil
|
140
140
|
|
141
141
|
assert_nothing_raised do
|
142
|
-
conn = PG::Connection.new(:
|
142
|
+
conn = PG::Connection.new(dbname: DATABASE, host: HOST, port: PORT, user: USER, password: PASSWORD)
|
143
143
|
end
|
144
144
|
|
145
145
|
conn
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-pgjson
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OKUNO Akihiro
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -16,14 +16,20 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.0.0
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '2'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
27
|
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
29
|
+
version: 1.0.0
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: pg
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -74,6 +80,7 @@ extensions: []
|
|
74
80
|
extra_rdoc_files: []
|
75
81
|
files:
|
76
82
|
- ".gitignore"
|
83
|
+
- ".travis.yml"
|
77
84
|
- Gemfile
|
78
85
|
- LICENSE
|
79
86
|
- README.md
|
@@ -83,7 +90,7 @@ files:
|
|
83
90
|
- lib/fluent/plugin/out_pgjson.rb
|
84
91
|
- test/helper.rb
|
85
92
|
- test/plugin/test_out.rb
|
86
|
-
homepage: https://github.com/
|
93
|
+
homepage: https://github.com/fluent-plugins-nursery/fluent-plugin-pgjson
|
87
94
|
licenses:
|
88
95
|
- Apache-2.0
|
89
96
|
metadata: {}
|
@@ -106,7 +113,5 @@ rubyforge_project:
|
|
106
113
|
rubygems_version: 2.7.6
|
107
114
|
signing_key:
|
108
115
|
specification_version: 4
|
109
|
-
summary:
|
110
|
-
test_files:
|
111
|
-
- test/helper.rb
|
112
|
-
- test/plugin/test_out.rb
|
116
|
+
summary: Fluentd Output Plugin for PostgreSQL JSON Type.
|
117
|
+
test_files: []
|