Sha256: d2a72c6babb410f004ad4a9caa39ce39ebb5b87a8b77101185830aaf343ff52a
Contents?: true
Size: 1.4 KB
Versions: 1
Compression:
Stored size: 1.4 KB
Contents
module SemanticLogger::Utils def self.constantize_symbol(symbol, namespace = 'SemanticLogger::Appender') klass = "#{namespace}::#{camelize(symbol.to_s)}" begin if RUBY_VERSION.to_i >= 2 Object.const_get(klass) else klass.split('::').inject(Object) { |o, name| o.const_get(name) } end rescue NameError raise(ArgumentError, "Could not convert symbol: #{symbol.inspect} to a class in: #{namespace}. Looking for: #{klass}") end end # Borrow from Rails, when not running Rails def self.camelize(term) string = term.to_s string = string.sub(/^[a-z\d]*/) { |match| match.capitalize } string.gsub!(/(?:_|(\/))([a-z\d]*)/i) { "#{$1}#{$2.capitalize}" } string.gsub!('/'.freeze, '::'.freeze) string end # Returns the visibility for an instance method def self.method_visibility(mod, method_name) method_name = method_name.to_sym if mod.instance_methods.include?(method_name) :public elsif mod.private_instance_methods.include?(method_name) :private elsif mod.protected_instance_methods.include?(method_name) :protected end end SELF_PATTERN = File.join('lib', 'semantic_logger') # Extract the backtrace leaving out the last few Semantic Logger lines. def self.cleanse_backtrace(stack = caller) while (first = stack.first) && first.include?(SELF_PATTERN) stack.shift end stack end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
semantic_logger-4.2.0 | lib/semantic_logger/utils.rb |