signalfx 2.0.5 → 3.2.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
- SHA1:
3
- metadata.gz: d1cec7a5de514b8432cd66c22f331d2fb4fd14ed
4
- data.tar.gz: bd426b759f14b86519cf7c932816fca1f54ff107
2
+ SHA256:
3
+ metadata.gz: 6ce1db5601fdadfa9bf04572cc0cfee2449a9de8bc16aa906cdcd958f87a578e
4
+ data.tar.gz: 79ab897c2ba2b576ca19b52b49f93ac4871f406c4ec96337bb184ca2674b17df
5
5
  SHA512:
6
- metadata.gz: edc96a9293d8d1361c8f6726bf7b44c3522c9a13d4d3d2dd9c1d583349bed2762589ab133e502d7e814ee5aec9c3712bd4f61b9bf2b45eba66590730cee67f2b
7
- data.tar.gz: 436e10fdca7a8f89624ff59938af0ee226cd8a1d8f08f95ffdcf11435f48eafcd0916ba07eeb0678fb8a3cc1b87610287085c4a0e8e772e5e6808c2dcad0e2d2
6
+ metadata.gz: bffa247b278caa35adb51d1bc87160e1d49836d3cf9a28f1f1ea886aae2c6407d17ac6385781a3fac080c2eee420e6902b298a73abfcb17bb69b5bb692195caa
7
+ data.tar.gz: a480615cc7a023d7c49f6876dd229281f13554e49b6fa114e7a84f1fbf36cbebb20e5e4c0f1a42159ec962f40ced466f92d592eff81f0f35f9f1a55d2fd071fd
data/.gitignore CHANGED
@@ -33,9 +33,9 @@ build/
33
33
 
34
34
  # for a library or gem, you might want to ignore these files since the code is
35
35
  # intended to run in multiple environments; otherwise, check them in:
36
- # Gemfile.lock
37
- # .ruby-version
38
- # .ruby-gemset
36
+ Gemfile.lock
37
+ .ruby-version
38
+ .ruby-gemset
39
39
 
40
40
  # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
41
41
  .rvmrc
data/.travis.yml CHANGED
@@ -1,6 +1,11 @@
1
- sudo: required
2
1
  language: ruby
3
- dist: trusty
2
+ dist: xenial
3
+ os: linux
4
+
5
+ # See: https://docs.travis-ci.com/user/languages/ruby/#bundler-20
6
+ before_install:
7
+ - gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
8
+ - gem install bundler -v '< 2'
4
9
 
5
10
  rvm:
6
11
  - 2.2.3
data/README.md CHANGED
@@ -31,9 +31,33 @@ installing a more recent gem. Building and installing signalfx from source will
31
31
 
32
32
  ## Usage
33
33
 
34
- ### API access token
35
34
 
36
- To use this library, you need a SignalFx API access token, which can be obtained from the SignalFx organization you want to report data into.
35
+ ### Configuring your endpoints
36
+
37
+ In order to send your data to the correct realm, you may need to configure your
38
+ endpoints. If no endpoints are set manually, this library uses the ``us0`` realm by default.
39
+ If you are not in this realm, you will need to explicitly set the
40
+ endpoint config options below. To determine if you are in a different realm and need to
41
+ explicitly set the endpoints, check your profile page in the SignalFx
42
+ web application.
43
+
44
+ ```ruby
45
+ require('signalfx')
46
+ # Create client with alternate ingest endpoint
47
+ client = SignalFx.new('ORG_TOKEN', ingest_endpoint: 'https://ingest.{REALM}.signalfx.com',
48
+ stream_endpoint: 'https:/stream.{REALM}.signalfx.com')
49
+
50
+ ```
51
+
52
+ ### Access tokens
53
+
54
+ To use this library, you will also need to specify an access token when requesting
55
+ one of those clients. For the ingest client, you need to specify your
56
+ organization access token (which can be obtained from the
57
+ SignalFx organization you want to report data into). For the SignalFlow client, either an
58
+ organization access token or a user access token may be used. For more
59
+ information on access tokens, see the API's [authentication documentation](https://developers.signalfx.com/basics/authentication.html).
60
+
37
61
 
