fluent-plugin-google-cloud 0.6.16 → 0.6.17
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/fluent-plugin-google-cloud.gemspec +1 -1
- data/lib/fluent/plugin/out_google_cloud.rb +28 -3
- data/test/plugin/base_test.rb +7 -6
- data/test/plugin/constants.rb +7 -3
- data/test/plugin/data/new-style-credentials.json +12 -0
- data/test/plugin/test_out_google_cloud.rb +2 -2
- data/test/plugin/test_out_google_cloud_grpc.rb +2 -2
- metadata +4 -3
- data/Gemfile.lock +0 -162
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '03907dea1776a461bfedccdc6bc8c05fa099e557'
|
4
|
+
data.tar.gz: 81d1c2a217900442793ae78dccf58ccafc88d21e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 269987948317e7917f8e237132a741d363baa9a273e1e936b5170e551d39a27cb7c480ca59295a5eae6136eb49156ae0e0f2ece80c3a2c5870305127a1fbc2da
|
7
|
+
data.tar.gz: e9c791824dcc361f6d958aeb6dd423ec3d8f51168cc448883f777c775e6ac6c33aebe443912883c0dd61e9079cf501ab15b93fc3e474989ff5d1ab3df40050e5
|
@@ -10,7 +10,7 @@ eos
|
|
10
10
|
gem.homepage =
|
11
11
|
'https://github.com/GoogleCloudPlatform/fluent-plugin-google-cloud'
|
12
12
|
gem.license = 'Apache-2.0'
|
13
|
-
gem.version = '0.6.
|
13
|
+
gem.version = '0.6.17'
|
14
14
|
gem.authors = ['Todd Derr', 'Alex Robinson']
|
15
15
|
gem.email = ['salty@google.com']
|
16
16
|
gem.required_ruby_version = Gem::Requirement.new('>= 2.0')
|
@@ -38,6 +38,27 @@ module Google
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
+
module Google
|
42
|
+
module Auth
|
43
|
+
# Extract project_id in initialize.
|
44
|
+
class ServiceAccountCredentials
|
45
|
+
singleton_class.send(:alias_method, :super_make_creds, :make_creds)
|
46
|
+
def self.make_creds(options = {})
|
47
|
+
json_key_io, scope = options.values_at(:json_key_io, :scope)
|
48
|
+
if json_key_io
|
49
|
+
json_key = MultiJson.load(json_key_io.read)
|
50
|
+
project_id = json_key['project_id']
|
51
|
+
end
|
52
|
+
creds = super_make_creds(
|
53
|
+
json_key_io: StringIO.new(MultiJson.dump(json_key)), scope: scope)
|
54
|
+
creds.instance_variable_set(:@project_id, project_id) if project_id
|
55
|
+
creds
|
56
|
+
end
|
57
|
+
attr_reader :project_id
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
41
62
|
module Fluent
|
42
63
|
# fluentd output plugin for the Stackdriver Logging API
|
43
64
|
class GoogleCloudOutput < BufferedOutput
|
@@ -199,7 +220,7 @@ module Fluent
|
|
199
220
|
Fluent::Plugin.register_output('google_cloud', self)
|
200
221
|
|
201
222
|
PLUGIN_NAME = 'Fluentd Google Cloud Logging plugin'.freeze
|
202
|
-
PLUGIN_VERSION = '0.6.
|
223
|
+
PLUGIN_VERSION = '0.6.17'.freeze
|
203
224
|
|
204
225
|
# Name of the the Google cloud logging write scope.
|
205
226
|
LOGGING_SCOPE = 'https://www.googleapis.com/auth/logging.write'.freeze
|
@@ -361,7 +382,7 @@ module Fluent
|
|
361
382
|
|
362
383
|
# Whether to split log entries with different log tags into different
|
363
384
|
# requests when talking to Stackdriver Logging API.
|
364
|
-
config_param :split_logs_by_tag, :bool, :default =>
|
385
|
+
config_param :split_logs_by_tag, :bool, :default => false
|
365
386
|
|
366
387
|
# rubocop:enable Style/HashSyntax
|
367
388
|
|
@@ -611,7 +632,8 @@ module Fluent
|
|
611
632
|
end
|
612
633
|
combined_entries.concat(request[:entries])
|
613
634
|
end
|
614
|
-
@write_request.call(entries: combined_entries)
|
635
|
+
@write_request.call(entries: combined_entries) unless
|
636
|
+
combined_entries.empty?
|
615
637
|
end
|
616
638
|
end
|
617
639
|
|
@@ -1412,6 +1434,9 @@ module Fluent
|
|
1412
1434
|
# Returns the project ID (as a string) on success, or nil on failure.
|
1413
1435
|
def self.project_id
|
1414
1436
|
creds = Google::Auth.get_application_default(LOGGING_SCOPE)
|
1437
|
+
if creds.respond_to?(:project_id)
|
1438
|
+
return creds.project_id if creds.project_id
|
1439
|
+
end
|
1415
1440
|
if creds.issuer
|
1416
1441
|
id = extract_project_id(creds.issuer)
|
1417
1442
|
return id unless id.nil?
|
data/test/plugin/base_test.rb
CHANGED
@@ -227,7 +227,8 @@ module BaseTest
|
|
227
227
|
def test_project_id_from_credentials
|
228
228
|
%w(gce ec2).each do |platform|
|
229
229
|
send("setup_#{platform}_metadata_stubs")
|
230
|
-
[IAM_CREDENTIALS, LEGACY_CREDENTIALS].each
|
230
|
+
[IAM_CREDENTIALS, NEW_STYLE_CREDENTIALS, LEGACY_CREDENTIALS].each \
|
231
|
+
do |creds|
|
231
232
|
ENV['GOOGLE_APPLICATION_CREDENTIALS'] = creds[:path]
|
232
233
|
d = create_driver
|
233
234
|
d.run
|
@@ -656,8 +657,8 @@ module BaseTest
|
|
656
657
|
def test_configure_split_logs_by_tag
|
657
658
|
setup_gce_metadata_stubs
|
658
659
|
{
|
659
|
-
APPLICATION_DEFAULT_CONFIG =>
|
660
|
-
|
660
|
+
APPLICATION_DEFAULT_CONFIG => false,
|
661
|
+
ENABLE_SPLIT_LOGS_BY_TAG_CONFIG => true
|
661
662
|
}.each do |(config, split_logs_by_tag)|
|
662
663
|
d = create_driver(config)
|
663
664
|
assert_equal split_logs_by_tag,
|
@@ -672,14 +673,14 @@ module BaseTest
|
|
672
673
|
"projects/test-project-id/logs/tag#{index}"
|
673
674
|
end
|
674
675
|
[
|
676
|
+
[APPLICATION_DEFAULT_CONFIG, 1, [''], dynamic_log_names],
|
675
677
|
# [] returns nil for any index.
|
676
|
-
[
|
677
|
-
[DISABLE_SPLIT_LOGS_BY_TAG_CONFIG, 1, [''], dynamic_log_names]
|
678
|
+
[ENABLE_SPLIT_LOGS_BY_TAG_CONFIG, log_entry_count, dynamic_log_names, []]
|
678
679
|
].each do |(config, request_count, request_log_names, entry_log_names)|
|
679
680
|
setup_prometheus
|
680
681
|
setup_logging_stubs do
|
681
682
|
@logs_sent = []
|
682
|
-
d = create_driver(config +
|
683
|
+
d = create_driver(config + ENABLE_PROMETHEUS_CONFIG, 'test', true)
|
683
684
|
log_entry_count.times do |i|
|
684
685
|
d.emit("tag#{i}", 'message' => log_entry(i))
|
685
686
|
end
|
data/test/plugin/constants.rb
CHANGED
@@ -133,6 +133,10 @@ module Constants
|
|
133
133
|
path: 'test/plugin/data/iam-credentials.json',
|
134
134
|
project_id: 'fluent-test-project'
|
135
135
|
}.freeze
|
136
|
+
NEW_STYLE_CREDENTIALS = {
|
137
|
+
path: 'test/plugin/data/new-style-credentials.json',
|
138
|
+
project_id: 'fluent-test-project'
|
139
|
+
}.freeze
|
136
140
|
LEGACY_CREDENTIALS = {
|
137
141
|
path: 'test/plugin/data/credentials.json',
|
138
142
|
project_id: '847859579879'
|
@@ -182,11 +186,11 @@ module Constants
|
|
182
186
|
detect_subservice false
|
183
187
|
).freeze
|
184
188
|
|
185
|
-
|
186
|
-
split_logs_by_tag
|
189
|
+
ENABLE_SPLIT_LOGS_BY_TAG_CONFIG = %(
|
190
|
+
split_logs_by_tag true
|
187
191
|
).freeze
|
188
192
|
|
189
|
-
|
193
|
+
ENABLE_PROMETHEUS_CONFIG = %(
|
190
194
|
enable_monitoring true
|
191
195
|
monitoring_type prometheus
|
192
196
|
).freeze
|
@@ -0,0 +1,12 @@
|
|
1
|
+
{
|
2
|
+
"type": "service_account",
|
3
|
+
"private_key_id": "5985985bcdfe958895bd8d76456fe90d8484789d",
|
4
|
+
"private_key": "-----BEGIN PRIVATE KEY-----\nMIICdwIBADANBgkqhkiG9w0BAQEcAASCAmEwggJdAgEAAoGBAKizy6B+aJ0Wua0e\njZ3pkHV0a2Ce1prJGhzGL5NpkbUjk6J11Kwp1yvPikTwALyy4PtUIZ+23D/unVRM\nHlKa2MkHIGjJg+mykX5Bd7eRJOxdJ0iu+eRWh7HiH+mdDntHwaz4xXihJBog71qS\n+9N+r2hy1hicybechchMiXHhmWPbAgMBAAECgYEAnSzeI4qCZxEcLtnPcXeBWpz7\nycpTAWUpycMvsjTiRxR9YRhM65YT3cJ//VhqJ2S1ThOcPCt/KqViuX4tpiKUo7qA\nH1AI9APbTo66wiGpgy+qG0wPJkKIQC8PpITNNcHqcbbAsIr3/XQduihsqxP2W2mT\na0nk5XJghs1Wa0xt28ECQQDgMqZjVDcDQyqM+bcBKJUUc/247KusjpdK70r6sx2o\nkZJGy/w9exlM5QrB6DLpw34/p5x4MoecZ7lS3yHdmaEhAkEAwKHsV4k5SXTUp4+J\nWK6GlQVvnwc+PQdX5gzt4/gWSY0Op5EQ+YD6cC7Lkz+GzXUzvmdp35c0ahS93D1/\nZLTZewJBAIjOc3cHMNadyr5BtulPEUE0ro+EY/GlBS8lu/QlDmkJg2AOI3qEvliM\nvza58S9yKny/U5yJAPVw2cZ3ABxQHeECQDyBX8PrBURuXvE2o5RoVTtvlqziAi3X\nJaPLwdkOLqnxlX3KkgNcoM0l1amtlYDpZcRVcSs0+9TqKOyJoH8YUwsCQA4cJmv3\n119xcijXPM2HZOB5cCxTHj59MRtQlLboNZ2witDCJ20eG9AC3ZcH7csS0H9dz8Jr\nXGEoQMPD2ck4T0U\u003d\n-----END PRIVATE KEY-----\n",
|
5
|
+
"client_email": "account-name@fluent-test-project-1.iam.gserviceaccount.com",
|
6
|
+
"client_id": "275859789789367827863",
|
7
|
+
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
8
|
+
"token_uri": "https://accounts.google.com/o/oauth2/token",
|
9
|
+
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
10
|
+
"project_id": "fluent-test-project",
|
11
|
+
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/account-name%40fluent-test-project.iam.gserviceaccount.com"
|
12
|
+
}
|
@@ -61,7 +61,7 @@ class GoogleCloudOutputTest < Test::Unit::TestCase
|
|
61
61
|
stub_request(:post, WRITE_LOG_ENTRIES_URI)
|
62
62
|
.to_return(status: root_error_code,
|
63
63
|
body: PARTIAL_SUCCESS_RESPONSE_BODY.to_json)
|
64
|
-
d = create_driver(
|
64
|
+
d = create_driver(ENABLE_PROMETHEUS_CONFIG)
|
65
65
|
4.times do |i|
|
66
66
|
d.emit('message' => log_entry(i.to_s))
|
67
67
|
end
|
@@ -123,7 +123,7 @@ class GoogleCloudOutputTest < Test::Unit::TestCase
|
|
123
123
|
stub_request(:post, WRITE_LOG_ENTRIES_URI)
|
124
124
|
.to_return(status: code, body: 'Some Message')
|
125
125
|
(1..request_count).each do
|
126
|
-
d = create_driver(
|
126
|
+
d = create_driver(ENABLE_PROMETHEUS_CONFIG)
|
127
127
|
(1..entry_count).each do |i|
|
128
128
|
d.emit('message' => log_entry(i.to_s))
|
129
129
|
end
|
@@ -59,7 +59,7 @@ class GoogleCloudOutputGRPCTest < Test::Unit::TestCase
|
|
59
59
|
'User not authorized.', PARTIAL_SUCCESS_GRPC_METADATA) do
|
60
60
|
# The API Client should not retry this and the plugin should consume
|
61
61
|
# the exception.
|
62
|
-
d = create_driver(
|
62
|
+
d = create_driver(ENABLE_PROMETHEUS_CONFIG)
|
63
63
|
4.times do |i|
|
64
64
|
d.emit('message' => log_entry(i.to_s))
|
65
65
|
end
|
@@ -131,7 +131,7 @@ class GoogleCloudOutputGRPCTest < Test::Unit::TestCase
|
|
131
131
|
setup_prometheus
|
132
132
|
(1..request_count).each do
|
133
133
|
setup_logging_stubs(should_fail, code, 'SomeMessage') do
|
134
|
-
d = create_driver(USE_GRPC_CONFIG +
|
134
|
+
d = create_driver(USE_GRPC_CONFIG + ENABLE_PROMETHEUS_CONFIG, 'test')
|
135
135
|
(1..entry_count).each do |i|
|
136
136
|
d.emit('message' => log_entry(i.to_s))
|
137
137
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-google-cloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Todd Derr
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-03-
|
12
|
+
date: 2018-03-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fluentd
|
@@ -212,7 +212,6 @@ extra_rdoc_files: []
|
|
212
212
|
files:
|
213
213
|
- CONTRIBUTING
|
214
214
|
- Gemfile
|
215
|
-
- Gemfile.lock
|
216
215
|
- LICENSE
|
217
216
|
- README.rdoc
|
218
217
|
- Rakefile
|
@@ -226,6 +225,7 @@ files:
|
|
226
225
|
- test/plugin/data/credentials.json
|
227
226
|
- test/plugin/data/iam-credentials.json
|
228
227
|
- test/plugin/data/invalid_credentials.json
|
228
|
+
- test/plugin/data/new-style-credentials.json
|
229
229
|
- test/plugin/test_driver.rb
|
230
230
|
- test/plugin/test_out_google_cloud.rb
|
231
231
|
- test/plugin/test_out_google_cloud_grpc.rb
|
@@ -261,6 +261,7 @@ test_files:
|
|
261
261
|
- test/plugin/data/credentials.json
|
262
262
|
- test/plugin/data/iam-credentials.json
|
263
263
|
- test/plugin/data/invalid_credentials.json
|
264
|
+
- test/plugin/data/new-style-credentials.json
|
264
265
|
- test/plugin/test_driver.rb
|
265
266
|
- test/plugin/test_out_google_cloud.rb
|
266
267
|
- test/plugin/test_out_google_cloud_grpc.rb
|
data/Gemfile.lock
DELETED
@@ -1,162 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
fluent-plugin-google-cloud (0.6.16)
|
5
|
-
fluentd (~> 0.10)
|
6
|
-
google-api-client (~> 0.17)
|
7
|
-
google-cloud-logging (~> 1.3, >= 1.3.2)
|
8
|
-
googleapis-common-protos (~> 1.3)
|
9
|
-
googleauth (~> 0.6)
|
10
|
-
grpc (~> 1.0)
|
11
|
-
json (~> 1.8)
|
12
|
-
|
13
|
-
GEM
|
14
|
-
remote: https://rubygems.org/
|
15
|
-
specs:
|
16
|
-
addressable (2.5.2)
|
17
|
-
public_suffix (>= 2.0.2, < 4.0)
|
18
|
-
ast (2.4.0)
|
19
|
-
cool.io (1.5.3)
|
20
|
-
crack (0.4.3)
|
21
|
-
safe_yaml (~> 1.0.0)
|
22
|
-
declarative (0.0.10)
|
23
|
-
declarative-option (0.1.0)
|
24
|
-
faraday (0.14.0)
|
25
|
-
multipart-post (>= 1.2, < 3)
|
26
|
-
fluentd (0.14.25)
|
27
|
-
cool.io (>= 1.4.5, < 2.0.0)
|
28
|
-
http_parser.rb (>= 0.5.1, < 0.7.0)
|
29
|
-
msgpack (>= 0.7.0, < 2.0.0)
|
30
|
-
ruby_dig (~> 0.0.2)
|
31
|
-
serverengine (>= 2.0.4, < 3.0.0)
|
32
|
-
sigdump (~> 0.2.2)
|
33
|
-
strptime (~> 0.1.7)
|
34
|
-
tzinfo (~> 1.0)
|
35
|
-
tzinfo-data (~> 1.0)
|
36
|
-
yajl-ruby (~> 1.0)
|
37
|
-
google-api-client (0.19.8)
|
38
|
-
addressable (~> 2.5, >= 2.5.1)
|
39
|
-
googleauth (>= 0.5, < 0.7.0)
|
40
|
-
httpclient (>= 2.8.1, < 3.0)
|
41
|
-
mime-types (~> 3.0)
|
42
|
-
representable (~> 3.0)
|
43
|
-
retriable (>= 2.0, < 4.0)
|
44
|
-
google-cloud-core (1.2.0)
|
45
|
-
google-cloud-env (~> 1.0)
|
46
|
-
google-cloud-env (1.0.1)
|
47
|
-
faraday (~> 0.11)
|
48
|
-
google-cloud-logging (1.5.0)
|
49
|
-
google-cloud-core (~> 1.2)
|
50
|
-
google-gax (~> 1.0)
|
51
|
-
stackdriver-core (~> 1.3)
|
52
|
-
google-gax (1.0.1)
|
53
|
-
google-protobuf (~> 3.2)
|
54
|
-
googleapis-common-protos (>= 1.3.5, < 2.0)
|
55
|
-
googleauth (~> 0.6.2)
|
56
|
-
grpc (>= 1.7.2, < 2.0)
|
57
|
-
rly (~> 0.2.3)
|
58
|
-
google-protobuf (3.5.1.2)
|
59
|
-
googleapis-common-protos (1.3.7)
|
60
|
-
google-protobuf (~> 3.0)
|
61
|
-
googleapis-common-protos-types (~> 1.0)
|
62
|
-
grpc (~> 1.0)
|
63
|
-
googleapis-common-protos-types (1.0.1)
|
64
|
-
google-protobuf (~> 3.0)
|
65
|
-
googleauth (0.6.2)
|
66
|
-
faraday (~> 0.12)
|
67
|
-
jwt (>= 1.4, < 3.0)
|
68
|
-
logging (~> 2.0)
|
69
|
-
memoist (~> 0.12)
|
70
|
-
multi_json (~> 1.11)
|
71
|
-
os (~> 0.9)
|
72
|
-
signet (~> 0.7)
|
73
|
-
grpc (1.9.1)
|
74
|
-
google-protobuf (~> 3.1)
|
75
|
-
googleapis-common-protos-types (~> 1.0.0)
|
76
|
-
googleauth (>= 0.5.1, < 0.7)
|
77
|
-
hashdiff (0.3.7)
|
78
|
-
http_parser.rb (0.6.0)
|
79
|
-
httpclient (2.8.3)
|
80
|
-
json (1.8.6)
|
81
|
-
jwt (2.1.0)
|
82
|
-
little-plugger (1.1.4)
|
83
|
-
logging (2.2.2)
|
84
|
-
little-plugger (~> 1.1)
|
85
|
-
multi_json (~> 1.10)
|
86
|
-
memoist (0.16.0)
|
87
|
-
metaclass (0.0.4)
|
88
|
-
mime-types (3.1)
|
89
|
-
mime-types-data (~> 3.2015)
|
90
|
-
mime-types-data (3.2016.0521)
|
91
|
-
mocha (1.3.0)
|
92
|
-
metaclass (~> 0.0.1)
|
93
|
-
msgpack (1.2.2)
|
94
|
-
multi_json (1.13.1)
|
95
|
-
multipart-post (2.0.0)
|
96
|
-
os (0.9.6)
|
97
|
-
parser (2.5.0.2)
|
98
|
-
ast (~> 2.4.0)
|
99
|
-
power_assert (1.1.1)
|
100
|
-
powerpack (0.1.1)
|
101
|
-
prometheus-client (0.7.1)
|
102
|
-
quantile (~> 0.2.0)
|
103
|
-
public_suffix (3.0.2)
|
104
|
-
quantile (0.2.0)
|
105
|
-
rainbow (2.2.2)
|
106
|
-
rake
|
107
|
-
rake (10.5.0)
|
108
|
-
representable (3.0.4)
|
109
|
-
declarative (< 0.1.0)
|
110
|
-
declarative-option (< 0.2.0)
|
111
|
-
uber (< 0.2.0)
|
112
|
-
retriable (3.1.1)
|
113
|
-
rly (0.2.3)
|
114
|
-
rubocop (0.39.0)
|
115
|
-
parser (>= 2.3.0.7, < 3.0)
|
116
|
-
powerpack (~> 0.1)
|
117
|
-
rainbow (>= 1.99.1, < 3.0)
|
118
|
-
ruby-progressbar (~> 1.7)
|
119
|
-
unicode-display_width (~> 1.0, >= 1.0.1)
|
120
|
-
ruby-progressbar (1.9.0)
|
121
|
-
ruby_dig (0.0.2)
|
122
|
-
safe_yaml (1.0.4)
|
123
|
-
serverengine (2.0.6)
|
124
|
-
sigdump (~> 0.2.2)
|
125
|
-
sigdump (0.2.4)
|
126
|
-
signet (0.8.1)
|
127
|
-
addressable (~> 2.3)
|
128
|
-
faraday (~> 0.9)
|
129
|
-
jwt (>= 1.5, < 3.0)
|
130
|
-
multi_json (~> 1.10)
|
131
|
-
stackdriver-core (1.3.0)
|
132
|
-
google-cloud-core (~> 1.2)
|
133
|
-
strptime (0.1.9)
|
134
|
-
test-unit (3.2.7)
|
135
|
-
power_assert
|
136
|
-
thread_safe (0.3.6)
|
137
|
-
tzinfo (1.2.5)
|
138
|
-
thread_safe (~> 0.1)
|
139
|
-
tzinfo-data (1.2018.3)
|
140
|
-
tzinfo (>= 1.0.0)
|
141
|
-
uber (0.1.0)
|
142
|
-
unicode-display_width (1.3.0)
|
143
|
-
webmock (2.3.2)
|
144
|
-
addressable (>= 2.3.6)
|
145
|
-
crack (>= 0.3.2)
|
146
|
-
hashdiff
|
147
|
-
yajl-ruby (1.3.1)
|
148
|
-
|
149
|
-
PLATFORMS
|
150
|
-
ruby
|
151
|
-
|
152
|
-
DEPENDENCIES
|
153
|
-
fluent-plugin-google-cloud!
|
154
|
-
mocha (~> 1.1)
|
155
|
-
prometheus-client (~> 0.7.1)
|
156
|
-
rake (~> 10.3)
|
157
|
-
rubocop (~> 0.39.0)
|
158
|
-
test-unit (~> 3.0)
|
159
|
-
webmock (~> 2.3.1)
|
160
|
-
|
161
|
-
BUNDLED WITH
|
162
|
-
1.16.1
|