File: peek.rb

package info (click to toggle)
ruby-peek 1.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 352 kB
  • sloc: ruby: 534; makefile: 7; sh: 2
file content (93 lines) | stat: -rw-r--r-- 1,800 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
require 'peek/version'
require 'rails'

require 'peek/adapters/memory'
require 'peek/views/view'

module Peek
  ALLOWED_ENVS = ['development', 'staging'].freeze

  def self.adapter
    @adapter
  end

  def self.adapter=(*adapter_options)
    adapter, *parameters = *Array.wrap(adapter_options).flatten

    @adapter = case adapter
    when Symbol
      adapter_class_name = adapter.to_s.camelize
      adapter_class =
        begin
          require "peek/adapters/#{adapter}"
        rescue LoadError => e
          raise "Could not find adapter for #{adapter} (#{e})"
        else
          Peek::Adapters.const_get(adapter_class_name)
        end
      adapter_class.new(*parameters)
    when nil
      Peek::Adapters::Memory.new
    else
      adapter
    end

    @adapter
  end

  def self.enabled?
    ALLOWED_ENVS.include?(env)
  end

  def self.env
    Rails.env
  end

  def self.views
    @cached_views ||= if @views && @views.any?
      @views.collect { |klass, options| klass.new(options.dup) }.select(&:enabled?)
    else
      []
    end
  end

  def self.results
    results = {
      context: {},
      data: Hash.new { |h, k| h[k] = {} }
    }

    views.each do |view|
      if view.context?
        results[:context][view.key] = view.context
      end

      view.results.each do |key, value|
        results[:data][view.key][key] = value
      end
    end

    results
  end

  def self.into(klass, options = {})
    @views ||= []
    @views << [klass, options]
  end

  # Clears out any and all views.
  #
  # Returns nothing.
  def self.reset
    @views = nil
    @cached_views = nil
  end

  def self.setup
    ActiveSupport::Deprecation.warn "'Peek.setup' is deprecated and does nothing.", caller
  end
end

require 'peek/railtie'

ActiveSupport.run_load_hooks(:peek, Peek)