newrelic_rpm 3.9.5.251 → 3.9.6.257

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. data.tar.gz.sig +0 -0
  2. data/CHANGELOG +74 -3
  3. data/GUIDELINES_FOR_CONTRIBUTING.md +19 -15
  4. data/README.md +1 -1
  5. data/Rakefile +22 -1
  6. data/lib/new_relic/agent/agent.rb +17 -5
  7. data/lib/new_relic/agent/agent_logger.rb +4 -0
  8. data/lib/new_relic/agent/configuration/default_source.rb +45 -1
  9. data/lib/new_relic/agent/configuration/manager.rb +43 -7
  10. data/lib/new_relic/agent/cross_app_monitor.rb +0 -3
  11. data/lib/new_relic/agent/cross_app_tracing.rb +8 -5
  12. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +4 -1
  13. data/lib/new_relic/agent/instrumentation/active_job.rb +93 -0
  14. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +2 -1
  15. data/lib/new_relic/agent/instrumentation/middleware_tracing.rb +2 -2
  16. data/lib/new_relic/agent/instrumentation/sinatra.rb +1 -2
  17. data/lib/new_relic/agent/new_relic_service.rb +1 -1
  18. data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +20 -1
  19. data/lib/new_relic/agent/new_relic_service/pruby_marshaller.rb +5 -1
  20. data/lib/new_relic/agent/pipe_channel_manager.rb +32 -11
  21. data/lib/new_relic/agent/threading/agent_thread.rb +1 -1
  22. data/lib/new_relic/agent/threading/backtrace_node.rb +4 -3
  23. data/lib/new_relic/agent/transaction.rb +27 -6
  24. data/lib/new_relic/agent/transaction_state.rb +3 -3
  25. data/lib/new_relic/agent/vm/mri_vm.rb +3 -3
  26. data/lib/new_relic/control/frameworks/rails3.rb +1 -16
  27. data/lib/new_relic/control/instance_methods.rb +2 -0
  28. data/lib/new_relic/json_wrapper.rb +18 -3
  29. data/lib/new_relic/rack/browser_monitoring.rb +7 -5
  30. data/lib/new_relic/rack/developer_mode.rb +2 -0
  31. data/lib/new_relic/rack/error_collector.rb +12 -51
  32. data/lib/new_relic/transaction_sample.rb +0 -4
  33. data/lib/new_relic/transaction_sample/segment.rb +0 -4
  34. data/lib/new_relic/version.rb +1 -1
  35. data/newrelic_rpm.gemspec +3 -2
  36. data/test/agent_helper.rb +1 -1
  37. data/test/config/test.cert.crt +16 -12
  38. data/test/config/test.cert.key +13 -13
  39. data/test/environments/lib/environments/runner.rb +3 -0
  40. data/test/environments/rails30/Gemfile +2 -2
  41. data/test/environments/rails31/Gemfile +2 -2
  42. data/test/environments/rails32/Gemfile +2 -2
  43. data/test/environments/rails40/Gemfile +2 -4
  44. data/test/environments/rails41/Gemfile +2 -4
  45. data/test/environments/rails42/Gemfile +2 -4
  46. data/test/fixtures/cross_agent_tests/attribute_configuration.json +349 -0
  47. data/test/fixtures/cross_agent_tests/labels.json +31 -2
  48. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/README.md +16 -0
  49. data/test/fixtures/cross_agent_tests/rum_client_config.json +9 -9
  50. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/empty_head +4 -0
  51. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/no_end_header.html +6 -0
  52. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/x_ua_meta_tag_multiple_tags.html +12 -0
  53. data/test/multiverse/lib/multiverse/runner.rb +33 -1
  54. data/test/multiverse/lib/multiverse/suite.rb +79 -7
  55. data/test/multiverse/suites/active_record/Envfile +1 -1
  56. data/test/multiverse/suites/agent_only/encoding_handling_test.rb +1 -1
  57. data/test/multiverse/suites/agent_only/labels_test.rb +2 -1
  58. data/test/multiverse/suites/agent_only/set_transaction_name_test.rb +2 -3
  59. data/test/multiverse/suites/agent_only/thread_profiling_test.rb +6 -6
  60. data/test/multiverse/suites/capistrano/Envfile +2 -2
  61. data/test/multiverse/suites/capistrano2/Envfile +4 -0
  62. data/test/multiverse/suites/curb/Envfile +4 -0
  63. data/test/multiverse/suites/high_security/config/newrelic.yml +5 -2
  64. data/test/multiverse/suites/high_security/high_security_test.rb +10 -8
  65. data/test/multiverse/suites/json/Envfile +23 -0
  66. data/test/multiverse/suites/json/config/newrelic.yml +22 -0
  67. data/test/multiverse/suites/json/json_test.rb +17 -0
  68. data/test/multiverse/suites/marshalling/marshalling_test.rb +2 -45
  69. data/test/multiverse/suites/rails/Envfile +3 -3
  70. data/test/multiverse/suites/rails/activejob_test.rb +137 -0
  71. data/test/multiverse/suites/rails/error_tracing_test.rb +15 -8
  72. data/test/multiverse/suites/rails/parameter_capture_test.rb +39 -19
  73. data/test/multiverse/suites/sequel/Envfile +5 -5
  74. data/test/multiverse/suites/sidekiq/Envfile +2 -2
  75. data/test/multiverse/suites/sinatra/Envfile +2 -1
  76. data/test/multiverse/suites/yajl/Envfile +13 -0
  77. data/test/multiverse/suites/yajl/config/newrelic.yml +21 -0
  78. data/test/multiverse/suites/yajl/yajl_test.rb +19 -0
  79. data/test/new_relic/agent/agent_logger_test.rb +10 -0
  80. data/test/new_relic/agent/agent_test.rb +7 -1
  81. data/test/new_relic/agent/configuration/default_source_test.rb +24 -0
  82. data/test/new_relic/agent/configuration/manager_test.rb +60 -2
  83. data/test/new_relic/agent/configuration/orphan_configuration_test.rb +25 -13
  84. data/test/new_relic/agent/cross_app_tracing_test.rb +10 -1
  85. data/test/new_relic/agent/instrumentation/active_job_test.rb +20 -0
  86. data/test/new_relic/agent/instrumentation/active_record_test.rb +10 -17
  87. data/test/new_relic/agent/instrumentation/controller_instrumentation_test.rb +15 -0
  88. data/test/new_relic/agent/instrumentation/sinatra_test.rb +1 -1
  89. data/test/new_relic/agent/new_relic_service_test.rb +24 -0
  90. data/test/new_relic/agent/pipe_channel_manager_test.rb +44 -2
  91. data/test/new_relic/agent/threading/agent_thread_test.rb +1 -2
  92. data/test/new_relic/agent/threading/backtrace_node_test.rb +12 -0
  93. data/test/new_relic/agent/transaction_state_test.rb +3 -6
  94. data/test/new_relic/agent/transaction_test.rb +163 -0
  95. data/test/new_relic/agent_test.rb +13 -1
  96. data/test/new_relic/fake_collector.rb +5 -5
  97. data/test/new_relic/fake_server.rb +5 -3
  98. data/test/new_relic/http_client_test_cases.rb +0 -4
  99. data/test/new_relic/marshalling_test_cases.rb +54 -0
  100. data/test/new_relic/multiverse_helpers.rb +2 -2
  101. data/test/new_relic/rack/browser_monitoring_test.rb +6 -0
  102. data/test/new_relic/rack/developer_mode_test.rb +8 -0
  103. data/test/new_relic/rack/error_collector_test.rb +0 -41
  104. data/test/new_relic/transaction_sample/segment_test.rb +0 -13
  105. data/test/new_relic/transaction_sample_test.rb +1 -11
  106. data/test/performance/lib/performance/instrumentation/perf_tools.rb +1 -1
  107. data/test/performance/lib/performance/runner.rb +1 -1
  108. data/test/performance/script/runner +2 -1
  109. data/test/performance/suites/rum_autoinsertion.rb +12 -2
  110. metadata +24 -11
  111. metadata.gz.sig +0 -0
  112. data/test/config/test.cert.csr +0 -11
  113. data/test/config/testing-privkey.pem +0 -18
