Add metric initializer spec
An empty file in one of the instrumented directories will cause the app to fail to start when metrics are enabled. Metrics aren't enabled by default in development or test.
We could handle the empty file case explicitly, but a file could still not define the constant it is expected to, so instead run the initializer manually in a spec and check that it succeeds.
$ bundle exec rspec spec/initializers/metrics_spec.rb
1/1 |============================== 100 ==============================>| Time: 00:00:15
Finished in 15.08 seconds (files took 13.48 seconds to load)
1 example, 0 failures
$ touch app/services/merge_requests/foo_service.rb
$ bundle exec rspec spec/initializers/metrics_spec.rb
1) configure_metrics can set up metrics on all files
Failure/Error: expect { configure_metrics }.not_to raise_error
expected no Exception, got #<LoadError: Unable to autoload constant MergeRequests::FooService, expected /Users/seanmcgivern/Code/gitlab-development-kit/gitlab/app/services/merge_requests/foo_service.rb to define it> with backtrace:
# ./config/initializers/metrics.rb:81:in `block (3 levels) in configure_metrics'
# ./config/initializers/metrics.rb:79:in `each'
# ./config/initializers/metrics.rb:79:in `block (2 levels) in configure_metrics'
# ./config/initializers/metrics.rb:76:in `each'
# ./config/initializers/metrics.rb:76:in `block in configure_metrics'
# ./lib/gitlab/metrics/instrumentation.rb:15:in `configure'
# ./config/initializers/metrics.rb:51:in `configure_metrics'
# ./spec/initializers/metrics_spec.rb:14:in `block (3 levels) in <top (required)>'
# ./spec/initializers/metrics_spec.rb:14:in `block (2 levels) in <top (required)>'
# ./spec/initializers/metrics_spec.rb:14:in `block (2 levels) in <top (required)>'
1/1 |============================== 100 ==============================>| Time: 00:00:15
Finished in 15.33 seconds (files took 13.82 seconds to load)
1 example, 1 failure
Failed examples:
rspec ./spec/initializers/metrics_spec.rb:13 # configure_metrics can set up metrics on all files