Sha256: c641b765b9f0e4c3b10a70ef3f5a6bda5cd6b8cd99e4af812cd3114481bfbee2

Contents?: true

Size: 695 Bytes

Versions: 2

Compression:

Stored size: 695 Bytes

Contents

module Tailog
  class Eval
    class << self
      attr_accessor :blacklist
    end

    self.blacklist = %w(/tailog)

    def initialize app
      @app = app
    end

    def call env
      if skip_call? env
        @app.call(env)
      else
        before = env["HTTP_TAILOG_EVAL_BEFORE"].presence
        after = env["HTTP_TAILOG_EVAL_AFTER"].presence

        binding = Object.new.send(:binding)
        binding.eval before if before
        response = @app.call(env)
        binding.eval after if after

        response
      end
    end

    private

    def skip_call? env
      Tailog::Eval.blacklist.any? do |path|
        env["PATH_INFO"].start_with? path
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tailog-0.4.3 lib/tailog/eval.rb
tailog-0.4.2 lib/tailog/eval.rb