Skip to content

Feature: support static config for Semian::NetHTTP and Semian::GRPC #350

@jychen7

Description

@jychen7

Background

MySQL and Redis supports static config, while NetHTTP and GRPC currently only Proc. e.g.

semian/lib/semian/mysql2.rb

Lines 137 to 140 in 1d4b53b

def raw_semian_options
return query_options[:semian] if query_options.key?(:semian)
return query_options["semian"] if query_options.key?("semian")
end

def retrieve_semian_configuration(host, port)
@semian_configuration.call(host, port) if @semian_configuration.respond_to?(:call)
end

def retrieve_semian_configuration(host)
@semian_configuration.call(host) if @semian_configuration.respond_to?(:call)
end

Problem

If pass a static config to NetHTTP and GRPC, semian is disabled because retrieve_semian_configuration returns nil.

Proposal

allow static config if it is not callable

def retrieve_semian_configuration(host, port)
  return @semian_configuration unless @semian_configuration.respond_to?(:call) 

 @semian_configuration.call(host, port)
 end 

Alternative

Add validation to semian_configuration setter, assert whether static config or Proc is expected

def semian_configuration=(configuration)
raise Semian::NetHTTP::SemianConfigurationChangedError unless @semian_configuration.nil?
@semian_configuration = configuration

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions