diff --git a/lib/prometheus/client/gauge.rb b/lib/prometheus/client/gauge.rb index f7990427..f2542ad4 100644 --- a/lib/prometheus/client/gauge.rb +++ b/lib/prometheus/client/gauge.rb @@ -13,6 +13,10 @@ def type # Sets the value for the given label set def set(labels, value) + unless value.is_a?(Numeric) + raise ArgumentError, 'value must be a number' + end + @values[label_set_for(labels)] = value end end diff --git a/spec/prometheus/client/gauge_spec.rb b/spec/prometheus/client/gauge_spec.rb index 9f2381f4..665d9fe9 100644 --- a/spec/prometheus/client/gauge_spec.rb +++ b/spec/prometheus/client/gauge_spec.rb @@ -24,5 +24,13 @@ end.to change { gauge.get(test: 'value') }.from(nil).to(42) end.to_not change { gauge.get } end + + context 'given an invalid value' do + it 'raises an ArgumentError' do + expect do + gauge.set({}, nil) + end.to raise_exception(ArgumentError) + end + end end end