@@ -114,11 +114,11 @@ module NewRelic
114
114
  end
115
115
 
116
116
  def in_background_transaction?
117
- !current_transaction.nil? && current_transaction.request.nil?
117
+ !current_transaction.nil? && !current_transaction.recording_web_transaction?
118
118
  end
119
119
 
120
- def in_request_transaction?
121
- !current_transaction.nil? && !current_transaction.request.nil?
120
+ def in_web_transaction?
121
+ !current_transaction.nil? && current_transaction.recording_web_transaction?
122
122
  end
123
123
 
124
124
  # Execution tracing on current thread
@@ -29,11 +29,11 @@ module NewRelic
29
29
 
30
30
  if GC.respond_to?(:stat)
31
31
  gc_stats = GC.stat
32
- snap.total_allocated_object = gc_stats[:total_allocated_object]
32
+ snap.total_allocated_object = gc_stats[:total_allocated_object] || gc_stats[:total_allocated_objects]
33
33
  snap.major_gc_count = gc_stats[:major_gc_count]
34
34
  snap.minor_gc_count = gc_stats[:minor_gc_count]
35
- snap.heap_live = gc_stats[:heap_live_slot] || gc_stats[:heap_live_num]
36
- snap.heap_free = gc_stats[:heap_free_slot] || gc_stats[:heap_free_num]
35
+ snap.heap_live = gc_stats[:heap_live_slot] || gc_stats[:heap_live_slots] || gc_stats[:heap_live_num]
36
+ snap.heap_free = gc_stats[:heap_free_slot] || gc_stats[:heap_free_slots] || gc_stats[:heap_free_num]
37
37
  end
