Background
MySQL and Redis supports static config, while NetHTTP and GRPC currently only Proc. e.g.
|
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 |
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
semian/lib/semian/net_http.rb
Lines 67 to 69 in 1d4b53b
semian/lib/semian/grpc.rb
Lines 48 to 50 in 1d4b53b
Problem
If pass a static config to NetHTTP and GRPC, semian is disabled because
retrieve_semian_configurationreturnsnil.Proposal
allow static config if it is not callable
Alternative
Add validation to
semian_configurationsetter, assert whether static config or Proc is expectedsemian/lib/semian/net_http.rb
Lines 61 to 64 in 1d4b53b