appsignal 0.11.13 → 0.11.14.beta.1

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
2
  SHA1:
3
- metadata.gz: 939d3b7a54a4b39ec139e95f135fcd25565fac74
4
- data.tar.gz: d186dc6f7a065ae88bff571e3963955dd0bf74a0
3
+ metadata.gz: 19f6aa00101f3a4629f9d5d7393ddace658ee343
4
+ data.tar.gz: 22377b463a085c914a89dd38635806f24ec97724
5
5
  SHA512:
6
- metadata.gz: c8f57aee9899c31b32997a99652702c36f9e3234d35c1e29acfcfc40d19285bd28a1cc244818c0cdbc6fcf804fa3680c770a83929e51765f46c52ae2524807b2
7
- data.tar.gz: d5f6ea1bcf79f0c5c23e169baff789e52a5c6ee8f0f75717ed285b3f84aa147694ae403f430a0007e967aae7b706a371c9b00b54174a577176dc77cf65d7a271
6
+ metadata.gz: 4ee40a6f511ac2bc1e4e3c439a99ac45a1f434538745e96bdd822ac85bdf7272dc5bd9d3458a6e6f3f96264beaa7772f2c995f5f1518376d57fe87a8e4e49413
7
+ data.tar.gz: d92cc1b8994f031eae4b088853ac59e205c6493e182592d98b25cfc841a968568d41d4b93f8a633079ded8c9ff3e583ea4d956d778ac55211d89844235bcc8b3
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ # 0.11.14
2
+ * Support ActiveJob wrapped jobs
3
+ * Improve proxy support
4
+ * Improve rake support
5
+
1
6
  # 0.11.13
2
7
  * Add Padrino support
3
8
  * Add Rake task monitoring
@@ -3,6 +3,14 @@ module Rake
3
3
  alias_method :invoke_without_appsignal, :invoke
4
4
 
5
5
  def invoke(*args)