38
38
  end
39
39
 
@@ -4,6 +4,7 @@
4
4
 
5
5
  require 'new_relic/control/frameworks/rails'
6
6
  require 'new_relic/rack/error_collector'
7
+
7
8
  module NewRelic
8
9
  class Control
9
10
  module Frameworks
@@ -22,22 +23,6 @@ module NewRelic
22
23
  ::Rails.root.to_s
23
24
  end
24
25
 
25
- def init_config(options={})
26
- super
27
- if Agent.config[:agent_enabled] && Agent.config[:'error_collector.enabled']
28
- if !rails_config.middleware.respond_to?(:include?) ||
29
- !rails_config.middleware.include?(NewRelic::Rack::ErrorCollector)
30
- add_error_collector_middleware
31
- end
32
- end
33
- end
34
-
35
- def add_error_collector_middleware
36
- rails_config.middleware.use NewRelic::Rack::ErrorCollector
37
- rescue => e
38
- NewRelic::Agent.logger.debug("Error encountered installing ErrorCollector: #{e}")
39
- end
40
-
41
26
  def vendor_root
42
27
  @vendor_root ||= File.join(root,'vendor','rails')
43
28
  end
@@ -76,6 +76,8 @@ module NewRelic
76
76
  install_instrumentation
77
77
  elsif !Agent.config[:agent_enabled]
78
78
  install_shim
79
+ else
80
+ DependencyDetection.detect!
79
81
  end
80
82
  end
81
83
 
@@ -7,9 +7,24 @@ module NewRelic
7
7
  def self.load_native_json
8
8
  begin
9
9
  require 'json' unless defined?(::JSON)
10
- @load_method = ::JSON.method(:load)
11
- @dump_method = ::JSON.method(:dump)
12
- @backend_name = :json
10
+
11
+ # yajl's replacement methods on ::JSON override both dump and generate.
12
+ # Because stdlib dump just calls generate, we end up calling into yajl
13
+ # when we don't want to. As such, we use generate directly instead of
14
+ # dump, although we have to fuss with defaults to make that ok.
15
+ generate_method = ::JSON.method(:generate)
16
+ if ::JSON.respond_to?(:dump_default_options)
17
+ options = ::JSON.dump_default_options
18
+ else
19
+ # These were the defaults from json 1.1.9 up to 1.6.1
20
+ options = { :allow_nan => true, :max_nesting => false }
21
+ end
22
+ @dump_method = Proc.new do |obj|
23
+ generate_method.call(obj, options)
24
+ end
25
+
26
+ @load_method = ::JSON.method(:load)
27
+ @backend_name = :json
13
28
  return true
14
29
  rescue StandardError, ScriptError
15
30
  NewRelic::Agent.logger.debug "%p while loading JSON library: %s" % [ err, err.message ] if