38
62
  ### Create client
39
63
 
@@ -55,7 +79,7 @@ Optional constructor parameters:
55
79
  deployed on Amazon AWS.
56
80
  + **ingest_endpoint** (string): to override the target ingest API
57
81
  endpoint.
58
- + **api_endpoint** (string): to override the target REST API endpoint.
82
+ + **stream_endpoint** (string): to override the target stream endpoint for SignalFlow.
59
83
  + **timeout** (number): timeout, in seconds, for requests to SignalFx.
60
84
  + **batch_size** (number): size of datapoint batches to send to
61
85
  SignalFx.
@@ -105,6 +129,11 @@ actually make it to SignalFx).
105
129
  To send data through a HTTP proxy, set the environment variable `http_proxy`
106
130
  with the proxy URL.
107
131
 
132
+ The SignalFlow client by default will use the proxy set in the `http_proxy`
133
+ envvar by default. To send SignalFlow websocket data through a separate proxy,
134
+ set the `proxy_url` keyword arg on the `client.signalflow` call.
135
+
136
+
108
137
  ### Sending multi-dimensional data
109
138
 
110
139
  Reporting dimensions for the data is also optional, and can be
@@ -174,9 +203,26 @@ sending events.
174
203
 
175
204
  You can run SignalFlow computations as well. This library supports all of the
