From b7d685867ed1163d6432f08c466d8213958e9c0c Mon Sep 17 00:00:00 2001 From: ydah Date: Mon, 10 Aug 2026 08:12:00 +0900 Subject: [PATCH] Fix server services option fallback --- lib/gruf/server.rb | 3 ++- spec/gruf/server_spec.rb | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/lib/gruf/server.rb b/lib/gruf/server.rb index 492d48e..3aca3b5 100644 --- a/lib/gruf/server.rb +++ b/lib/gruf/server.rb @@ -192,7 +192,8 @@ def clear_interceptors # @return [Array] # def services - @services ||= ::Gruf.services || (options.fetch(:services, nil) || []) + global_services = ::Gruf.services + @services ||= global_services&.any? ? global_services : options.fetch(:services, []) end ## diff --git a/spec/gruf/server_spec.rb b/spec/gruf/server_spec.rb index a28e951..b6a44b3 100644 --- a/spec/gruf/server_spec.rb +++ b/spec/gruf/server_spec.rb @@ -105,6 +105,30 @@ end end + describe '#services' do + subject { gruf_server.send(:services) } + + let(:options) { { services: [Rpc::ThingService::Service] } } + + context 'when no global services are configured' do + it 'uses services passed to the server' do + expect(subject).to eq options[:services] + end + end + + context 'when global services are configured' do + let(:global_services) { [Rpc::Test::Service1::Service] } + + before do + Gruf.services = global_services + end + + it 'uses global services instead of services passed to the server' do + expect(subject).to eq global_services + end + end + end + describe '#add_service' do subject { gruf_server.add_service(service) }