class ActionSubscriber::Configuration
Constants
- CONFIGURATION_MUTEX
- DEFAULTS
- NETWORK_RECOVERY_INTERVAL
Attributes
allow_low_priority_methods[RW]
connection_reaping_interval[RW]
connection_reaping_timeout_interval[RW]
decoder[RW]
default_exchange[RW]
error_handler[RW]
heartbeat[RW]
host[RW]
hosts[RW]
network_recovery_interval[RW]
password[RW]
port[RW]
prefetch[RW]
resubscribe_on_consumer_cancellation[RW]
seconds_to_wait_for_graceful_shutdown[RW]
threadpool_size[RW]
timeout[RW]
tls[RW]
tls_ca_certificates[RW]
tls_cert[RW]
tls_key[RW]
username[RW]
verify_peer[RW]
virtual_host[RW]
Public Class Methods
configure_from_yaml_and_cli(cli_options = {}, reload = false)
click to toggle source
Class Methods
# File lib/action_subscriber/configuration.rb, line 62 def self.configure_from_yaml_and_cli(cli_options = {}, reload = false) CONFIGURATION_MUTEX.synchronize do @configure_from_yaml_and_cli = nil if reload @configure_from_yaml_and_cli ||= begin env = ENV["RAILS_ENV"] || ENV["RACK_ENV"] || ENV["APP_ENV"] || "development" yaml_config = {} absolute_config_path = ::File.expand_path(::File.join("config", "action_subscriber.yml")) if ::File.exists?(absolute_config_path) erb_yaml = ::ERB.new(::File.read(absolute_config_path)).result # Defined in Psych 3.2+ and the new canonical way to load trusted documents: # https://github.com/ruby/psych/issues/533#issuecomment-1019363688 yaml_config = ::YAML.respond_to?(:unsafe_load) ? ::YAML.unsafe_load(erb_yaml)[env] : ::YAML.load(erb_yaml)[env] end ::ActionSubscriber::Configuration::DEFAULTS.each_pair do |key, value| exists, setting = fetch_config_value(key, cli_options, yaml_config) ::ActionSubscriber.config.__send__("#{key}=", setting) if exists end true end end end
new()
click to toggle source
Instance Methods
# File lib/action_subscriber/configuration.rb, line 99 def initialize self.decoder = { 'application/json' => lambda { |payload| JSON.parse(payload) }, 'text/plain' => lambda { |payload| payload.dup } } self.error_handler = lambda do |error, env_hash| logger = ::ActionSubscriber::Logging.logger logger.error(error.message) logger.error(error.class.to_s) logger.error(error.backtrace.join("\n")) if error.try(:backtrace) && error.backtrace.is_a?(::Array) end DEFAULTS.each_pair do |key, value| self.__send__("#{key}=", value) end end
Private Class Methods
fetch_config_value(key, cli_options, yaml_config)
click to toggle source
# File lib/action_subscriber/configuration.rb, line 87 def self.fetch_config_value(key, cli_options, yaml_config) return [true, cli_options[key]] if cli_options.key?(key) return [true, cli_options[key.to_s]] if cli_options.key?(key.to_s) return [true, yaml_config[key]] if yaml_config.key?(key) return [true, yaml_config[key.to_s]] if yaml_config.key?(key.to_s) [false, nil] end
Public Instance Methods
add_decoder(decoders)
click to toggle source
Instance Methods
# File lib/action_subscriber/configuration.rb, line 121 def add_decoder(decoders) decoders.each_pair do |content_type, decoder| unless decoder.arity == 1 raise "ActionSubscriber decoders must have an arity of 1. The #{content_type} decoder was given with arity of #{decoder.arity}." end end self.decoder.merge!(decoders) end
connection_string=(url)
click to toggle source
# File lib/action_subscriber/configuration.rb, line 131 def connection_string=(url) settings = ::ActionSubscriber::URI.parse_amqp_url(url) settings.each do |key, value| send("#{key}=", value) end end
inspect()
click to toggle source
# File lib/action_subscriber/configuration.rb, line 147 def inspect inspection_string = <<-INSPECT.strip_heredoc Rabbit Hosts: #{hosts} Rabbit Port: #{port} Threadpool Size: #{threadpool_size} Low Priority Subscriber: #{allow_low_priority_methods} Decoders: INSPECT decoder.each_key { |key| inspection_string << " --#{key}\n" } return inspection_string end
middleware()
click to toggle source
# File lib/action_subscriber/configuration.rb, line 143 def middleware @middleware ||= Middleware.initialize_stack end