airbrake-ruby 5.0.0.rc.1-java → 5.0.0.rc.2-java
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/lib/airbrake-ruby/notice.rb +1 -8
- data/lib/airbrake-ruby/remote_settings.rb +16 -1
- data/lib/airbrake-ruby/remote_settings/settings_data.rb +1 -1
- data/lib/airbrake-ruby/sync_sender.rb +1 -1
- data/lib/airbrake-ruby/version.rb +11 -1
- data/spec/remote_settings/settings_data_spec.rb +1 -1
- data/spec/remote_settings_spec.rb +37 -19
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5c1a171bc9b89ed604ee96683863915d95d13823f004234902d95036576d101
|
4
|
+
data.tar.gz: bcc5563ebce4151570184bf9ed9248eb21684fbc4cf5911fbea687f47e4587e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb1e4f7df43de3905ebe1fdded4066009043fc5f82a6f47aa7ea827ced8a0ba77432eb5413c8481456e5348a7ea673e1a880ecbf15aefb5a94d37eb0df7b91a2
|
7
|
+
data.tar.gz: 9967e9fa9ddef2d7a3be67aa0fc1cc44eca5a0c89945b0fa69bf4510733e827f164a70c7a12e36426d4a5b6f239fdd072a64de886aca42d93355ad18b5d96b66
|
data/lib/airbrake-ruby/notice.rb
CHANGED
@@ -4,19 +4,12 @@ module Airbrake
|
|
4
4
|
#
|
5
5
|
# @since v1.0.0
|
6
6
|
class Notice
|
7
|
-
# @return [Hash{Symbol=>String}] the information about the notifier library
|
8
|
-
NOTIFIER = {
|
9
|
-
name: 'airbrake-ruby'.freeze,
|
10
|
-
version: Airbrake::AIRBRAKE_RUBY_VERSION,
|
11
|
-
url: 'https://github.com/airbrake/airbrake-ruby'.freeze,
|
12
|
-
}.freeze
|
13
|
-
|
14
7
|
# @return [Hash{Symbol=>String,Hash}] the information to be displayed in the
|
15
8
|
# Context tab in the dashboard
|
16
9
|
CONTEXT = {
|
17
10
|
os: RUBY_PLATFORM,
|
18
11
|
language: "#{RUBY_ENGINE}/#{RUBY_VERSION}".freeze,
|
19
|
-
notifier:
|
12
|
+
notifier: Airbrake::NOTIFIER_INFO,
|
20
13
|
}.freeze
|
21
14
|
|
22
15
|
# @return [Integer] the maxium size of the JSON payload in bytes
|
@@ -24,6 +24,15 @@ module Airbrake
|
|
24
24
|
'../../config/config.json',
|
25
25
|
).freeze
|
26
26
|
|
27
|
+
# @return [Hash{Symbol=>String}] metadata to be attached to every GET
|
28
|
+
# request
|
29
|
+
QUERY_PARAMS = URI.encode_www_form(
|
30
|
+
notifier_name: Airbrake::NOTIFIER_INFO[:name],
|
31
|
+
notifier_version: Airbrake::NOTIFIER_INFO[:version],
|
32
|
+
os: RUBY_PLATFORM,
|
33
|
+
language: "#{RUBY_ENGINE}/#{RUBY_VERSION}".freeze,
|
34
|
+
).freeze
|
35
|
+
|
27
36
|
# Polls remote config of the given project.
|
28
37
|
#
|
29
38
|
# @param [Integer] project_id
|
@@ -84,7 +93,7 @@ module Airbrake
|
|
84
93
|
def fetch_config
|
85
94
|
response = nil
|
86
95
|
begin
|
87
|
-
response = Net::HTTP.get(
|
96
|
+
response = Net::HTTP.get(build_config_uri)
|
88
97
|
rescue StandardError => ex
|
89
98
|
logger.error(ex)
|
90
99
|
return {}
|
@@ -108,6 +117,12 @@ module Airbrake
|
|
108
117
|
json
|
109
118
|
end
|
110
119
|
|
120
|
+
def build_config_uri
|
121
|
+
uri = URI(@data.config_route)
|
122
|
+
uri.query = QUERY_PARAMS
|
123
|
+
uri
|
124
|
+
end
|
125
|
+
|
111
126
|
def load_config
|
112
127
|
config_dir = File.dirname(CONFIG_DUMP_PATH)
|
113
128
|
Dir.mkdir(config_dir) unless File.directory?(config_dir)
|
@@ -22,7 +22,7 @@ module Airbrake
|
|
22
22
|
|
23
23
|
# @return [String] what URL to poll
|
24
24
|
CONFIG_ROUTE_PATTERN =
|
25
|
-
'https
|
25
|
+
'https://v1-%<bucket>s.s3.amazonaws.com/' \
|
26
26
|
"#{API_VER}/config/%<project_id>s/config.json".freeze
|
27
27
|
|
28
28
|
# @return [Hash{Symbol=>String}] the hash of all supported settings where
|
@@ -79,7 +79,7 @@ module Airbrake
|
|
79
79
|
req['Authorization'] = "Bearer #{@config.project_key}"
|
80
80
|
req['Content-Type'] = CONTENT_TYPE
|
81
81
|
req['User-Agent'] =
|
82
|
-
"#{Airbrake::
|
82
|
+
"#{Airbrake::NOTIFIER_INFO[:name]}/#{Airbrake::AIRBRAKE_RUBY_VERSION}" \
|
83
83
|
" Ruby/#{RUBY_VERSION}"
|
84
84
|
|
85
85
|
req
|
@@ -2,5 +2,15 @@
|
|
2
2
|
# More information: http://semver.org/
|
3
3
|
module Airbrake
|
4
4
|
# @return [String] the library version
|
5
|
-
|
5
|
+
# @api public
|
6
|
+
AIRBRAKE_RUBY_VERSION = '5.0.0.rc.2'.freeze
|
7
|
+
|
8
|
+
# @return [Hash{Symbol=>String}] the information about the notifier library
|
9
|
+
# @since ?.?.?
|
10
|
+
# @api public
|
11
|
+
NOTIFIER_INFO = {
|
12
|
+
name: 'airbrake-ruby'.freeze,
|
13
|
+
version: Airbrake::AIRBRAKE_RUBY_VERSION,
|
14
|
+
url: 'https://github.com/airbrake/airbrake-ruby'.freeze,
|
15
|
+
}.freeze
|
6
16
|
end
|
@@ -79,7 +79,7 @@ RSpec.describe Airbrake::RemoteSettings::SettingsData do
|
|
79
79
|
|
80
80
|
it "returns the default pathname" do
|
81
81
|
expect(described_class.new(project_id, data).config_route).to eq(
|
82
|
-
'https://staging-notifier-configs.s3.amazonaws.com/' \
|
82
|
+
'https://v1-staging-notifier-configs.s3.amazonaws.com/' \
|
83
83
|
"2020-06-18/config/#{project_id}/config.json",
|
84
84
|
)
|
85
85
|
end
|
@@ -2,7 +2,7 @@ RSpec.describe Airbrake::RemoteSettings do
|
|
2
2
|
let(:project_id) { 123 }
|
3
3
|
|
4
4
|
let(:endpoint) do
|
5
|
-
"https://staging-notifier-configs.s3.amazonaws.com/2020-06-18/config/" \
|
5
|
+
"https://v1-staging-notifier-configs.s3.amazonaws.com/2020-06-18/config/" \
|
6
6
|
"#{project_id}/config.json"
|
7
7
|
end
|
8
8
|
|
@@ -25,9 +25,12 @@ RSpec.describe Airbrake::RemoteSettings do
|
|
25
25
|
let(:config_path) { described_class::CONFIG_DUMP_PATH }
|
26
26
|
let(:config_dir) { File.dirname(config_path) }
|
27
27
|
|
28
|
-
|
29
|
-
stub_request(:get,
|
28
|
+
let!(:stub) do
|
29
|
+
stub_request(:get, Regexp.new(endpoint))
|
30
|
+
.to_return(status: 200, body: body.to_json)
|
31
|
+
end
|
30
32
|
|
33
|
+
before do
|
31
34
|
# Do not create config dumps on disk.
|
32
35
|
allow(Dir).to receive(:mkdir).with(config_dir)
|
33
36
|
allow(File).to receive(:write).with(config_path, anything)
|
@@ -52,7 +55,7 @@ RSpec.describe Airbrake::RemoteSettings do
|
|
52
55
|
sleep(0.2)
|
53
56
|
remote_settings.stop_polling
|
54
57
|
|
55
|
-
expect(
|
58
|
+
expect(stub).to have_been_requested.once
|
56
59
|
end
|
57
60
|
|
58
61
|
it "yields the config to the block twice" do
|
@@ -63,7 +66,7 @@ RSpec.describe Airbrake::RemoteSettings do
|
|
63
66
|
sleep(0.2)
|
64
67
|
remote_settings.stop_polling
|
65
68
|
|
66
|
-
expect(
|
69
|
+
expect(stub).to have_been_requested.once
|
67
70
|
end
|
68
71
|
|
69
72
|
context "when config loading fails" do
|
@@ -77,7 +80,7 @@ RSpec.describe Airbrake::RemoteSettings do
|
|
77
80
|
sleep(0.2)
|
78
81
|
remote_settings.stop_polling
|
79
82
|
|
80
|
-
expect(
|
83
|
+
expect(stub).to have_been_requested.once
|
81
84
|
end
|
82
85
|
end
|
83
86
|
end
|
@@ -88,7 +91,18 @@ RSpec.describe Airbrake::RemoteSettings do
|
|
88
91
|
sleep(0.1)
|
89
92
|
remote_settings.stop_polling
|
90
93
|
|
91
|
-
expect(
|
94
|
+
expect(stub).to have_been_requested.at_least_once
|
95
|
+
end
|
96
|
+
|
97
|
+
it "sends params about the environment with the request" do
|
98
|
+
remote_settings = described_class.poll(project_id) {}
|
99
|
+
sleep(0.1)
|
100
|
+
remote_settings.stop_polling
|
101
|
+
|
102
|
+
stub_with_query_params = stub.with(
|
103
|
+
query: URI.decode_www_form(described_class::QUERY_PARAMS).to_h,
|
104
|
+
)
|
105
|
+
expect(stub_with_query_params).to have_been_requested.at_least_once
|
92
106
|
end
|
93
107
|
|
94
108
|
it "fetches remote settings" do
|
@@ -118,7 +132,7 @@ RSpec.describe Airbrake::RemoteSettings do
|
|
118
132
|
sleep(0.1)
|
119
133
|
remote_settings.stop_polling
|
120
134
|
|
121
|
-
expect(
|
135
|
+
expect(stub).not_to have_been_requested
|
122
136
|
expect(settings.interval).to eq(600)
|
123
137
|
end
|
124
138
|
end
|
@@ -136,14 +150,15 @@ RSpec.describe Airbrake::RemoteSettings do
|
|
136
150
|
sleep(0.1)
|
137
151
|
remote_settings.stop_polling
|
138
152
|
|
139
|
-
expect(
|
153
|
+
expect(stub).to have_been_requested.once
|
140
154
|
expect(settings.interval).to eq(600)
|
141
155
|
end
|
142
156
|
end
|
143
157
|
|
144
158
|
context "when API returns an XML response" do
|
145
|
-
|
146
|
-
stub_request(:get,
|
159
|
+
let!(:stub) do
|
160
|
+
stub_request(:get, Regexp.new(endpoint))
|
161
|
+
.to_return(status: 200, body: '<?xml ...')
|
147
162
|
end
|
148
163
|
|
149
164
|
it "doesn't update settings data" do
|
@@ -154,20 +169,23 @@ RSpec.describe Airbrake::RemoteSettings do
|
|
154
169
|
sleep(0.1)
|
155
170
|
remote_settings.stop_polling
|
156
171
|
|
157
|
-
expect(
|
172
|
+
expect(stub).to have_been_requested.once
|
158
173
|
expect(settings.interval).to eq(600)
|
159
174
|
end
|
160
175
|
end
|
161
176
|
|
162
177
|
context "when a config route is specified in the returned data" do
|
163
|
-
let(:new_endpoint)
|
178
|
+
let(:new_endpoint) do
|
179
|
+
"http://example.com"
|
180
|
+
end
|
164
181
|
|
165
182
|
let(:body) do
|
166
183
|
{ 'config_route' => new_endpoint, 'poll_sec' => 0.1 }
|
167
184
|
end
|
168
185
|
|
169
|
-
|
170
|
-
stub_request(:get,
|
186
|
+
let!(:new_stub) do
|
187
|
+
stub_request(:get, Regexp.new(new_endpoint))
|
188
|
+
.to_return(status: 200, body: body.to_json)
|
171
189
|
end
|
172
190
|
|
173
191
|
it "makes the next request to the specified config route" do
|
@@ -176,8 +194,8 @@ RSpec.describe Airbrake::RemoteSettings do
|
|
176
194
|
|
177
195
|
remote_settings.stop_polling
|
178
196
|
|
179
|
-
expect(
|
180
|
-
expect(
|
197
|
+
expect(stub).to have_been_requested.once
|
198
|
+
expect(new_stub).to have_been_requested.once
|
181
199
|
end
|
182
200
|
end
|
183
201
|
end
|
@@ -191,7 +209,7 @@ RSpec.describe Airbrake::RemoteSettings do
|
|
191
209
|
sleep(0.2)
|
192
210
|
remote_settings.stop_polling
|
193
211
|
|
194
|
-
expect(
|
212
|
+
expect(stub).to have_been_requested.once
|
195
213
|
end
|
196
214
|
|
197
215
|
context "when config dumping fails" do
|
@@ -205,7 +223,7 @@ RSpec.describe Airbrake::RemoteSettings do
|
|
205
223
|
sleep(0.2)
|
206
224
|
remote_settings.stop_polling
|
207
225
|
|
208
|
-
expect(
|
226
|
+
expect(stub).to have_been_requested.once
|
209
227
|
end
|
210
228
|
end
|
211
229
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: airbrake-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.0.rc.
|
4
|
+
version: 5.0.0.rc.2
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Airbrake Technologies, Inc.
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07-
|
11
|
+
date: 2020-07-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rbtree-jruby
|
@@ -152,7 +152,7 @@ homepage: https://airbrake.io
|
|
152
152
|
licenses:
|
153
153
|
- MIT
|
154
154
|
metadata: {}
|
155
|
-
post_install_message:
|
155
|
+
post_install_message:
|
156
156
|
rdoc_options: []
|
157
157
|
require_paths:
|
158
158
|
- lib
|
@@ -168,7 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
168
|
version: 1.3.1
|
169
169
|
requirements: []
|
170
170
|
rubygems_version: 3.1.2
|
171
|
-
signing_key:
|
171
|
+
signing_key:
|
172
172
|
specification_version: 4
|
173
173
|
summary: Ruby notifier for https://airbrake.io
|
174
174
|
test_files:
|