176
205
  functionality described in our [API docs for
177
- SignalFlow](https://developers.signalfx.com/reference#signalflowconnect). Right
206
+ SignalFlow](https://developers.signalfx.com/signalflow_reference.html). Right
178
207
  now, the only supported transport mechanism is WebSockets.
179
208
 
209
+ #### Configure the SignalFlow client endpoint
210
+
211
+ By default, this library connects to the `us0` stream endpoint.
212
+ If you are not in this realm, you will need to explicitly set the
213
+ endpoint config options below when creating the client.
214
+ To determine if you are in a different realm and need to
215
+ explicitly set the endpoints, check your profile page in the SignalFx web application.
216
+
217
+ ```ruby
218
+ client = SignalFx.new(
219
+ 'ORG_TOKEN',
220
+ ingest_endpoint: 'https://ingest.{REALM}.signalfx.com',
221
+ stream_endpoint: 'wss://stream.{REALM}.signalfx.com'
222
+ )
223
+ ```
224
+
225
+
180
226
  To create a new SignalFlow client instance from an existing SignalFx client:
181
227
 
182
228
  ```ruby
@@ -185,7 +231,7 @@ signalflow = client.signalflow()
185
231
 
186
232
  For the full API see [the RubyDocs for
187
233
  the SignalFlow
188
- client](http://www.rubydoc.info/github/signalfx/signalfx-ruby/master/SignalFlowClient/)
234
+ client](https://www.rubydoc.info/github/signalfx/signalfx-ruby/master/SignalFlowClient/)
189
235
  (the `signalflow` var above).
190
236
 
191
237
  There is also [a demo script](./examples/signalflow.rb) that shows basic usage.
data/lib/signalfx.rb CHANGED
@@ -16,31 +16,35 @@ module SignalFx
16
16
  # and set it as `AWSUniqueId` dimension for each datapoint and event.
17
17
  # Use this option only if your application deployed to Amazon
18
18
  # @param ingest_endpoint - string
19
- # @param api_endpoint - string
19
+ # @param stream_endpoint - string
20
20
  # @param timeout - number
21
21
  # @param batch_size - number
22
22
  # @param user_agents - array
23
23
  def self.new(api_token,
24
24
  enable_aws_unique_id: false,
25
25
  ingest_endpoint: RbConfig::DEFAULT_INGEST_ENDPOINT,
26
+ stream_endpoint: RbConfig::DEFAULT_STREAM_ENDPOINT,
26
27
  timeout: RbConfig::DEFAULT_TIMEOUT,
27
28
  batch_size: RbConfig::DEFAULT_BATCH_SIZE,
28
- user_agents: [])
29
+ user_agents: [],
30
+ logger: Logger.new(STDOUT, progname: "signalfx"))
29
31
  begin
30
32
  require_relative './proto/signal_fx_protocol_buffers.pb'
31
33
  ProtoBufSignalFx.new(api_token,
32
34
  enable_aws_unique_id: enable_aws_unique_id,
33
35
  ingest_endpoint: ingest_endpoint,
36
+ stream_endpoint: stream_endpoint,
34
37
  timeout: timeout,
35
38
  batch_size: batch_size,
36
39
  user_agents: user_agents)
37
40
 
38
41
  rescue Exception => e
39
- puts "Protocol Buffers not installed properly. Switching to JSON.
40
- #{e}"
42
+ logger.warn("Protocol Buffers not installed properly. Switching to JSON.
43
+ #{e}")
41
44
  JsonSignalFx.new(api_token,
42
45
  enable_aws_unique_id: enable_aws_unique_id,
43
46
  ingest_endpoint: ingest_endpoint,
47
+ stream_endpoint: stream_endpoint,
44
48
  timeout: timeout,
45
49
  batch_size: batch_size,
46
50
  user_agents: user_agents)
@@ -31,19 +31,19 @@ class SignalFxClient
31
31
  def initialize(api_token,
32
32
  enable_aws_unique_id: false,
33
33
  ingest_endpoint: RbConfig::DEFAULT_INGEST_ENDPOINT,
34
- api_endpoint: RbConfig::DEFAULT_API_ENDPOINT,
35
34
  stream_endpoint: RbConfig::DEFAULT_STREAM_ENDPOINT,
36
35
  timeout: RbConfig::DEFAULT_TIMEOUT,
37
36
  batch_size: RbConfig::DEFAULT_BATCH_SIZE,
38
- user_agents: [])
37
+ user_agents: [],
38
+ logger: Logger.new(STDOUT, progname: "signalfx"))
39
39
 
40
40
  @api_token = api_token
41
41
  @ingest_endpoint = ingest_endpoint
42
- @api_endpoint = api_endpoint
43
42
  @stream_endpoint = stream_endpoint
44
43
  @timeout = timeout
45
44
  @batch_size = batch_size
46
45
  @user_agents = user_agents
46
+ @logger = logger
47
47
 
48
48
  @aws_unique_id = nil
49
49
 
@@ -55,9 +55,9 @@ class SignalFxClient
55
55
  if request != nil
56
56
  json_resp = JSON.parse(request.body)
57
57
  @aws_unique_id = json_resp['instanceId']+'_'+json_resp['region']+'_'+json_resp['accountId']
58
- puts("AWS Unique ID loaded: #{@aws_unique_id}")
58
+ @logger.info("AWS Unique ID loaded: #{@aws_unique_id}")
59
59
  else
60
- puts('Failed to retrieve AWS unique ID.')
60
+ @logger.warn('Failed to retrieve AWS unique ID.')
61
61
  end
62
62
  }
63
63
  end
@@ -171,8 +171,11 @@ class SignalFxClient
171
171
  #
172
172
  # @return [SignalFlowClient] a newly instantiated client, configured with the
173
173
  # api token and endpoints from this class
174
- def signalflow
175
- SignalFlowClient.new(@api_token, @api_endpoint, @stream_endpoint)
174
+ def signalflow(proxy_url: nil, debug: false)
175
+ if ENV["http_proxy"] and proxy_url == nil
176
+ proxy_url = ENV["http_proxy"]
177
+ end
178
+ SignalFlowClient.new(@api_token, @stream_endpoint, proxy_url: proxy_url, debug: debug)
176
179
  end
177
180
 
178
181
  protected
@@ -223,14 +226,14 @@ class SignalFxClient
223
226
  block.call(response)
224
227
  end
225
228
  else
226
- puts "Failed to send datapoints. Response code: #{response.code}"
229
+ @logger.error("Failed to send datapoints. Response code: #{response.code}")
227
230
  if block
228
231
  block.call(nil)
229
232
  end
230
233
  end
231
234
  }
232
235
  rescue Exception => e
233
- puts "Failed to send datapoints. Error: #{e}"
236
+ @logger.error("Failed to send datapoints. Error: #{e}")
234
237
  if block
235
238
  block.call(nil)
236
239
  end
@@ -246,12 +249,12 @@ class SignalFxClient
246
249
  when 200
247
250
  return block.call(response)
248
251
  else
249
- puts "Failed to retrieve AWS unique ID. Response code: #{response.code}"
252
+ @logger.warn("Failed to retrieve AWS unique ID. Response code: #{response.code}")
250
253
  return block.call(nil)
251
254
  end
252
255
  }
253
256
  rescue Exception => e
254
- puts "Failed to retrieve AWS unique ID. Error: #{e}"
257
+ @logger.warn("Failed to retrieve AWS unique ID. Error: #{e}")
255
258
  block.call(nil)
256
259
  end
257
260
  end
@@ -19,8 +19,8 @@ require_relative "./websocket"
19
19
  # our API reference for SignalFlow}. Hash keys will be symbols instead of
20
20
  # strings.
21
21
  class SignalFlowClient
22
- def initialize(api_token, api_endpoint, stream_endpoint)
23
- @transport = SignalFlowWebsocketTransport.new(api_token, stream_endpoint)
22
+ def initialize(api_token, stream_endpoint, proxy_url = nil)
23
+ @transport = SignalFlowWebsocketTransport.new(api_token, stream_endpoint, proxy_url)
24
24
  end
25
25
 
26
26
  # Start a computation and attach to its output. If using WebSockets (the
@@ -2,12 +2,18 @@
2
2
 
3
3
  require 'json'
4
4
  require 'thread'
5
- require 'websocket-client-simple'
5
+ require 'faye/websocket'
6
6
 
7
7
  require_relative './binary'
8
8
  require_relative './channel'
9
9
  require_relative './computation'
10
10
 
11
+ class WebsocketError < StandardError
12
+ def initialize(ws_err)
13
+ super ws_err.message
14
+ end
15
+ end
16
+
11
17
 
12
18
  # A WebSocket transport for SignalFlow. This should not be used directly by
13
19
  # end-users.
@@ -17,13 +23,17 @@ class SignalFlowWebsocketTransport
17
23
  # A lower bound on the amount of time to wait for a computation to start
18
24
  COMPUTATION_START_TIMEOUT_SECONDS = 30
19
25
 
20
- def initialize(api_token, stream_endpoint)
26
+ def initialize(api_token, stream_endpoint, proxy_url: nil, logger: Logger.new(STDOUT, progname: "signalfx"), debug: false)
21
27
  @api_token = api_token
22
28
  @stream_endpoint = stream_endpoint
29
+ @logger = logger
23
30
  @compress = true
31
+ @proxy_url = proxy_url
32
+ @debug = debug
24
33
 
25
34
  @lock = Mutex.new
26
35
  @close_reason = nil
36
+ @last_error = nil
27
37
  reinit
28
38
  end
29
39
 
@@ -187,6 +197,9 @@ class SignalFlowWebsocketTransport
187
197
  # The socket will be closed by the server if auth isn't successful
188
198
  # within 5 seconds so no point in waiting longer
189
199
  if Time.now - start_time > 5 || @close_reason
200
+ if @last_error
201
+ raise WebsocketError.new(@last_error)
202
+ end
190
203
  raise "Could not authenticate to SignalFlow WebSocket: #{@close_reason}"
191
204
  end
192
205
  sleep 0.1
@@ -199,7 +212,11 @@ class SignalFlowWebsocketTransport
199
212
  private :send_msg
200
213
 
201
214
  def on_close(msg)
202
- @close_reason = "(#{msg.code}, #{msg.data})"
215
+ if @debug
216
+ @logger.info("Websocket on_close: #{msg}")
217
+ end
218
+
219
+ @close_reason = "(#{msg.code}, #{msg.reason})"
203
220
  @chan_callbacks.keys.each do |channel_name|
204
221
  invoke_callback_for_channel({ :event => "CONNECTION_CLOSED" }, channel_name)
205
222
  end
@@ -207,21 +224,31 @@ class SignalFlowWebsocketTransport
207
224
  reinit
208
225
  end
209
226
 
227
+ def on_error(e)
228
+ @logger.error("ERROR #{e.inspect}")
229
+ @last_error = e
230
+ end
231
+
232
+
210
233
  def on_message(m)
211
- begin
212
- return if m.type == :ping
213
- if m.type == :close
214
- on_close(m)
215
- return
216
- end
234
+ if @debug
235
+ @logger.info("Websocket on_message: #{m}")
236
+ end
217
237
 
218
- message_received(m.data, m.type == :text)
238
+ is_text = m.data.kind_of?(String)
239
+
240
+ begin
241
+ message_received(m.data, is_text)
219
242
  rescue Exception => e
220
- puts "Error processing SignalFlow message: #{e.backtrace.first}: #{e.message} (#{e.class})"
243
+ @logger.error("Error processing SignalFlow message: #{e.backtrace.first}: #{e.message} (#{e.class})")
221
244
  end
222
245
  end
223
246
 
224
247
  def on_open
248
+ if @debug
249
+ @logger.info("Websocket on_open")
250
+ end
251
+
225
252
  @ws.send({
226
253
  :type => "authenticate",
227
254
  :token => @api_token,
@@ -232,26 +259,38 @@ class SignalFlowWebsocketTransport
232
259
  # reactor.
233
260
  def startup_client
234
261
  this = self
235
- WebSocket::Client::Simple.connect("#{@stream_endpoint}/v2/signalflow/connect",
236
- # Verification is disabled by default so this is essential
237
- {verify_mode: OpenSSL::SSL::VERIFY_PEER}) do |ws|
238
- @ws = ws
239
- ws.on :error do |e|
240
- puts "ERROR #{e.inspect}"
241
- end
242
262
 
243
- ws.on :close do |e|
244
- this.on_close(e)
245
- end
263
+ options = {
264
+ :tls => {
265
+ :verify_peer => true,
266
+ }
267
+ }
268
+ if @proxy_url
269
+ options[:proxy] = {
270
+ :origin => @proxy_url,
271
+ }
272
+ end
273
+ Thread.new {
274
+ EM.run {
275
+ @ws = Faye::WebSocket::Client.new("#{@stream_endpoint}/v2/signalflow/connect", [], options)
276
+ @ws.on :error do |e|
277
+ this.on_error(e)
278
+ end
246
279
 
247
- ws.on :message do |m|
248
- this.on_message(m)
249
- end
280
+ @ws.on :close do |e|
281
+ this.on_close(e)
282
+ EM.stop_event_loop
283
+ end
250
284
 
251
- ws.on :open do
252
- this.on_open
253
- end
254
- end
285
+ @ws.on :message do |m|
286
+ this.on_message(m)
287
+ end
288
+
289
+ @ws.on :open do
290
+ this.on_open
291
+ end
292
+ }
293
+ }
255
294
  end
256
295
  private :startup_client
257
296
 
@@ -293,7 +332,8 @@ class SignalFlowWebsocketTransport
293
332
  if is_text
294
333
  JSON.parse(raw_msg, {:symbolize_names => true})
295
334
  else
296
- BinaryMessageParser.parse(raw_msg)
335
+ # Convert the byte array to a string
336
+ BinaryMessageParser.parse(raw_msg.pack("c*"))
297
337
  end
298
338
  end
299
339
  private :parse_message
@@ -1,8 +1,8 @@
1
- # Copyright (C) 2015-2016 SignalFx, Inc. All rights reserved.
1
+ # Copyright (C) 2015-2020 SignalFx, Inc. All rights reserved.
2
2
 
3
3
  module SignalFx
4
4
  module Version
5
- VERSION = '2.0.5'
5
+ VERSION = '3.2.0'
6
6
  NAME = 'signalfx-ruby-client'
7
7
  end
8
- end
8
+ end
data/signalfx.gemspec CHANGED
@@ -29,13 +29,12 @@ Gem::Specification.new do |spec|
29
29
 
30
30
  spec.required_ruby_version = '>= 2.2.0'
31
31
 
32
- spec.add_development_dependency "bundler", "~> 1.10"
32
+ spec.add_development_dependency "bundler", "~> 1.17.3"
33
33
  spec.add_development_dependency "rake", "~> 10.0"
34
34
  spec.add_development_dependency "rspec", "~> 3.3"
35
35
  spec.add_development_dependency "webmock", "~> 2.3.1"
36
36
  spec.add_development_dependency "thin", "~> 1.7"
37
37
  spec.add_development_dependency "pry"
38
- spec.add_development_dependency "faye-websocket", "~> 0.10.7"
39
38
 
40
39
  # protobuf enforces this check but builds with a newer Ruby version so it's not enabled.
41
40
  # Incorporating here to allow 2.2.0-1 users to successfully build and install signalfx.
@@ -44,5 +43,5 @@ Gem::Specification.new do |spec|
44
43
 
45
44
  spec.add_dependency "protobuf", ">= 3.5.1"
46
45
  spec.add_dependency "rest-client", "~> 2.0"
47
- spec.add_dependency 'websocket-client-simple', "~> 0.3.0"
46
+ spec.add_dependency "faye-websocket", ">= 0.10.7", "< 0.12.0"
48
47
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: signalfx
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.5
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - SignalFx, Inc
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-09-18 00:00:00.000000000 Z
11
+ date: 2021-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.10'
19
+ version: 1.17.3
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.10'
26
+ version: 1.17.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -94,20 +94,6 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: faye-websocket
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: 0.10.7
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: 0.10.7
111
97
  - !ruby/object:Gem::Dependency
112
98
  name: activesupport
113
99
  requirement: !ruby/object:Gem::Requirement
@@ -151,19 +137,25 @@ dependencies:
151
137
  - !ruby/object:Gem::Version
152
138
  version: '2.0'
153
139
  - !ruby/object:Gem::Dependency
154
- name: websocket-client-simple
140
+ name: faye-websocket
155
141
  requirement: !ruby/object:Gem::Requirement
156
142
  requirements:
157
- - - "~>"
143
+ - - ">="
158
144
  - !ruby/object:Gem::Version
159
- version: 0.3.0
145
+ version: 0.10.7
146
+ - - "<"
147
+ - !ruby/object:Gem::Version
148
+ version: 0.12.0
160
149
  type: :runtime
161
150
  prerelease: false
162
151
  version_requirements: !ruby/object:Gem::Requirement
163
152
  requirements:
164
- - - "~>"
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: 0.10.7
156
+ - - "<"
165
157
  - !ruby/object:Gem::Version
166
- version: 0.3.0
158
+ version: 0.12.0
167
159
  description: This is a programmatic interface in Ruby for SignalFx's metadata and
168
160
  ingest APIs. It is meant to provide a base for communicating with SignalFx APIs
169
161
  that can be easily leveraged by scripts and applications to interact with SignalFx
@@ -177,7 +169,6 @@ files:
177
169
  - ".gitignore"
178
170
  - ".travis.yml"
179
171
  - Gemfile
180
- - Gemfile.lock
181
172
  - README.md
182
173
  - Rakefile
183
174
  - bin/console
@@ -202,7 +193,7 @@ homepage: https://signalfx.com
202
193
  licenses:
203
194
  - Apache Software License v2 © SignalFx
204
195
  metadata: {}
205
- post_install_message:
196
+ post_install_message:
206
197
  rdoc_options: []
207
198
  require_paths:
208
199
  - lib
@@ -217,9 +208,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
217
208
  - !ruby/object:Gem::Version
218
209
  version: '0'
219
210
  requirements: []
220
- rubyforge_project:
221
- rubygems_version: 2.5.2
222
- signing_key:
211
+ rubygems_version: 3.1.2
212
+ signing_key:
223
213
  specification_version: 4
224
214
  summary: Ruby client library for SignalFx
225
215
  test_files: []
data/Gemfile.lock DELETED
@@ -1,121 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- signalfx (2.0.5)
5
- activesupport (>= 3.2)
6
- protobuf (>= 3.5.1)
7
- rest-client (~> 2.0)
8
- websocket-client-simple (~> 0.3.0)
9
-
10
- GEM
11
- remote: https://rubygems.org/
12
- specs:
13
- activesupport (5.2.1)
14
- concurrent-ruby (~> 1.0, >= 1.0.2)
15
- i18n (>= 0.7, < 2)
16
- minitest (~> 5.1)
17
- tzinfo (~> 1.1)
18
- addressable (2.5.2)
19
- public_suffix (>= 2.0.2, < 4.0)
20
- coderay (1.1.1)
21
- concurrent-ruby (1.0.5)
22
- crack (0.4.3)
23
- safe_yaml (~> 1.0.0)
24
- daemons (1.2.4)
25
- diff-lcs (1.2.5)
26
- docile (1.3.1)
27
- domain_name (0.5.20180417)
28
- unf (>= 0.0.5, < 1.0.0)
29
- event_emitter (0.2.6)
30
- eventmachine (1.2.5)
31
- faye-websocket (0.10.7)
32
- eventmachine (>= 0.12.0)
33
- websocket-driver (>= 0.5.1)
34
- hashdiff (0.3.7)
35
- http-cookie (1.0.3)
36
- domain_name (~> 0.5)
37
- i18n (1.1.0)
38
- concurrent-ruby (~> 1.0)
39
- json (2.1.0)
40
- method_source (0.8.2)
41
- middleware (0.1.0)
42
- mime-types (3.2.2)
43
- mime-types-data (~> 3.2015)
44
- mime-types-data (3.2018.0812)
45
- minitest (5.11.3)
46
- netrc (0.11.0)
47
- protobuf (3.8.4)
48
- activesupport (>= 3.2)
49
- middleware
50
- thor
51
- thread_safe
52
- pry (0.10.4)
53
- coderay (~> 1.1.0)
54
- method_source (~> 0.8.1)
55
- slop (~> 3.4)
56
- public_suffix (3.0.2)
57
- rack (2.0.3)
58
- rake (10.4.2)
59
- rest-client (2.0.2)
60
- http-cookie (>= 1.0.2, < 2.0)
61
- mime-types (>= 1.16, < 4.0)
62
- netrc (~> 0.8)
63
- rspec (3.3.0)
64
- rspec-core (~> 3.3.0)
65
- rspec-expectations (~> 3.3.0)
66
- rspec-mocks (~> 3.3.0)
67
- rspec-core (3.3.2)
68
- rspec-support (~> 3.3.0)
69
- rspec-expectations (3.3.1)
70
- diff-lcs (>= 1.2.0, < 2.0)
71
- rspec-support (~> 3.3.0)
72
- rspec-mocks (3.3.2)
73
- diff-lcs (>= 1.2.0, < 2.0)
74
- rspec-support (~> 3.3.0)
75
- rspec-support (3.3.0)
76
- safe_yaml (1.0.4)
77
- simplecov (0.16.1)
78
- docile (~> 1.1)
79
- json (>= 1.8, < 3)
80
- simplecov-html (~> 0.10.0)
81
- simplecov-html (0.10.2)
82
- slop (3.6.0)
83
- thin (1.7.2)
84
- daemons (~> 1.0, >= 1.0.9)
85
- eventmachine (~> 1.0, >= 1.0.4)
86
- rack (>= 1, < 3)
87
- thor (0.20.0)
88
- thread_safe (0.3.6)
89
- tzinfo (1.2.5)
90
- thread_safe (~> 0.1)
91
- unf (0.1.4)
92
- unf_ext
93
- unf_ext (0.0.7.5)
94
- webmock (2.3.2)
95
- addressable (>= 2.3.6)
96
- crack (>= 0.3.2)
97
- hashdiff
98
- websocket (1.2.8)
99
- websocket-client-simple (0.3.0)
100
- event_emitter
101
- websocket
102
- websocket-driver (0.6.5)
103
- websocket-extensions (>= 0.1.0)
104
- websocket-extensions (0.1.2)
105
-
106
- PLATFORMS
107
- ruby
108
-
109
- DEPENDENCIES
110
- bundler (~> 1.10)
111
- faye-websocket (~> 0.10.7)
112
- pry
113
- rake (~> 10.0)
114
- rspec (~> 3.3)
115
- signalfx!
116
- simplecov
117
- thin (~> 1.7)
118
- webmock (~> 2.3.1)
119
-
120
- BUNDLED WITH
121
- 1.16.3