@@ -22,8 +22,9 @@ module NewRelic::Rack
22
22
  def traced_call(env)
23
23
  result = @app.call(env) # [status, headers, response]
24
24
 
25
- if (NewRelic::Agent.browser_timing_header != "") && should_instrument?(env, result[0], result[1])
26
- response_string = autoinstrument_source(result[2], result[1])
25
+ js_to_inject = NewRelic::Agent.browser_timing_header
26
+ if (js_to_inject != "") && should_instrument?(env, result[0], result[1])
27
+ response_string = autoinstrument_source(result[2], result[1], js_to_inject)
27
28
 
28
29
  env[ALREADY_INSTRUMENTED_KEY] = true
29
30
  if response_string
@@ -40,7 +41,8 @@ module NewRelic::Rack
40
41
  ALREADY_INSTRUMENTED_KEY = "newrelic.browser_monitoring_already_instrumented"
41
42
 
42
43
  def should_instrument?(env, status, headers)
43
- status == 200 &&
44
+ NewRelic::Agent.config[:'browser_monitoring.auto_instrument'] &&
45
+ status == 200 &&
44
46
  !env[ALREADY_INSTRUMENTED_KEY] &&
45
47
  is_html?(headers) &&
46
48
  !is_attachment?(headers) &&
@@ -64,7 +66,7 @@ module NewRelic::Rack
64
66
  CHARSET_RE = /<\s*meta[^>]+charset\s*=[^>]*>/im.freeze
