Sha256: d9c117b07f5e1d66fbeb00efd6776eab5e45228f1151977fa271a795928f9af2
Contents?: true
Size: 1.64 KB
Versions: 2
Compression:
Stored size: 1.64 KB
Contents
require 'graphql/rails_logger/configuration' require 'action_controller/log_subscriber' require 'rouge' module GraphQL module RailsLogger class << self attr_accessor :configuration end def self.configuration @configuration ||= Configuration.new end def self.configure yield(configuration) end class Subscriber < ActionController::LogSubscriber def start_processing(event) return unless logger.info? payload = event.payload params = payload[:params].except(*INTERNAL_PARAMS) format = payload[:format] format = format.to_s.upcase if format.is_a?(Symbol) config = GraphQL::RailsLogger.configuration info "Processing by #{payload[:controller]}##{payload[:action]} as #{format}" if config.white_list.fetch(payload[:controller], []).include?(payload[:action]) formatter = Rouge::Formatters::Terminal256.new(config.theme) query_lexer = Rouge::Lexers::GraphQL.new variables_lexer = Rouge::Lexers::Ruby.new (params['_json'] || [params.slice('query', 'variables')]).each do |data| next if config.skip_introspection_query && data['query'].index(/query IntrospectionQuery/) query = data['query'].lines.map { |line| " #{line}" }.join.chomp # add indentation variables = PP.pp(data['variables'] || {}, '') info " Variables: #{formatter.format(variables_lexer.lex(variables))}" info formatter.format(query_lexer.lex(query)) end else info " Parameters: #{params.inspect}" unless params.empty? end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
graphql-rails_logger-1.2.1 | lib/graphql/rails_logger/subscriber.rb |
graphql-rails_logger-1.2.0 | lib/graphql/rails_logger/subscriber.rb |