Skip to content

Commit e6fa668

Browse files
author
oxcom
committed
fix: configuration *_sample_rates
1 parent ce5bb7f commit e6fa668

File tree

13 files changed

+158
-99
lines changed

13 files changed

+158
-99
lines changed

DependencyInjection/Configuration.php

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ class Configuration implements ConfigurationInterface
2424
const ENVIRONMENT = 'production';
2525
const TIMEOUT = 3;
2626

27+
const API_ENDPOINT = 'https://api.rollbar.com/api/1/';
28+
2729
const JS_ITEMS_PER_MINUTE = 60;
2830
const JS_MAX_ITEMS = 0;
2931
const JS_UNCAUGHT_LEVEL = "error";
@@ -80,8 +82,8 @@ public function getConfigTreeBuilder()
8082
->defaultValue('%kernel.logs_dir%/rollbar.log')
8183
->end()
8284
->booleanNode('allow_exec')->defaultTrue()->end()
83-
->scalarNode('endpoint')->defaultValue('https://api.rollbar.com/api/1/')->end()
84-
->scalarNode('base_api_url')->defaultValue('https://api.rollbar.com/api/1/')->end()
85+
->scalarNode('endpoint')->defaultValue(static::API_ENDPOINT)->end()
86+
->scalarNode('base_api_url')->defaultValue(static::API_ENDPOINT)->end()
8587
->scalarNode('branch')->defaultValue(static::BRANCH)->end()
8688
->booleanNode('capture_error_stacktraces')->defaultTrue()->end()
8789
->scalarNode('checkIgnore')->defaultNull()->end()
@@ -100,7 +102,26 @@ public function getConfigTreeBuilder()
100102
->end()
101103
->arrayNode('exception_sample_rates')
102104
->treatNullLike([])
103-
->prototype('scalar')->end()
105+
->beforeNormalization()
106+
->always(function($values) {
107+
$result = [];
108+
109+
foreach ($values as $value) {
110+
foreach ($value as $class => $rate) {
111+
$result[] = ['class' => $class, 'rate' => $rate];
112+
}
113+
}
114+
115+
return $result;
116+
})
117+
->end()
118+
->useAttributeAsKey('class')
119+
->arrayPrototype()
120+
->children()
121+
->scalarNode('class')->end()
122+
->floatNode('rate')->end()
123+
->end()
124+
->end()
104125
->defaultValue([])
105126
->end()
106127
->scalarNode('fluent_host')->defaultValue(static::FLUENT_HOST)->end()

Provider/RollbarHandler.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@ protected function initialize()
9696

9797
$kernel = $this->container->get('kernel');
9898
$rConfig = $config['rollbar'];
99+
100+
// override specific values
99101
$override = [
100102
'root' => $kernel->getRootDir(),
101103
'framework' => 'Symfony ' . \Symfony\Component\HttpKernel\Kernel::VERSION,
@@ -105,6 +107,7 @@ protected function initialize()
105107
$rConfig[$key] = $value;
106108
}
107109