65
67
  X_UA_COMPATIBLE_RE = /<\s*meta[^>]+http-equiv\s*=\s*['"]x-ua-compatible['"][^>]*>/im.freeze
66
68
 
67
- def autoinstrument_source(response, headers)
69
+ def autoinstrument_source(response, headers, js_to_inject)
68
70
  source = gather_source(response)
69
71
  close_old_response(response)
70
72
  return nil unless source
@@ -86,7 +88,7 @@ module NewRelic::Rack
86
88
 
87
89
  if insertion_index
88
90
  source = source[0...insertion_index] <<
89
- NewRelic::Agent.browser_timing_header <<
91
+ js_to_inject <<
90
92
  source[insertion_index..-1]
91
93
  else
92
94
  NewRelic::Agent.logger.debug "Skipping RUM instrumentation. Could not properly determine location to inject script."
@@ -52,6 +52,8 @@ module NewRelic
52
52
  protected
53
53
 
54
54
  def _call(env)
55
+ NewRelic::Agent.ignore_transaction
56
+
55
57
  @req = ::Rack::Request.new(env)
56
58
  @rendered = false
57
59
  case @req.path_info
@@ -6,62 +6,23 @@ require 'new_relic/rack/agent_middleware'
6
6
  require 'new_relic/agent/instrumentation/middleware_proxy'
7
7
 
8
8
  module NewRelic::Rack
9
- # This middleware is used by the agent in order to capture exceptions that
10
- # occur within your web application. It will normally be injected into the
11
- # middleware chain automatically, but if automatic injection fails in your
12
- # environment, you may alternately include it manually.
9
+ # This middleware is no longer used by the agent by default, but remains here
10
+ # for API compatibility purposes.
11
+ #
12
+ # You should remove any references to it from your config.ru or other rack
13
+ # middleware configuration files.
14
+ #
15
+ # The agent will instead now automatically collect errors for all Rack
16
+ # applications if automatic Rack middleware instrumentation is enabled (it is
17
+ # by default), or if you have manually added any New Relic middlewares into
18
+ # your middleware stack.
13
19
  #
14
20
  # @api public
21
+ # @deprecated
15
22
  #
16
23
  class ErrorCollector < AgentMiddleware
17
- def params_from_env(env)
18
- if defined?(ActionDispatch::Request)
19
- # We use ActionDispatch::Request if it's available so that we can get
20
- # the parameter filtering supplied by Rails via filtered_parameters.
21
- # The action and controller params are synthesized by
22
- # ActionDispatch::Request, so we strip them for consistency with Rack::Request
23
- params = ActionDispatch::Request.new(env).filtered_parameters
24
- params.delete('action')
25
- params.delete('controller')
26
- params
27
- else
28
- Rack::Request.new(env).params
29
- end
30
- rescue => e
31
- warning = "failed to capture request parameters: %p: %s" % [ e.class, e.message ]
32
- NewRelic::Agent.logger.warn(warning)
33
- { 'error' => warning }
34
- end
35
-
36
- def strip_query_string(s)
37
- s.gsub(/\?.*/, '')
38
- end
39
-
40
- def uri_from_env(env)
41
- strip_query_string("#{env['SCRIPT_NAME']}#{env['PATH_INFO']}")
42
- end
43
-
44
- def referrer_from_env(env)
45
- strip_query_string(env['HTTP_REFERER'].to_s)
46
- end
47
-
48
24
  def traced_call(env)
49
- begin
50
- @app.call(env)
51
- rescue Exception => exception
52
- NewRelic::Agent.logger.debug "collecting %p: %s" % [ exception.class, exception.message ]
53
- if !should_ignore_error?(exception, env)
54
- NewRelic::Agent.notice_error(exception,
55
- :uri => uri_from_env(env),
56
- :referer => referrer_from_env(env),
57
- :request_params => params_from_env(env))
58
- end
59
- raise exception
60
- end
61
- end
62
-
63
- def should_ignore_error?(error, env)
64
- NewRelic::Agent.instance.error_collector.error_is_ignored?(error)
25
+ @app.call(env)
65
26
  end
66
27
  end
67
28
  end
@@ -52,10 +52,6 @@ module NewRelic
52
52
  @start_time - @@start_time.to_f
53
53
  end
54
54
 
55
- def to_json
56
- JSON.dump(self.to_array)
57
- end
58
-
59
55
  def set_custom_param(name, value)
60
56
  @params[:custom_params] ||= {}
61
57
  @params[:custom_params][name] = value
@@ -53,10 +53,6 @@ module NewRelic
53
53
  [ (@called_segments ? @called_segments.map{|s| s.to_array} : []) ]
54
54
  end
55
55
 
56
- def to_json
57
- JSON.dump(self.to_array)
58
- end
59
-
60
56
  def path_string
61
57
  "#{metric_name}[#{called_segments.collect {|segment| segment.path_string }.join('')}]"
62
58
  end
@@ -12,7 +12,7 @@ module NewRelic
12
12
 
13
13
  MAJOR = 3
14
14
  MINOR = 9
15
- TINY = 5
15
+ TINY = 6
16
16
 
17
17
  begin
18
18
  require File.join(File.dirname(__FILE__), 'build')
@@ -8,8 +8,9 @@ require 'new_relic/latest_changes'
8
8
  Gem::Specification.new do |s|
9
9
  s.name = "newrelic_rpm"
10
10
  s.version = NewRelic::VERSION::STRING
11
+ s.required_ruby_version = '>= 1.8.7'
11
12
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
12
- s.authors = [ "Jason Clark", "Sam Goldstein", "Jonan Scheffler", "Ben Weintraub", "Chris Pine" ]
13
+ s.authors = [ "Jason Clark", "Tim Krajcar", "Chris Pine", "Jonan Scheffler", "Ben Weintraub" ]
13
14
  s.date = Time.now.strftime('%Y-%m-%d')
14
15
  s.licenses = ['New Relic', 'MIT', 'Ruby']
15
16
  s.description = <<-EOS
@@ -55,7 +56,7 @@ EOS
55
56
  if RUBY_PLATFORM == 'java'
56
57
  s.add_development_dependency 'activerecord-jdbcsqlite3-adapter'
57
58
  else
58
- s.add_development_dependency 'sqlite3', '1.3.8'
59
+ s.add_development_dependency 'sqlite3'
59
60
  end
60
61
 
61
62
  if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
@@ -287,7 +287,7 @@ end
287
287
  # Convenience wrapper around in_transaction that sets the category so that it
288
288
  # looks like we are in a web transaction
289
289
  def in_web_transaction(name='dummy')
290
- in_transaction(name, :category => :controller) do
290
+ in_transaction(name, :category => :controller, :request => stub()) do
291
291
  yield
292
292
  end
293
293
  end
@@ -1,14 +1,18 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIICLzCCAZgCCQCnkGSReKv/pTANBgkqhkiG9w0BAQUFADBcMQswCQYDVQQGEwJV
3
- UzEPMA0GA1UECBMGT3JlZ29uMREwDwYDVQQHEwhQb3J0bGFuZDESMBAGA1UEChMJ
4
- TmV3IFJlbGljMRUwEwYDVQQDEwxuZXdyZWxpYy5jb20wHhcNMTMwNjIxMTcxNzEy
5
- WhcNMjMwNjE5MTcxNzEyWjBcMQswCQYDVQQGEwJVUzEPMA0GA1UECBMGT3JlZ29u
6
- MREwDwYDVQQHEwhQb3J0bGFuZDESMBAGA1UEChMJTmV3IFJlbGljMRUwEwYDVQQD
7
- EwxuZXdyZWxpYy5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOsuntDM
8
- BSdK2YHRYzzqzm5adZspXUrEMZJa/D/vp/xtf3b7WCtKpstvS/wkhvHmpLGbrI+Q
9
- SnhijZKBVsps1eGDBXD+7ieHLSmI/74VL/PayHn5OKXb9RJ1VmYavM+1AWFNv75A
10
- akqNL84vykpeqk13nfJGqjzpiqnMg1xg1usNAgMBAAEwDQYJKoZIhvcNAQEFBQAD
11
- gYEAeG8F0vIQY6nCgUQl/k+JTG40PAQUdASpzkxgINX/CbzReFIp6r29/szjTI0n
12
- kujAl1XWmIf1Q+xapoW23eWEo0eqlWdjiz+F27VjCraTo1I84+LtGwFZfAAi3wCl
13
- qwZz9vdk1wUN8Pfo3fSZsnk97//c7+UFPMdyDlSlLbYJ8NI=
2
+ MIIC4TCCAkqgAwIBAgIJAOIPeejXAamDMA0GCSqGSIb3DQEBBQUAMFUxCzAJBgNV
3
+ BAYTAlVTMQswCQYDVQQIEwJPUjERMA8GA1UEBxMIUG9ydGxhbmQxEjAQBgNVBAoT
4
+ CU5ldyBSZWxpYzESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE0MTAxNzE2MzYyOVoX
5
+ DTI0MTAxNDE2MzYyOVowVTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk9SMREwDwYD
6
+ VQQHEwhQb3J0bGFuZDESMBAGA1UEChMJTmV3IFJlbGljMRIwEAYDVQQDEwlsb2Nh
7
+ bGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANLOzYXpWdEXCa1+uvB5
8
+ KDDHD0mn+FbDhjQnR9oT3Hf4UBNMCHjdL4FP1I5FYH8W1qBHHNJNjTr29BtcUMGR
9
+ 0YzLJXplGS48JmcdvigCGVTqoTl52H9AwaDwKGsQxwTtws2E6IydnQlRYeyMA1tF
10
+ oFUbDGYoRCWTmOmJwf5gPPpTAgMBAAGjgbgwgbUwHQYDVR0OBBYEFAJsqdk2gCV3
11
+ pUm6II55XfIT6Rp1MIGFBgNVHSMEfjB8gBQCbKnZNoAld6VJuiCOeV3yE+kadaFZ
12
+ pFcwVTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk9SMREwDwYDVQQHEwhQb3J0bGFu
13
+ ZDESMBAGA1UEChMJTmV3IFJlbGljMRIwEAYDVQQDEwlsb2NhbGhvc3SCCQDiD3no
14
+ 1wGpgzAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBALuLxN2r5zKenhyq
15
+ vqzox7ru9Rz4BOmJ0u86u/d+l/umMCkZUM3eOu6ey+0k1RkSEyOXb3jfEnRcK3KB
16
+ 5XJN4ZPmmyyNSCyHa/E0/7VrDHD5V+DwOGqFr6qalBFj5t+SRha3UgRE3AJa9hKs
17
+ ombbF12X44MsW+Ksd9vC69x8DHXi
14
18
  -----END CERTIFICATE-----
@@ -1,15 +1,15 @@
1
1
  -----BEGIN RSA PRIVATE KEY-----
2
- MIICXAIBAAKBgQDrLp7QzAUnStmB0WM86s5uWnWbKV1KxDGSWvw/76f8bX92+1gr
3
- SqbLb0v8JIbx5qSxm6yPkEp4Yo2SgVbKbNXhgwVw/u4nhy0piP++FS/z2sh5+Til
4
- 2/USdVZmGrzPtQFhTb++QGpKjS/OL8pKXqpNd53yRqo86YqpzINcYNbrDQIDAQAB
5
- AoGABbLXfk+zQER8CL0+HlfCMMJYXy4daJZgbR9vRU1VULSGhieI92OTrxI/URjB
6
- fFMOYo9XGxNv+oLI02f25mjEtepGahrD/8/26dPyYWRaOIC9rO7YWxPzlo9QV+z4
7
- AyNlTfgfO8qUYW3M/egk8rualpSNN9TS5nUdTC+dlbeEhIECQQD4wOWwFm85aJN9
8
- 6Nh7qn7ZW7gx7adECRqnpRve/TsqiAKr+kshCVE7JGrgzqeqAcA9oYLn3B1UZEGm
9
- KoZaGfdpAkEA8giDYTQpJ+2REYEUO3AKIVDCVuI4lESM8AuwjQH7KlJ1nbVXv0U+
10
- nHSLGu+Qj7CVGmvuEutBwa7nCQs9qs+mBQJALW4FRMiEHab0sN0SlFtJ+WZf2HZ/
11
- wtQq0w07btkushDO9ButFuZ9uGBpSI9VXZ4ePuM9Zhz0GlKJDtDbYp81aQJAGl5b
12
- EegA49y6BVIuxhr6v45w3c5fo6ekQzLC1Vn15zJ8peXv3WLJ43m+/fxDn6P5WpuP
13
- oHgI/fT0LsQOv+FHkQJBAKn0+5AMaAcQPQRBofT3i9SYQBjZKwshTRni1ktwGu7S
14
- 19BkWaPJR9h9xxnPxC7U8PG0HuZ7jYOt0PgypJU2/No=
2
+ MIICXQIBAAKBgQDSzs2F6VnRFwmtfrrweSgwxw9Jp/hWw4Y0J0faE9x3+FATTAh4
3
+ 3S+BT9SORWB/FtagRxzSTY069vQbXFDBkdGMyyV6ZRkuPCZnHb4oAhlU6qE5edh/
4
+ QMGg8ChrEMcE7cLNhOiMnZ0JUWHsjANbRaBVGwxmKEQlk5jpicH+YDz6UwIDAQAB
5
+ AoGAQk3jXLwhkN9DHvueRqaE2pqxl0QqmveSjXLRaakXjfBfF0Kx43oGSBDY1QrD
6
+ KBYB2ZWkXg0gX6xu6PAnQkrf8msNkcuNEXwYV13NE3L/orhhANEjdps9OV3G0uov
7
+ k3/nugo1eonY38aMx9swFLQGh/hr4Lpk+6TlR59jlPHYo0kCQQD8Oj3s4psAz80p
8
+ cUOoZCPN7m+IhWM20LviAlpTKECgYdqUt/f/Alyhdr8N2axrJ2Xe58RllFusiCyw
9
+ m+FqZwmtAkEA1fX36c1e0fMqlpdEsuPa1bAg8D2dY9jE07nI8cAhC0Fa1tw7Qh/m
10
+ zfEVktRTgf561DhKM2InpTTfHglVVryT/wJAc3tfGvRtr6N09cKMDa87zW+b1U/t
11
+ Kw3K2CHnpSdK36Ot5mWMwE8ehjbOJtNA5Ba3x6UqALA6gPYgMARO4t6mSQJBAKmH
12
+ HaqTvbiOekUdkCJJ5b+AsWiI+Wb+f13fC7d46vW3D9nEX/ORwVeV2Okg8RXD4+C4
13
+ xRoXgKAm104+SO7TtlMCQQC9St4s8Z76CeUZv/AN5200pjMQBdKpStViQ13rGE2c
14
+ fkTLYOSU8AuUyfzaDY+J7tyRCtagVpdnQh98uINoLXHn
15
15
  -----END RSA PRIVATE KEY-----
@@ -14,6 +14,9 @@ module Environments
14
14
  "1.9" => ["rails21", "rails22"],
15
15
  "2" => ["rails21", "rails22", "rails23"],
16
16
 
17
+ # https://github.com/rails/rails/issues/17017
18
+ "2.2" => ["rails30", "rails31", "rails32"],
19
+
17
20
  "1.8.7" => ["rails40", "rails41", "rails42"],
18
21
  "1.9.2" => ["rails40", "rails41", "rails42"],
19
22
  "ree" => ["rails40", "rails41", "rails42"],
@@ -11,8 +11,8 @@ gem 'rack-test'
11
11
  gem 'newrelic_rpm', :path => '../../..'
12
12
 
13
13
  if (RUBY_PLATFORM == 'java')
14
- gem "activerecord-jdbcmysql-adapter", '1.2.5'
15
- gem "activerecord-jdbcsqlite3-adapter", '1.2.5'
14
+ gem "activerecord-jdbcmysql-adapter"
15
+ gem "activerecord-jdbcsqlite3-adapter"
16
16
  gem "jruby-openssl"
17
17
  else
18
18
  gem "mysql", "~>2.9.1"
@@ -11,8 +11,8 @@ gem 'rack-test'
11
11
  gem 'newrelic_rpm', :path => '../../..'
12
12
 
13
13
  if (RUBY_PLATFORM == 'java')
14
- gem "activerecord-jdbcmysql-adapter", "~>1.2.9"
15
- gem "activerecord-jdbcsqlite3-adapter", "~>1.2.9"
14
+ gem "activerecord-jdbcmysql-adapter"
15
+ gem "activerecord-jdbcsqlite3-adapter"
16
16
  gem "jruby-openssl"
17
17
  else
18
18
  gem "mysql", "~>2.9.1"
@@ -11,8 +11,8 @@ gem 'rack-test'
11
11
  gem "newrelic_rpm", :path => "../../.."
12
12
 
13
13
  platforms :jruby do
14
- gem "activerecord-jdbcmysql-adapter", "~>1.2.9"
15
- gem "activerecord-jdbcsqlite3-adapter", "~>1.2.9"
14
+ gem "activerecord-jdbcmysql-adapter"
15
+ gem "activerecord-jdbcsqlite3-adapter"
16
16
  gem "jruby-openssl"
17
17
  end
18
18
 
@@ -2,7 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem 'rake'
4
4
 
5
- gem 'rails', '~>4.0.4'
5
+ gem 'rails', '~>4.0.10'
6
6
 
7
7
  # Do not automatically require minitest, since this will break with rbx-2.2.5.
8
8
  # rbx-2.2.5 helpfully bundles minitest-5.3.0.
@@ -25,9 +25,7 @@ end
25
25
 
26
26
  platforms :ruby do
27
27
  gem "mysql"
28
- # Lock at 1.3.8 to work around:
29
- # https://github.com/sparklemotion/sqlite3-ruby/issues/122
30
- gem "sqlite3", '1.3.8'
28
+ gem "sqlite3"
31
29
  end
32
30
 
33
31
  platforms :rbx do
@@ -2,7 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem 'rake'
4
4
 
5
- gem 'rails', '~>4.1.0'
5
+ gem 'rails', '~>4.1.6'
6
6
 
7
7
  gem 'minitest', '5.2.3'
8
8
  gem 'mocha', :require => false
@@ -17,9 +17,7 @@ end
17
17
 
18
18
  platforms :ruby do
19
19
  gem "mysql"
20
- # Lock at 1.3.8 to work around:
21
- # https://github.com/sparklemotion/sqlite3-ruby/issues/122
22
- gem "sqlite3", '1.3.8'
20
+ gem "sqlite3"
23
21
  end
24
22
 
25
23
  platforms :rbx do
@@ -2,7 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem 'rake'
4
4
 
5
- gem 'rails', '~>4.2.0.beta1'
5
+ gem 'rails', '~>4.2.0.beta2'
6
6
 
7
7
  gem 'minitest', '5.2.3'
8
8
  gem 'mocha', :require => false
@@ -17,9 +17,7 @@ end
17
17
 
18
18
  platforms :ruby do
19
19
  gem "mysql"
20
- # Lock at 1.3.8 to work around:
21
- # https://github.com/sparklemotion/sqlite3-ruby/issues/122
22
- gem "sqlite3", '1.3.8'
20
+ gem "sqlite3"
23
21
  end
24
22
 
25
23
  platforms :rbx do