module Sinatra::Silent::ClassMethods

Public Instance Methods

set(option, value = (not_set = true), ignore_setter = false, &block) click to toggle source
Calls superclass method
# File lib/sinatra/silent.rb, line 11
def set(option, value = (not_set = true), ignore_setter = false, &block)
  return if option == {}

  case option
  when :silent_all
    set :silent_sinatra, true
    set :silent_webrick, true
    set :silent_access_log, true
  when :silent_access_log
    new_server_settings = if value == true
      existing_server_settings.merge(AccessLog: [])
    else
      existing_server_settings.tap { |hash| hash.delete(:AccessLog) }
    end

    super :server_settings, new_server_settings
  when :silent_sinatra
    case value
    when true
      self.define_singleton_method :suppress_messages? do
        return true
      end
    when false
      self.define_singleton_method :suppress_messages? do
        handler_name =~ /cgi/i || quiet
      end
    end
  when :silent_webrick
    new_server_settings = if value == true
      existing_server_settings.merge(Logger: SilentLogger.new)
    else
      existing_server_settings.tap { |hash| hash.delete(:Logger) }
    end

    super :server_settings, new_server_settings
  else
    super option, value, ignore_setter, &block
  end
end

Private Instance Methods

existing_server_settings() click to toggle source
# File lib/sinatra/silent.rb, line 53
def existing_server_settings
  return {} unless self.settings.respond_to? :server_settings
  self.settings.server_settings
end