6
+ if Appsignal.active?
7
+ invoke_with_appsignal(*args)
8
+ else
9
+ invoke_without_appsignal(*args)
10
+ end
11
+ end
12
+
13
+ def invoke_with_appsignal(*args)
6
14
  transaction = Appsignal::Transaction.create(
7
15
  SecureRandom.uuid,
8
16
  ENV,
@@ -15,7 +15,7 @@ if defined?(::Sidekiq)
15
15
  def call(worker, item, queue)
16
16
  Appsignal.monitor_transaction(
17
17
  'perform_job.sidekiq',
18
- :class => item['class'],
18
+ :class => item['wrapped'] || item['class'],
19
19
  :method => 'perform',
20
20
  :metadata => formatted_metadata(item),
21
21
  :params => format_args(item['args']),
@@ -25,8 +25,10 @@ module Appsignal
25
25
  sanitize_hash(value)
26
26
  when Array
27
27
  sanitize_array(value)
28
- when Fixnum, String, Symbol
28
+ when Fixnum, String, Symbol, Float
29
29
  unmodified(value)
30
+ when TrueClass, FalseClass
31
+ stringified(value)
30
32
  else
31
33
  inspected(value)
32
34
  end
@@ -46,6 +48,10 @@ module Appsignal
46
48
  target_array
47
49
  end
48
50
 
51
+ def stringified(value)
52
+ value.to_s
53
+ end
54
+
49
55
  def unmodified(value)
50
56
  value
51
57
  end
@@ -62,7 +62,13 @@ module Appsignal
62
62
  end
63
63
 
64
64
  def http_client
65
- Net::HTTP.new(uri.host, uri.port, proxy_addr, proxy_port).tap do |http|
65
+ client = if config[:http_proxy]
66
+ Net::HTTP.new(uri.host, uri.port, proxy_addr, proxy_port)
67
+ else
68
+ Net::HTTP.new(uri.host, uri.port)
69
+ end
70
+
71
+ client.tap do |http|
66
72
  if uri.scheme == 'https'
67
73
  http.use_ssl = true
68
74
  http.ssl_version = :TLSv1
@@ -1,3 +1,3 @@
1
1
  module Appsignal
2
- VERSION = '0.11.13'
2
+ VERSION = '0.11.14.beta.1'
3
3
  end
@@ -6,20 +6,35 @@ describe "Rack integration" do
6
6
  let(:task) { Rake::Task.new('task', app) }
7
7
  before do
8
8
  load file
9
+ task.stub(
10
+ :name => 'task:name',
11
+ :invoke_without_appsignal => true
12
+ )
9
13
  end
10
14
 
11
15
  describe "#invoke" do
12
- before do
13
- task.stub(
14
- :name => 'task:name',
15
- :invoke_without_appsignal => true
16
- )
16
+ before { Appsignal.stub(:active? => true) }
17
+
18
+ it "should call with appsignal monitoring" do
19
+ expect( task ).to receive(:invoke_with_appsignal).with(['foo'])
17
20
  end
18
21
 
19
- it "should create a transaction" do
20
- expect( Appsignal::Transaction ).to receive(:create)
22
+ context "when not active" do
23
+ before { Appsignal.stub(:active? => false) }
24
+
25
+ it "should NOT call with appsignal monitoring" do
26
+ expect( task ).to_not receive(:invoke_with_appsignal).with(['foo'])
27
+ end
28
+
29
+ it "should call the original task" do
30
+ expect( task ).to receive(:invoke_without_appsignal).with(['foo'])
31
+ end
21
32
  end
22
33
 
34
+ after { task.invoke(['foo']) }
35
+ end
36
+
37
+ describe "#invoke_with_appsignal" do
23
38
  context "with transaction" do
24
39
  let!(:transaction) { Appsignal::Transaction.new('123', {}) }
25
40
  let!(:agent) { double('Agent', :send_queue => true) }
@@ -81,6 +96,6 @@ describe "Rack integration" do
81
96
  end
82
97
  end
83
98
 
84
- after { task.invoke('foo') rescue VerySpecificError }
99
+ after { task.invoke_with_appsignal('foo') rescue VerySpecificError }
85
100
  end
86
101
  end
@@ -47,6 +47,23 @@ describe "Sidekiq integration" do
47
47
  )
48
48
  end
49
49
 
50
+ it "reports the correct job class for a ActiveJob wrapped job" do
51
+ item['wrapped'] = 'ActiveJobClass'
52
+ Appsignal.should_receive(:monitor_transaction).with(
53
+ 'perform_job.sidekiq',
54
+ :class => 'ActiveJobClass',
55
+ :method => 'perform',
56
+ :metadata => {
57
+ 'retry_count' => "0",
58
+ 'queue' => 'default',
59
+ 'extra' => 'data',
60
+ 'wrapped' => 'ActiveJobClass'
61
+ },
62
+ :params => ['Model', "1"],
63
+ :queue_start => Time.parse('01-01-2001 10:00:00UTC')
64
+ )
65
+ end
66
+
50
67
  after do
51
68
  Timecop.freeze(Time.parse('01-01-2001 10:01:00UTC')) do
52
69
  Appsignal::Integrations::SidekiqPlugin.new.call(worker, item, queue) do
@@ -17,16 +17,20 @@ describe Appsignal::ParamsSanitizer do
17
17
  let(:file) { uploaded_file }
18
18
  let(:params) do
19
19
  {
20
- :text => 'string',
21
- :file => file,
22
- :hash => {
23
- :nested_text => 'string',
20
+ :text => 'string',
21
+ :file => file,
22
+ :float => 0.0,
23
+ :bool_true => true,
24
+ :bool_false => false,
25
+ :int => 1,
26
+ :hash => {
27
+ :nested_text => 'string',
24
28
  :nested_array => [
25
29
  'something',
26
30
  'else',
27
31
  file,
28
32
  {
29
- :key => 'value',
33
+ :key => 'value',
30
34
  :file => file,
31
35
  },
32
36
  ErrorOnInspect.new,
@@ -43,9 +47,13 @@ describe Appsignal::ParamsSanitizer do
43
47
  before { klass.sanitize!(subject) }
44
48
 
45
49
  it { should be_instance_of Hash }
46
- its([:text]) { should == 'string' }
47
- its([:file]) { should be_instance_of String }
48
- its([:file]) { should include '::UploadedFile' }
50
+ its([:text]) { should == 'string' }
51
+ its([:file]) { should be_instance_of String }
52
+ its([:file]) { should include '::UploadedFile' }
53
+ its([:float]) { should == 0.0 }
54
+ its([:int]) { should == 1 }
55
+ its([:bool_true]) { should == 'true' }
56
+ its([:bool_false]) { should == 'false' }
49
57
 
50
58
  context "hash" do
51
59
  subject { params[:hash] }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appsignal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.13
4
+ version: 0.11.14.beta.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Beekman
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2015-08-10 00:00:00.000000000 Z
15
+ date: 2015-08-31 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rack
@@ -261,9 +261,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
261
261
  version: '1.9'
262
262
  required_rubygems_version: !ruby/object:Gem::Requirement
263
263
  requirements:
264
- - - ">="
264
+ - - ">"
265
265
  - !ruby/object:Gem::Version
266
- version: '0'
266
+ version: 1.3.1
267
267
  requirements: []
268
268
  rubyforge_project:
269
269
  rubygems_version: 2.4.5