signalfx 2.0.5 → 3.2.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 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