110+
// inject services
108111
foreach ($this->injectServices as $option => $method) {
109112
if (empty($rConfig[$option])) {
110113
continue;
@@ -113,6 +116,21 @@ protected function initialize()
113116
$rConfig[$option] = $this->injectService($rConfig[$option], $method);
114117
}
115118

119+
// map rates fields
120+
$map = [
121+
'exception_sample_rates',
122+
'error_sample_rates',
123+
];
124+
125+
foreach ($map as $key) {
126+
$rConfig[$key] = \array_map(function($data) {
127+
return empty($data['rate']) ? null : $data['rate'];
128+
}, $rConfig[$key]);
129+
130+
// drop empty values
131+
$rConfig[$key] = \array_filter($rConfig[$key]);
132+
}
133+
116134
$this->exclude = empty($config['exclude']) ? [] : $config['exclude'];
117135

118136
return $rConfig;
Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
11
imports:
2-
- { resource: config.yml }
3-
- { resource: parameters.yml }
2+
- { resource: config.yml }
3+
- { resource: parameters.yml }
44

55
symfony_rollbar:
6-
enable: true
7-
exclude:
8-
- \Symfony\Component\Debug\Exception\FatalErrorException
9-
- \SymfonyRollbarBundle\Tests\Fixtures\MyAwesomeException
10-
- \ParseError
11-
- \Symfony\Component\HttpKernel\Exception\HttpExceptionInterface
12-
rollbar:
13-
access_token: 'SOME_ROLLBAR_ACCESS_TOKEN_123456'
14-
environment: '%kernel.environment%'
15-
person_fn: \SymfonyRollbarBundle\Tests\Fixtures\PersonProvider
16-
checkIgnore: \SymfonyRollbarBundle\Tests\Fixtures\CheckIgnoreProvider
6+
enable: true
7+
exclude:
8+
- \Symfony\Component\Debug\Exception\FatalErrorException
9+
- \SymfonyRollbarBundle\Tests\Fixtures\MyAwesomeException
10+
- \ParseError
11+
- \Symfony\Component\HttpKernel\Exception\HttpExceptionInterface
12+
rollbar:
13+
access_token: 'SOME_ROLLBAR_ACCESS_TOKEN_123456'
14+
environment: '%kernel.environment%'
15+
person_fn: \SymfonyRollbarBundle\Tests\Fixtures\PersonProvider
16+
checkIgnore: \SymfonyRollbarBundle\Tests\Fixtures\CheckIgnoreProvider
17+
exception_sample_rates:
18+
- \Symfony\Component\Security\Core\Exception\AccessDeniedException: 0.1
19+
- \Symfony\Component\HttpKernel\Exception\NotFoundHttpException: 0.5
20+
- \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException: 0.5
21+
- \Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException: 1
1722

18-
rollbar_js:
19-
accessToken: 'SOME_ROLLBAR_ACCESS_TOKEN_654321'
20-
payload:
21-
environment: '%kernel.environment%'
23+
rollbar_js:
24+
accessToken: 'SOME_ROLLBAR_ACCESS_TOKEN_654321'
25+
payload:
26+
environment: '%kernel.environment%'
Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
imports:
2-
- { resource: config.yml }
3-
- { resource: parameters.yml }
2+
- { resource: config.yml }
3+
- { resource: parameters.yml }
44

55
symfony_rollbar:
6-
enable: false
7-
exclude:
8-
- \Symfony\Component\Debug\Exception\FatalErrorException
9-
- \SymfonyRollbarBundle\Tests\Fixtures\MyAwesomeException
10-
- \ParseError
11-
rollbar:
12-
access_token: 'SOME_ROLLBAR_ACCESS_TOKEN_123456'
13-
environment: '%kernel.environment%'
6+
enable: false
7+
exclude:
8+
- \Symfony\Component\Debug\Exception\FatalErrorException
9+
- \SymfonyRollbarBundle\Tests\Fixtures\MyAwesomeException
10+
- \ParseError
11+
rollbar:
12+
access_token: 'SOME_ROLLBAR_ACCESS_TOKEN_123456'
13+
environment: '%kernel.environment%'
1414

15-
rollbar_js:
16-
accessToken: 'SOME_ROLLBAR_ACCESS_TOKEN_654321'
17-
payload:
18-
environment: '%kernel.environment%'
15+
rollbar_js:
16+
accessToken: 'SOME_ROLLBAR_ACCESS_TOKEN_654321'
17+
payload:
18+
environment: '%kernel.environment%'
Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
imports:
2-
- { resource: config.yml }
3-
- { resource: parameters.yml }
2+
- { resource: config.yml }
3+
- { resource: parameters.yml }
44

55
symfony_rollbar:
6-
enable: true
7-
exclude:
8-
- \Symfony\Component\Debug\Exception\FatalErrorException
9-
- \SymfonyRollbarBundle\Tests\Fixtures\MyAwesomeException
10-
- \ParseError
11-
rollbar:
12-
access_token: 'SOME_ROLLBAR_ACCESS_TOKEN_123456'
13-
environment: '%kernel.environment%'
6+
enable: true
7+
exclude:
8+
- \Symfony\Component\Debug\Exception\FatalErrorException
9+
- \SymfonyRollbarBundle\Tests\Fixtures\MyAwesomeException
10+
- \ParseError
11+
rollbar:
12+
access_token: 'SOME_ROLLBAR_ACCESS_TOKEN_123456'
13+
environment: '%kernel.environment%'
1414

15-
rollbar_js:
16-
enabled: false
17-
accessToken: 'SOME_ROLLBAR_ACCESS_TOKEN_654321'
18-
payload:
19-
environment: '%kernel.environment%'
15+
rollbar_js:
16+
enabled: false
17+
accessToken: 'SOME_ROLLBAR_ACCESS_TOKEN_654321'
18+
payload:
19+
environment: '%kernel.environment%'
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
imports:
2-
- { resource: config.yml }
3-
- { resource: parameters.yml }
2+
- { resource: config.yml }
3+
- { resource: parameters.yml }
Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
imports:
2-
- { resource: config.yml }
3-
- { resource: parameters.yml }
2+
- { resource: config.yml }
3+
- { resource: parameters.yml }
44

55
symfony_rollbar:
6-
enable: true
7-
exclude:
8-
- \Symfony\Component\Debug\Exception\FatalErrorException
9-
- \SymfonyRollbarBundle\Tests\Fixtures\MyAwesomeException
10-
- \ParseError
11-
rollbar:
12-
access_token: 'SOME_ROLLBAR_ACCESS_TOKEN_123456'
13-
environment: '%kernel.environment%'
14-
person_fn: "get_awesome_person"
15-
checkIgnore: "should_ignore"
6+
enable: true
7+
exclude:
8+
- \Symfony\Component\Debug\Exception\FatalErrorException
9+
- \SymfonyRollbarBundle\Tests\Fixtures\MyAwesomeException
10+
- \ParseError
11+
rollbar:
12+
access_token: 'SOME_ROLLBAR_ACCESS_TOKEN_123456'
13+
environment: '%kernel.environment%'
14+
person_fn: "get_awesome_person"
15+
checkIgnore: "should_ignore"
1616

17-
rollbar_js:
18-
accessToken: 'SOME_ROLLBAR_ACCESS_TOKEN_654321'
19-
payload:
20-
environment: '%kernel.environment%'
17+
rollbar_js:
18+
accessToken: 'SOME_ROLLBAR_ACCESS_TOKEN_654321'
19+
payload:
20+
environment: '%kernel.environment%'
Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
imports:
2-
- { resource: config.yml }
3-
- { resource: parameters.yml }
4-
- { resource: services.yml }
2+
- { resource: config.yml }
3+
- { resource: parameters.yml }
4+
- { resource: services.yml }
55

66
symfony_rollbar:
7-
enable: true
8-
exclude:
9-
- \Symfony\Component\Debug\Exception\FatalErrorException
10-
- \SymfonyRollbarBundle\Tests\Fixtures\MyAwesomeException
11-
- \ParseError
12-
rollbar:
13-
access_token: 'SOME_ROLLBAR_ACCESS_TOKEN_123456'
14-
environment: '%kernel.environment%'
15-
person_fn: "symfony_rollbar.fixture.person_provider"
16-
checkIgnore: "symfony_rollbar.fixture.check_ignore_provider"
7+
enable: true
8+
exclude:
9+
- \Symfony\Component\Debug\Exception\FatalErrorException
10+
- \SymfonyRollbarBundle\Tests\Fixtures\MyAwesomeException
11+
- \ParseError
12+
rollbar:
13+
access_token: 'SOME_ROLLBAR_ACCESS_TOKEN_123456'
14+
environment: '%kernel.environment%'
15+
person_fn: "symfony_rollbar.fixture.person_provider"
16+
checkIgnore: "symfony_rollbar.fixture.check_ignore_provider"
1717

18-
rollbar_js:
19-
accessToken: 'SOME_ROLLBAR_ACCESS_TOKEN_654321'
20-
payload:
21-
environment: '%kernel.environment%'
18+
rollbar_js:
19+
accessToken: 'SOME_ROLLBAR_ACCESS_TOKEN_654321'
20+
payload:
21+
environment: '%kernel.environment%'
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
parameters:
2-
secret: 5f2efe3d7d15dfab2354cacfaf928a7e72d72d42
2+
secret: 5f2efe3d7d15dfab2354cacfaf928a7e72d72d42
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
parameters:
2-
symfony_rollbar.fixture.person_provider.class: \SymfonyRollbarBundle\Tests\Fixtures\PersonProvider
3-
symfony_rollbar.fixture.check_ignore_provider.class: \SymfonyRollbarBundle\Tests\Fixtures\CheckIgnoreProvider
2+
symfony_rollbar.fixture.person_provider.class: \SymfonyRollbarBundle\Tests\Fixtures\PersonProvider
3+
symfony_rollbar.fixture.check_ignore_provider.class: \SymfonyRollbarBundle\Tests\Fixtures\CheckIgnoreProvider
44

55
services:
6-
symfony_rollbar.fixture.person_provider:
7-
class: "%symfony_rollbar.fixture.person_provider.class%"
8-
public: true
9-
arguments: ["@service_container"]
6+
symfony_rollbar.fixture.person_provider:
7+
class: "%symfony_rollbar.fixture.person_provider.class%"
8+
public: true
9+
arguments: ["@service_container"]
1010

11-
symfony_rollbar.fixture.check_ignore_provider:
12-
class: "%symfony_rollbar.fixture.check_ignore_provider.class%"
13-
public: true
11+
symfony_rollbar.fixture.check_ignore_provider:
12+
class: "%symfony_rollbar.fixture.check_ignore_provider.class%"
13+
public: true

0 commit comments

Comments
 (0)