stackify-ruby-apm 1.9.5 → 1.11.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/Gemfile +0 -24
- data/lib/stackify_apm/agent.rb +0 -2
- data/lib/stackify_apm/config.rb +2 -0
- data/lib/stackify_apm/context.rb +1 -1
- data/lib/stackify_apm/helper/database_helper.rb +1 -1
- data/lib/stackify_apm/instrumenter_helper.rb +3 -4
- data/lib/stackify_apm/logger/log_device.rb +7 -5
- data/lib/stackify_apm/root_info.rb +2 -1
- data/lib/stackify_apm/spies/custom_instrumenter.rb +13 -1
- data/lib/stackify_apm/spies/delayed_job.rb +49 -0
- data/lib/stackify_apm/spies/sidekiq.rb +44 -0
- data/lib/stackify_apm/transport/agent_base.rb +23 -0
- data/lib/stackify_apm/transport/agent_http_client.rb +17 -11
- data/lib/stackify_apm/transport/unix_socket_client.rb +12 -5
- data/lib/stackify_apm/util.rb +0 -9
- data/lib/stackify_apm/version.rb +1 -1
- data/lib/stackify_ruby_apm.rb +0 -3
- data/stackify-ruby-apm.gemspec +33 -2
- metadata +300 -19
- data/Gemfile.lock +0 -252
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c11dd1bfd73ddd45923cd58ee7672b9a6e0bc872ca07e92d10558b2b826f3f7b
|
4
|
+
data.tar.gz: '018b2653259a17ada4fbc55aa117ac0300c2f0a0e4804e129ea2f3f24f4cb34e'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 508a7a1213e03e3adfac74f4a1868b441cf878ad607a10911c7662f72665ae6715a5cbe562e0143f1a0199ea08f51340b7c74c90a457e7f32ae1f268077978be
|
7
|
+
data.tar.gz: 8e10efe82d70b1728dc1661e896b3138e5dfd4a2bbeb5f77a3e2324b090e91554117039fb45de140e21bdb391caeade87ce7eee57c5c1f1b5b5a60c9c7fdb4c6
|
data/Gemfile
CHANGED
@@ -4,27 +4,3 @@ source 'https://rubygems.org'
|
|
4
4
|
|
5
5
|
# Specify your gem's dependencies in stackify-ruby-apm.gemspec
|
6
6
|
gemspec
|
7
|
-
|
8
|
-
group :test do
|
9
|
-
gem 'activerecord'
|
10
|
-
gem 'curb', '0.9.8'
|
11
|
-
gem 'fakeredis'
|
12
|
-
gem 'google-protobuf', '3.5.0'
|
13
|
-
gem 'http'
|
14
|
-
gem 'httpclient'
|
15
|
-
gem 'mongo'
|
16
|
-
gem 'mysql2'
|
17
|
-
gem 'net_http_unix', '~> 0.2'
|
18
|
-
gem 'pg', '~> 0.20'
|
19
|
-
gem 'rack-test'
|
20
|
-
gem 'rails', '~> 4.0'
|
21
|
-
gem 'rubocop', require: false
|
22
|
-
gem 'sequel'
|
23
|
-
gem 'sinatra'
|
24
|
-
gem 'sinatra-activerecord'
|
25
|
-
gem 'sqlite3', '1.3.13'
|
26
|
-
gem 'stackify-api-ruby'
|
27
|
-
gem 'timecop'
|
28
|
-
gem 'to_bool'
|
29
|
-
gem 'webmock'
|
30
|
-
end
|
data/lib/stackify_apm/agent.rb
CHANGED
@@ -101,8 +101,6 @@ module StackifyRubyAPM
|
|
101
101
|
info '[Agent] start()'
|
102
102
|
info '[Agent] transport type: ' + @config.transport
|
103
103
|
spies_name = ''
|
104
|
-
# If the rake task is detected as being ran then we don't load the spies
|
105
|
-
StackifyRubyAPM::Util.apm_disabled_in_rake
|
106
104
|
return false unless @config.instrument
|
107
105
|
config.enabled_spies.each do |lib|
|
108
106
|
spies_name = spies_name + ', ' + lib.inspect.to_s
|
data/lib/stackify_apm/config.rb
CHANGED
data/lib/stackify_apm/context.rb
CHANGED
@@ -90,9 +90,8 @@ module StackifyRubyAPM
|
|
90
90
|
)
|
91
91
|
end
|
92
92
|
|
93
|
-
req = #{current_method_without}(*args, &block)
|
94
93
|
StackifyRubyAPM.span name, type, context: ctx do
|
95
|
-
|
94
|
+
#{current_method_without}(*args, &block)
|
96
95
|
end
|
97
96
|
else
|
98
97
|
return #{current_method_without}(*args, &block)
|
@@ -169,9 +168,9 @@ module StackifyRubyAPM
|
|
169
168
|
CATEGORY: 'Ruby'
|
170
169
|
)
|
171
170
|
end
|
172
|
-
|
171
|
+
|
173
172
|
StackifyRubyAPM.span name, type, context: ctx do
|
174
|
-
|
173
|
+
_self_without_apm_#{current_method}(*args, &block)
|
175
174
|
end
|
176
175
|
else
|
177
176
|
return _self_without_apm_#{current_method}(*args, &block)
|
@@ -14,9 +14,6 @@ module StackifyRubyAPM
|
|
14
14
|
if FileTest.exist?(@filename)
|
15
15
|
else
|
16
16
|
@dev = create_logfile(@filename)
|
17
|
-
File.chmod(0o777, @filename)
|
18
|
-
|
19
|
-
return @dev
|
20
17
|
end
|
21
18
|
end
|
22
19
|
write_without_apm(message)
|
@@ -58,7 +55,6 @@ module StackifyRubyAPM
|
|
58
55
|
temp_newfilename = "#{temp_filename}-#{filename_counter}.log"
|
59
56
|
@filename = temp_newfilename
|
60
57
|
@dev = create_logfile(@filename)
|
61
|
-
File.chmod(0o777, @filename)
|
62
58
|
|
63
59
|
true
|
64
60
|
end
|
@@ -80,10 +76,16 @@ module StackifyRubyAPM
|
|
80
76
|
@dev.close rescue nil
|
81
77
|
File.rename(@filename.to_s, age_file)
|
82
78
|
@dev = create_logfile(@filename)
|
83
|
-
File.chmod(0o777, @filename)
|
84
79
|
|
85
80
|
true
|
86
81
|
end
|
82
|
+
|
83
|
+
# Override create_logfile of core LogDevice class where we set File.chmod to 0o777
|
84
|
+
def create_logfile(filename)
|
85
|
+
logdev = super
|
86
|
+
File.chmod(0o777, filename)
|
87
|
+
logdev
|
88
|
+
end
|
87
89
|
# rubocop:enable Style/RescueModifier
|
88
90
|
# rubocop:enable Lint/RescueWithoutErrorClass
|
89
91
|
end
|
@@ -25,7 +25,8 @@ module StackifyRubyAPM
|
|
25
25
|
end
|
26
26
|
|
27
27
|
hash = {
|
28
|
-
|
28
|
+
PROFILER_VERSION: StackifyRubyAPM::VERSION,
|
29
|
+
CATEGORY: @transaction.context.category || 'Ruby',
|
29
30
|
APPLICATION_PATH: '/',
|
30
31
|
APPLICATION_FILESYSTEM_PATH: @config.root_path,
|
31
32
|
APPLICATION_NAME: @config.application_name.strip,
|
@@ -3,6 +3,7 @@
|
|
3
3
|
# Monkey patch for the custom instrumentation any values from config/stackify.json will be loop and will
|
4
4
|
# register as a spy.
|
5
5
|
#
|
6
|
+
require 'logger'
|
6
7
|
require 'stackify_apm/instrumenter_helper.rb'
|
7
8
|
require 'stackify_apm/config'
|
8
9
|
require 'json'
|
@@ -10,7 +11,8 @@ require 'json'
|
|
10
11
|
# rubocop:disable Metrics/PerceivedComplexity
|
11
12
|
module StackifyRubyAPM
|
12
13
|
# @api private
|
13
|
-
module Spies
|
14
|
+
module Spies extend Log
|
15
|
+
|
14
16
|
def self.run_custom_instrumentation
|
15
17
|
config = Config.new
|
16
18
|
to_instrument = parse_json_config(config.json_config_file)
|
@@ -27,11 +29,21 @@ module StackifyRubyAPM
|
|
27
29
|
tracked_func = custom_spy['trackedFunction']
|
28
30
|
tracked_func_name = defined?(custom_spy['trackedFunctionName']) ? custom_spy['trackedFunctionName'] : ''
|
29
31
|
transaction = defined?(custom_spy['transaction']) ? custom_spy['transaction'] : nil
|
32
|
+
file_path = defined?(custom_spy['file_path']) ? custom_spy['file_path'] : nil
|
30
33
|
|
31
34
|
tracked_function_tpl = tracked_func_name.nil? ? '{{ClassName}}.{{MethodName}}' : tracked_func_name
|
32
35
|
tracked_function_name = tracked_function_tpl.sub '{{ClassName}}', current_class
|
33
36
|
tracked_function_name = tracked_function_name.sub '{{MethodName}}', current_method
|
34
37
|
|
38
|
+
if !class_exists?(current_class) && !file_path.nil?
|
39
|
+
begin
|
40
|
+
require file_path
|
41
|
+
rescue LoadError => e
|
42
|
+
debug "[StackifyRubyAPM] File path doesn't exist."
|
43
|
+
debug e.inspect
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
35
47
|
# rubocop:disable Style/Next
|
36
48
|
if class_exists?(current_class)
|
37
49
|
mod_constant = Module.const_get(current_class.to_s)
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Monkey patch for the delayed_job class for running async tasks.
|
4
|
+
#
|
5
|
+
|
6
|
+
module StackifyRubyAPM
|
7
|
+
# @api private
|
8
|
+
module Spies
|
9
|
+
# @api private
|
10
|
+
class DelayedJobSpy
|
11
|
+
def install
|
12
|
+
Delayed::Backend::Base.class_eval do
|
13
|
+
alias_method 'invoke_job_without_apm', 'invoke_job'
|
14
|
+
|
15
|
+
def invoke_job(*args, &block)
|
16
|
+
ret = nil
|
17
|
+
begin
|
18
|
+
name = nil
|
19
|
+
if payload_object.is_a?(::Delayed::PerformableMethod)
|
20
|
+
object = payload_object.object
|
21
|
+
klass = object.is_a?(Class) ? object : object.class
|
22
|
+
class_name = klass.name
|
23
|
+
separator = payload_object.object.is_a?(Class) ? '.' : '#'
|
24
|
+
method_name = payload_object.method_name
|
25
|
+
name = "#{class_name}#{separator}#{method_name}"
|
26
|
+
else
|
27
|
+
name = payload_object.class.name
|
28
|
+
end
|
29
|
+
ctx = StackifyRubyAPM::Context.new
|
30
|
+
ctx.category = 'Delayed::Job'
|
31
|
+
transaction = StackifyRubyAPM.transaction name, 'TASK', context: ctx
|
32
|
+
ret = invoke_job_without_apm(*args, &block)
|
33
|
+
rescue StackifyRubyAPM::InternalError
|
34
|
+
raise # Don't report StackifyRubyAPM errors
|
35
|
+
rescue StandardError => e
|
36
|
+
StackifyRubyAPM.report e
|
37
|
+
raise e
|
38
|
+
ensure
|
39
|
+
transaction.submit()
|
40
|
+
end
|
41
|
+
ret
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
register 'Delayed::Backend::Base', 'delayed/backend/base', DelayedJobSpy.new
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Monkey patch for the sidekiq class for running async tasks.
|
4
|
+
#
|
5
|
+
|
6
|
+
module StackifyRubyAPM
|
7
|
+
# @api private
|
8
|
+
module Spies
|
9
|
+
# @api private
|
10
|
+
class SidekiqClientSpy
|
11
|
+
def install
|
12
|
+
Sidekiq::Processor.class_eval do
|
13
|
+
alias_method 'process_without_apm', 'process'
|
14
|
+
|
15
|
+
def process(work, *args, &block)
|
16
|
+
ret = nil
|
17
|
+
begin
|
18
|
+
job = nil
|
19
|
+
if defined? work.message
|
20
|
+
job = work.message
|
21
|
+
else
|
22
|
+
job = work.job
|
23
|
+
end
|
24
|
+
job_hash = JSON.parse job
|
25
|
+
name = job_hash["class"]
|
26
|
+
transaction = StackifyRubyAPM.transaction name, 'TASK'
|
27
|
+
ret = process_without_apm(work, *args, &block)
|
28
|
+
rescue StackifyRubyAPM::InternalError
|
29
|
+
raise # Don't report StackifyRubyAPM errors
|
30
|
+
rescue StandardError => e
|
31
|
+
StackifyRubyAPM.report e
|
32
|
+
raise e
|
33
|
+
ensure
|
34
|
+
transaction.submit()
|
35
|
+
end
|
36
|
+
ret
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
register 'Sidekiq::Processor', 'sidekiq/processor', SidekiqClientSpy.new
|
43
|
+
end
|
44
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'json'
|
1
2
|
require 'stackify_apm/root_info'
|
2
3
|
require 'stackify_apm/serializers'
|
3
4
|
|
@@ -12,6 +13,15 @@ module StackifyRubyAPM
|
|
12
13
|
@transaction_serializers = Serializers::Transactions.new(config)
|
13
14
|
end
|
14
15
|
|
16
|
+
def get_protobuf_message(transactions)
|
17
|
+
protobuf_obj = build_message(transactions)
|
18
|
+
StackifyProtoBuf::Traces.encode(protobuf_obj)
|
19
|
+
end
|
20
|
+
|
21
|
+
def get_json_message(transactions)
|
22
|
+
JSON.generate(build_json_message(transactions))
|
23
|
+
end
|
24
|
+
|
15
25
|
# This method will build a group of Stackify::Traces from the protobuf objects.
|
16
26
|
# It accept Array of transactions.
|
17
27
|
def build_message(transactions = [])
|
@@ -28,6 +38,19 @@ module StackifyRubyAPM
|
|
28
38
|
debug "[AgentBaseTransport] build_message() exception: #{e.inspect}"
|
29
39
|
end
|
30
40
|
|
41
|
+
def build_json_message(transactions = [])
|
42
|
+
traces = []
|
43
|
+
transactions.each do |transaction|
|
44
|
+
# convert transaction to json
|
45
|
+
json_transaction = @transaction_serializers.build_json(@config, transaction)
|
46
|
+
# add to traces array
|
47
|
+
traces << json_transaction
|
48
|
+
end
|
49
|
+
return traces
|
50
|
+
rescue StandardError => e
|
51
|
+
debug "[AgentBaseTransport] build_json_message() exception: #{e.inspect}"
|
52
|
+
end
|
53
|
+
|
31
54
|
def post(_transactions = [])
|
32
55
|
raise NotImplementedError
|
33
56
|
end
|
@@ -5,24 +5,32 @@ require 'faraday'
|
|
5
5
|
require 'ostruct'
|
6
6
|
|
7
7
|
module StackifyRubyAPM
|
8
|
-
# This class will handle the sending of
|
8
|
+
# This class will handle the sending of transaction messages through HTTP.
|
9
9
|
# @api private
|
10
10
|
class AgentHTTPClient < AgentBaseTransport
|
11
11
|
include Log
|
12
12
|
|
13
|
-
HEADERS = {
|
14
|
-
'Content-Type' => 'application/x-protobuf'
|
15
|
-
}.freeze
|
16
|
-
|
17
13
|
def initialize(config)
|
18
14
|
@config = config
|
19
15
|
super(config)
|
20
16
|
end
|
21
17
|
|
18
|
+
def get_protobuf_headers
|
19
|
+
{
|
20
|
+
'Content-Type' => 'application/x-protobuf'
|
21
|
+
}.freeze
|
22
|
+
end
|
23
|
+
|
24
|
+
def get_json_headers
|
25
|
+
{
|
26
|
+
'Content-Type' => 'application/json'
|
27
|
+
}.freeze
|
28
|
+
end
|
29
|
+
|
22
30
|
# rubocop:disable Metrics/CyclomaticComplexity
|
23
31
|
# rubocop:disable Metrics/PerceivedComplexity
|
24
32
|
#
|
25
|
-
# This method will send a
|
33
|
+
# This method will send a transction message to HTTP request.
|
26
34
|
# It will accept Array of transactions.
|
27
35
|
def post(transactions = [])
|
28
36
|
debug '[AgentHTTPClient] post()' if ENV['STACKIFY_TRANSPORT_LOG_LEVEL'] == '0'
|
@@ -31,16 +39,14 @@ module StackifyRubyAPM
|
|
31
39
|
retry_count = 0
|
32
40
|
delay = @config.delay_seconds
|
33
41
|
begin
|
34
|
-
|
35
|
-
message = StackifyProtoBuf::Traces.encode(protobuf_obj)
|
36
|
-
# Convert message into binary and send it to http request
|
42
|
+
message = get_json_message(transactions)
|
37
43
|
conn = Faraday.new(ssl: { verify: false })
|
38
44
|
response = conn.post do |req|
|
39
45
|
req.url URI(@config.transport_http_endpoint + @config.agent_traces_url)
|
40
|
-
req.headers =
|
46
|
+
req.headers = get_json_headers
|
41
47
|
req.body = message
|
42
48
|
end
|
43
|
-
if response.
|
49
|
+
if defined?(response.status) && response.status == 200
|
44
50
|
debug '[AgentHTTPClient] Successfully send message via http request.' if ENV['STACKIFY_TRANSPORT_LOG_LEVEL'] == '0'
|
45
51
|
elsif ENV['STACKIFY_TRANSPORT_LOG_LEVEL'] == '0'
|
46
52
|
debug "[AgentHTTPClient] Failure sending via http request: #{response.inspect}"
|
@@ -4,7 +4,7 @@ require 'net_http_unix'
|
|
4
4
|
require 'ostruct'
|
5
5
|
|
6
6
|
module StackifyRubyAPM
|
7
|
-
# This class will handle the sending of
|
7
|
+
# This class will handle the sending of transaction messages through unix domain socket.
|
8
8
|
# @api private
|
9
9
|
class UnixSocketClient < AgentBaseTransport
|
10
10
|
include Log
|
@@ -14,10 +14,18 @@ module StackifyRubyAPM
|
|
14
14
|
super(config)
|
15
15
|
end
|
16
16
|
|
17
|
+
def get_protobuf_headers
|
18
|
+
'application/x-protobuf'
|
19
|
+
end
|
20
|
+
|
21
|
+
def get_json_headers
|
22
|
+
'application/json'
|
23
|
+
end
|
24
|
+
|
17
25
|
# rubocop:disable Metrics/CyclomaticComplexity
|
18
26
|
# rubocop:disable Metrics/PerceivedComplexity
|
19
27
|
#
|
20
|
-
# This method will send a
|
28
|
+
# This method will send a transaction message to the unix domain socket.
|
21
29
|
# It will accept Array of transactions.
|
22
30
|
def post(transactions = [])
|
23
31
|
debug '[UnixSocketClient] post()' if ENV['STACKIFY_TRANSPORT_LOG_LEVEL'] == '0'
|
@@ -27,11 +35,10 @@ module StackifyRubyAPM
|
|
27
35
|
delay = @config.delay_seconds
|
28
36
|
begin
|
29
37
|
# Convert message into binary and send it to unix domain socket
|
30
|
-
|
31
|
-
message = StackifyProtoBuf::Traces.encode(protobuf_obj)
|
38
|
+
message = get_json_message(transactions)
|
32
39
|
client = NetX::HTTPUnix.new('unix://' + @config.unix_socket_path)
|
33
40
|
req = Net::HTTP::Post.new(@config.agent_traces_url)
|
34
|
-
req.set_content_type(
|
41
|
+
req.set_content_type(get_json_headers)
|
35
42
|
req.body = message
|
36
43
|
response = client.request(req)
|
37
44
|
debug "[UnixSocketClient] status_code = #{response.code}" if ENV['STACKIFY_TRANSPORT_LOG_LEVEL'] == '0'
|
data/lib/stackify_apm/util.rb
CHANGED
@@ -8,15 +8,6 @@ module StackifyRubyAPM
|
|
8
8
|
target.to_i * 1_000_000 + target.usec
|
9
9
|
end
|
10
10
|
|
11
|
-
#
|
12
|
-
# This method will check if there is any rake task is running.
|
13
|
-
# If rake task is detected we set instrument=false and don't load the spies.
|
14
|
-
#
|
15
|
-
def self.apm_disabled_in_rake
|
16
|
-
cmd_rake = ($PROGRAM_NAME =~ /rake$/)
|
17
|
-
StackifyRubyAPM.agent.config.instrument = false if cmd_rake
|
18
|
-
end
|
19
|
-
|
20
11
|
def self.host_os
|
21
12
|
host_os = RbConfig::CONFIG['host_os']
|
22
13
|
case host_os
|
data/lib/stackify_apm/version.rb
CHANGED
data/lib/stackify_ruby_apm.rb
CHANGED
@@ -35,9 +35,6 @@ require 'stackify_apm/transport/unix_socket_client'
|
|
35
35
|
require 'stackify_apm/transport/agent_http_client'
|
36
36
|
require 'stackify_apm/transport/aws_lambda_logging'
|
37
37
|
|
38
|
-
require 'google/protobuf'
|
39
|
-
require 'proto/stackify_trace'
|
40
|
-
|
41
38
|
# Checks if the framework using is Rails
|
42
39
|
require 'stackify_apm/railtie' if defined?(::Rails::Railtie)
|
43
40
|
|
data/stackify-ruby-apm.gemspec
CHANGED
@@ -21,13 +21,44 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
22
|
spec.require_paths = ['lib']
|
23
23
|
|
24
|
+
# rails
|
25
|
+
if RUBY_VERSION > '2.5'
|
26
|
+
spec.add_development_dependency 'rails', '~> 5.0'
|
27
|
+
else
|
28
|
+
spec.add_development_dependency 'rails', '~> 4.0'
|
29
|
+
end
|
30
|
+
|
31
|
+
# bigdecimal
|
32
|
+
if RUBY_VERSION > '2.5'
|
33
|
+
spec.add_development_dependency 'bigdecimal'
|
34
|
+
end
|
35
|
+
|
24
36
|
spec.add_development_dependency 'bundler', '~> 1.16'
|
25
37
|
spec.add_development_dependency 'rake', '~> 10.0'
|
26
38
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
39
|
+
spec.add_development_dependency 'activerecord'
|
40
|
+
spec.add_development_dependency 'curb', '0.9.8'
|
41
|
+
spec.add_development_dependency 'fakeredis'
|
42
|
+
spec.add_development_dependency 'http'
|
43
|
+
spec.add_development_dependency 'httpclient'
|
44
|
+
spec.add_development_dependency 'mongo'
|
45
|
+
spec.add_development_dependency 'mysql2'
|
46
|
+
spec.add_development_dependency 'pg', '~> 0.20'
|
47
|
+
spec.add_development_dependency 'rack-test'
|
48
|
+
spec.add_development_dependency 'rubocop'
|
49
|
+
spec.add_development_dependency 'sequel'
|
50
|
+
spec.add_development_dependency 'sinatra'
|
51
|
+
spec.add_development_dependency 'sinatra-activerecord'
|
52
|
+
spec.add_development_dependency 'sqlite3', '1.3.13'
|
53
|
+
spec.add_development_dependency 'stackify-api-ruby'
|
54
|
+
spec.add_development_dependency 'timecop'
|
55
|
+
spec.add_development_dependency 'to_bool'
|
56
|
+
spec.add_development_dependency 'webmock'
|
57
|
+
spec.add_development_dependency 'delayed_job'
|
58
|
+
|
27
59
|
spec.add_dependency('concurrent-ruby', '~> 1.0')
|
28
60
|
spec.add_dependency('delegate_matcher', '~> 0.4')
|
29
61
|
spec.add_dependency('faraday', '~> 0.8')
|
30
|
-
spec.add_dependency('google-protobuf', '3.5.0')
|
31
62
|
spec.add_dependency('net_http_unix', '~> 0.2')
|
32
|
-
spec.add_dependency('rufus-scheduler', '~> 3.
|
63
|
+
spec.add_dependency('rufus-scheduler', '~> 3.0')
|
33
64
|
end
|
metadata
CHANGED
@@ -1,15 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stackify-ruby-apm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stackify
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '5.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '5.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bigdecimal
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: bundler
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +80,272 @@ dependencies:
|
|
52
80
|
- - "~>"
|
53
81
|
- !ruby/object:Gem::Version
|
54
82
|
version: '3.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: activerecord
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: curb
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.9.8
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.9.8
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: fakeredis
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: http
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: httpclient
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: mongo
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: mysql2
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: pg
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0.20'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0.20'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: rack-test
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: rubocop
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - ">="
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: sequel
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - ">="
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0'
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - ">="
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '0'
|
237
|
+
- !ruby/object:Gem::Dependency
|
238
|
+
name: sinatra
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - ">="
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: '0'
|
244
|
+
type: :development
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - ">="
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: '0'
|
251
|
+
- !ruby/object:Gem::Dependency
|
252
|
+
name: sinatra-activerecord
|
253
|
+
requirement: !ruby/object:Gem::Requirement
|
254
|
+
requirements:
|
255
|
+
- - ">="
|
256
|
+
- !ruby/object:Gem::Version
|
257
|
+
version: '0'
|
258
|
+
type: :development
|
259
|
+
prerelease: false
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - ">="
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: '0'
|
265
|
+
- !ruby/object:Gem::Dependency
|
266
|
+
name: sqlite3
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - '='
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: 1.3.13
|
272
|
+
type: :development
|
273
|
+
prerelease: false
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - '='
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: 1.3.13
|
279
|
+
- !ruby/object:Gem::Dependency
|
280
|
+
name: stackify-api-ruby
|
281
|
+
requirement: !ruby/object:Gem::Requirement
|
282
|
+
requirements:
|
283
|
+
- - ">="
|
284
|
+
- !ruby/object:Gem::Version
|
285
|
+
version: '0'
|
286
|
+
type: :development
|
287
|
+
prerelease: false
|
288
|
+
version_requirements: !ruby/object:Gem::Requirement
|
289
|
+
requirements:
|
290
|
+
- - ">="
|
291
|
+
- !ruby/object:Gem::Version
|
292
|
+
version: '0'
|
293
|
+
- !ruby/object:Gem::Dependency
|
294
|
+
name: timecop
|
295
|
+
requirement: !ruby/object:Gem::Requirement
|
296
|
+
requirements:
|
297
|
+
- - ">="
|
298
|
+
- !ruby/object:Gem::Version
|
299
|
+
version: '0'
|
300
|
+
type: :development
|
301
|
+
prerelease: false
|
302
|
+
version_requirements: !ruby/object:Gem::Requirement
|
303
|
+
requirements:
|
304
|
+
- - ">="
|
305
|
+
- !ruby/object:Gem::Version
|
306
|
+
version: '0'
|
307
|
+
- !ruby/object:Gem::Dependency
|
308
|
+
name: to_bool
|
309
|
+
requirement: !ruby/object:Gem::Requirement
|
310
|
+
requirements:
|
311
|
+
- - ">="
|
312
|
+
- !ruby/object:Gem::Version
|
313
|
+
version: '0'
|
314
|
+
type: :development
|
315
|
+
prerelease: false
|
316
|
+
version_requirements: !ruby/object:Gem::Requirement
|
317
|
+
requirements:
|
318
|
+
- - ">="
|
319
|
+
- !ruby/object:Gem::Version
|
320
|
+
version: '0'
|
321
|
+
- !ruby/object:Gem::Dependency
|
322
|
+
name: webmock
|
323
|
+
requirement: !ruby/object:Gem::Requirement
|
324
|
+
requirements:
|
325
|
+
- - ">="
|
326
|
+
- !ruby/object:Gem::Version
|
327
|
+
version: '0'
|
328
|
+
type: :development
|
329
|
+
prerelease: false
|
330
|
+
version_requirements: !ruby/object:Gem::Requirement
|
331
|
+
requirements:
|
332
|
+
- - ">="
|
333
|
+
- !ruby/object:Gem::Version
|
334
|
+
version: '0'
|
335
|
+
- !ruby/object:Gem::Dependency
|
336
|
+
name: delayed_job
|
337
|
+
requirement: !ruby/object:Gem::Requirement
|
338
|
+
requirements:
|
339
|
+
- - ">="
|
340
|
+
- !ruby/object:Gem::Version
|
341
|
+
version: '0'
|
342
|
+
type: :development
|
343
|
+
prerelease: false
|
344
|
+
version_requirements: !ruby/object:Gem::Requirement
|
345
|
+
requirements:
|
346
|
+
- - ">="
|
347
|
+
- !ruby/object:Gem::Version
|
348
|
+
version: '0'
|
55
349
|
- !ruby/object:Gem::Dependency
|
56
350
|
name: concurrent-ruby
|
57
351
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,20 +388,6 @@ dependencies:
|
|
94
388
|
- - "~>"
|
95
389
|
- !ruby/object:Gem::Version
|
96
390
|
version: '0.8'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: google-protobuf
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - '='
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: 3.5.0
|
104
|
-
type: :runtime
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - '='
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: 3.5.0
|
111
391
|
- !ruby/object:Gem::Dependency
|
112
392
|
name: net_http_unix
|
113
393
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,14 +408,14 @@ dependencies:
|
|
128
408
|
requirements:
|
129
409
|
- - "~>"
|
130
410
|
- !ruby/object:Gem::Version
|
131
|
-
version: '3.
|
411
|
+
version: '3.0'
|
132
412
|
type: :runtime
|
133
413
|
prerelease: false
|
134
414
|
version_requirements: !ruby/object:Gem::Requirement
|
135
415
|
requirements:
|
136
416
|
- - "~>"
|
137
417
|
- !ruby/object:Gem::Version
|
138
|
-
version: '3.
|
418
|
+
version: '3.0'
|
139
419
|
description:
|
140
420
|
email:
|
141
421
|
- support@stackify.com
|
@@ -144,7 +424,6 @@ extensions: []
|
|
144
424
|
extra_rdoc_files: []
|
145
425
|
files:
|
146
426
|
- Gemfile
|
147
|
-
- Gemfile.lock
|
148
427
|
- LICENSE.md
|
149
428
|
- README.md
|
150
429
|
- Rakefile
|
@@ -192,6 +471,7 @@ files:
|
|
192
471
|
- lib/stackify_apm/spies/curb/easy.rb
|
193
472
|
- lib/stackify_apm/spies/curb/multi.rb
|
194
473
|
- lib/stackify_apm/spies/custom_instrumenter.rb
|
474
|
+
- lib/stackify_apm/spies/delayed_job.rb
|
195
475
|
- lib/stackify_apm/spies/httparty.rb
|
196
476
|
- lib/stackify_apm/spies/httpclient.rb
|
197
477
|
- lib/stackify_apm/spies/httprb.rb
|
@@ -199,6 +479,7 @@ files:
|
|
199
479
|
- lib/stackify_apm/spies/net_http.rb
|
200
480
|
- lib/stackify_apm/spies/redis.rb
|
201
481
|
- lib/stackify_apm/spies/sequel.rb
|
482
|
+
- lib/stackify_apm/spies/sidekiq.rb
|
202
483
|
- lib/stackify_apm/spies/sinatra.rb
|
203
484
|
- lib/stackify_apm/spies/sinatra_activerecord/mysql_adapter.rb
|
204
485
|
- lib/stackify_apm/spies/sinatra_activerecord/postgresql_adapter.rb
|
data/Gemfile.lock
DELETED
@@ -1,252 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
stackify-ruby-apm (1.7.4)
|
5
|
-
concurrent-ruby (~> 1.0)
|
6
|
-
delegate_matcher (~> 0.4)
|
7
|
-
google-protobuf (= 3.5.0)
|
8
|
-
net_http_unix (~> 0.2)
|
9
|
-
rufus-scheduler (~> 3.5)
|
10
|
-
|
11
|
-
GEM
|
12
|
-
remote: https://rubygems.org/
|
13
|
-
specs:
|
14
|
-
actionmailer (4.2.11.1)
|
15
|
-
actionpack (= 4.2.11.1)
|
16
|
-
actionview (= 4.2.11.1)
|
17
|
-
activejob (= 4.2.11.1)
|
18
|
-
mail (~> 2.5, >= 2.5.4)
|
19
|
-
rails-dom-testing (~> 1.0, >= 1.0.5)
|
20
|
-
actionpack (4.2.11.1)
|
21
|
-
actionview (= 4.2.11.1)
|
22
|
-
activesupport (= 4.2.11.1)
|
23
|
-
rack (~> 1.6)
|
24
|
-
rack-test (~> 0.6.2)
|
25
|
-
rails-dom-testing (~> 1.0, >= 1.0.5)
|
26
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
27
|
-
actionview (4.2.11.1)
|
28
|
-
activesupport (= 4.2.11.1)
|
29
|
-
builder (~> 3.1)
|
30
|
-
erubis (~> 2.7.0)
|
31
|
-
rails-dom-testing (~> 1.0, >= 1.0.5)
|
32
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
33
|
-
activejob (4.2.11.1)
|
34
|
-
activesupport (= 4.2.11.1)
|
35
|
-
globalid (>= 0.3.0)
|
36
|
-
activemodel (4.2.11.1)
|
37
|
-
activesupport (= 4.2.11.1)
|
38
|
-
builder (~> 3.1)
|
39
|
-
activerecord (4.2.11.1)
|
40
|
-
activemodel (= 4.2.11.1)
|
41
|
-
activesupport (= 4.2.11.1)
|
42
|
-
arel (~> 6.0)
|
43
|
-
activesupport (4.2.11.1)
|
44
|
-
i18n (~> 0.7)
|
45
|
-
minitest (~> 5.1)
|
46
|
-
thread_safe (~> 0.3, >= 0.3.4)
|
47
|
-
tzinfo (~> 1.1)
|
48
|
-
addressable (2.7.0)
|
49
|
-
public_suffix (>= 2.0.2, < 5.0)
|
50
|
-
arel (6.0.4)
|
51
|
-
ast (2.4.0)
|
52
|
-
bson (4.5.0)
|
53
|
-
builder (3.2.3)
|
54
|
-
concurrent-ruby (1.1.5)
|
55
|
-
crack (0.4.3)
|
56
|
-
safe_yaml (~> 1.0.0)
|
57
|
-
crass (1.0.5)
|
58
|
-
curb (0.9.8)
|
59
|
-
delegate_matcher (0.4.3)
|
60
|
-
proc_extensions (~> 0.2)
|
61
|
-
diff-lcs (1.3)
|
62
|
-
domain_name (0.5.20190701)
|
63
|
-
unf (>= 0.0.5, < 1.0.0)
|
64
|
-
erubis (2.7.0)
|
65
|
-
et-orbi (1.2.2)
|
66
|
-
tzinfo
|
67
|
-
fakeredis (0.7.0)
|
68
|
-
redis (>= 3.2, < 5.0)
|
69
|
-
faraday (0.17.1)
|
70
|
-
multipart-post (>= 1.2, < 3)
|
71
|
-
file-tail (1.2.0)
|
72
|
-
tins (~> 1.0)
|
73
|
-
fugit (1.3.3)
|
74
|
-
et-orbi (~> 1.1, >= 1.1.8)
|
75
|
-
raabro (~> 1.1)
|
76
|
-
globalid (0.4.2)
|
77
|
-
activesupport (>= 4.2.0)
|
78
|
-
google-protobuf (3.5.0)
|
79
|
-
hashdiff (1.0.0)
|
80
|
-
http (3.0.0)
|
81
|
-
addressable (~> 2.3)
|
82
|
-
http-cookie (~> 1.0)
|
83
|
-
http-form_data (>= 2.0.0.pre.pre2, < 3)
|
84
|
-
http_parser.rb (~> 0.6.0)
|
85
|
-
http-cookie (1.0.3)
|
86
|
-
domain_name (~> 0.5)
|
87
|
-
http-form_data (2.1.1)
|
88
|
-
http_parser.rb (0.6.0)
|
89
|
-
httpclient (2.8.3)
|
90
|
-
i18n (0.9.5)
|
91
|
-
concurrent-ruby (~> 1.0)
|
92
|
-
loofah (2.4.0)
|
93
|
-
crass (~> 1.0.2)
|
94
|
-
nokogiri (>= 1.5.9)
|
95
|
-
mail (2.7.1)
|
96
|
-
mini_mime (>= 0.1.1)
|
97
|
-
mini_mime (1.0.2)
|
98
|
-
mini_portile2 (2.1.0)
|
99
|
-
minitest (5.12.0)
|
100
|
-
mongo (2.10.2)
|
101
|
-
bson (>= 4.4.2, < 5.0.0)
|
102
|
-
multipart-post (2.1.1)
|
103
|
-
mysql2 (0.5.3)
|
104
|
-
net_http_unix (0.2.2)
|
105
|
-
nokogiri (1.6.8.1)
|
106
|
-
mini_portile2 (~> 2.1.0)
|
107
|
-
parallel (1.13.0)
|
108
|
-
parser (2.6.5.0)
|
109
|
-
ast (~> 2.4.0)
|
110
|
-
pg (0.21.0)
|
111
|
-
powerpack (0.1.2)
|
112
|
-
proc_extensions (0.2)
|
113
|
-
sourcify (~> 0.5)
|
114
|
-
public_suffix (2.0.5)
|
115
|
-
raabro (1.1.6)
|
116
|
-
rack (1.6.11)
|
117
|
-
rack-protection (1.5.5)
|
118
|
-
rack
|
119
|
-
rack-test (0.6.3)
|
120
|
-
rack (>= 1.0)
|
121
|
-
rails (4.2.11.1)
|
122
|
-
actionmailer (= 4.2.11.1)
|
123
|
-
actionpack (= 4.2.11.1)
|
124
|
-
actionview (= 4.2.11.1)
|
125
|
-
activejob (= 4.2.11.1)
|
126
|
-
activemodel (= 4.2.11.1)
|
127
|
-
activerecord (= 4.2.11.1)
|
128
|
-
activesupport (= 4.2.11.1)
|
129
|
-
bundler (>= 1.3.0, < 2.0)
|
130
|
-
railties (= 4.2.11.1)
|
131
|
-
sprockets-rails
|
132
|
-
rails-deprecated_sanitizer (1.0.3)
|
133
|
-
activesupport (>= 4.2.0.alpha)
|
134
|
-
rails-dom-testing (1.0.9)
|
135
|
-
activesupport (>= 4.2.0, < 5.0)
|
136
|
-
nokogiri (~> 1.6)
|
137
|
-
rails-deprecated_sanitizer (>= 1.0.1)
|
138
|
-
rails-html-sanitizer (1.3.0)
|
139
|
-
loofah (~> 2.3)
|
140
|
-
railties (4.2.11.1)
|
141
|
-
actionpack (= 4.2.11.1)
|
142
|
-
activesupport (= 4.2.11.1)
|
143
|
-
rake (>= 0.8.7)
|
144
|
-
thor (>= 0.18.1, < 2.0)
|
145
|
-
rainbow (2.2.2)
|
146
|
-
rake
|
147
|
-
rake (10.5.0)
|
148
|
-
redis (3.3.5)
|
149
|
-
rspec (3.9.0)
|
150
|
-
rspec-core (~> 3.9.0)
|
151
|
-
rspec-expectations (~> 3.9.0)
|
152
|
-
rspec-mocks (~> 3.9.0)
|
153
|
-
rspec-core (3.9.0)
|
154
|
-
rspec-support (~> 3.9.0)
|
155
|
-
rspec-expectations (3.9.0)
|
156
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
157
|
-
rspec-support (~> 3.9.0)
|
158
|
-
rspec-mocks (3.9.0)
|
159
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
160
|
-
rspec-support (~> 3.9.0)
|
161
|
-
rspec-support (3.9.0)
|
162
|
-
rubocop (0.50.0)
|
163
|
-
parallel (~> 1.10)
|
164
|
-
parser (>= 2.3.3.1, < 3.0)
|
165
|
-
powerpack (~> 0.1)
|
166
|
-
rainbow (>= 2.2.2, < 3.0)
|
167
|
-
ruby-progressbar (~> 1.7)
|
168
|
-
unicode-display_width (~> 1.0, >= 1.0.1)
|
169
|
-
ruby-progressbar (1.10.1)
|
170
|
-
ruby2ruby (2.4.4)
|
171
|
-
ruby_parser (~> 3.1)
|
172
|
-
sexp_processor (~> 4.6)
|
173
|
-
ruby_parser (3.14.0)
|
174
|
-
sexp_processor (~> 4.9)
|
175
|
-
rufus-scheduler (3.6.0)
|
176
|
-
fugit (~> 1.1, >= 1.1.6)
|
177
|
-
safe_yaml (1.0.5)
|
178
|
-
sequel (5.27.0)
|
179
|
-
sexp_processor (4.13.0)
|
180
|
-
sinatra (1.4.8)
|
181
|
-
rack (~> 1.5)
|
182
|
-
rack-protection (~> 1.4)
|
183
|
-
tilt (>= 1.3, < 3)
|
184
|
-
sinatra-activerecord (2.0.14)
|
185
|
-
activerecord (>= 3.2)
|
186
|
-
sinatra (>= 1.0)
|
187
|
-
sourcify (0.5.0)
|
188
|
-
file-tail (>= 1.0.5)
|
189
|
-
ruby2ruby (>= 1.2.5)
|
190
|
-
ruby_parser (>= 2.0.5)
|
191
|
-
sexp_processor (>= 3.0.5)
|
192
|
-
sprockets (3.7.2)
|
193
|
-
concurrent-ruby (~> 1.0)
|
194
|
-
rack (> 1, < 3)
|
195
|
-
sprockets-rails (3.2.1)
|
196
|
-
actionpack (>= 4.0)
|
197
|
-
activesupport (>= 4.0)
|
198
|
-
sprockets (>= 3.0.0)
|
199
|
-
sqlite3 (1.3.13)
|
200
|
-
stackify-api-ruby (1.1.0)
|
201
|
-
faraday (~> 0.8)
|
202
|
-
google-protobuf (~> 3.0)
|
203
|
-
net_http_unix (~> 0.2)
|
204
|
-
thor (0.20.3)
|
205
|
-
thread_safe (0.3.6)
|
206
|
-
tilt (2.0.10)
|
207
|
-
timecop (0.9.1)
|
208
|
-
tins (1.22.2)
|
209
|
-
to_bool (2.0.0)
|
210
|
-
tzinfo (1.2.5)
|
211
|
-
thread_safe (~> 0.1)
|
212
|
-
unf (0.1.4)
|
213
|
-
unf_ext
|
214
|
-
unf_ext (0.0.7.6)
|
215
|
-
unicode-display_width (1.6.0)
|
216
|
-
webmock (3.7.6)
|
217
|
-
addressable (>= 2.3.6)
|
218
|
-
crack (>= 0.3.2)
|
219
|
-
hashdiff (>= 0.4.0, < 2.0.0)
|
220
|
-
|
221
|
-
PLATFORMS
|
222
|
-
ruby
|
223
|
-
|
224
|
-
DEPENDENCIES
|
225
|
-
activerecord
|
226
|
-
bundler (~> 1.16)
|
227
|
-
curb (= 0.9.8)
|
228
|
-
fakeredis
|
229
|
-
google-protobuf (= 3.5.0)
|
230
|
-
http
|
231
|
-
httpclient
|
232
|
-
mongo
|
233
|
-
mysql2
|
234
|
-
net_http_unix (~> 0.2)
|
235
|
-
pg (~> 0.20)
|
236
|
-
rack-test
|
237
|
-
rails (~> 4.0)
|
238
|
-
rake (~> 10.0)
|
239
|
-
rspec (~> 3.0)
|
240
|
-
rubocop
|
241
|
-
sequel
|
242
|
-
sinatra
|
243
|
-
sinatra-activerecord
|
244
|
-
sqlite3 (= 1.3.13)
|
245
|
-
stackify-api-ruby
|
246
|
-
stackify-ruby-apm!
|
247
|
-
timecop
|
248
|
-
to_bool
|
249
|
-
webmock
|
250
|
-
|
251
|
-
BUNDLED WITH
|
252
|
-
1.17.3
|