Module: Peek

Defined in:
lib/peek.rb,
lib/peek/railtie.rb,
lib/peek/version.rb,
lib/peek/views/view.rb,
lib/peek/adapters/base.rb,
lib/peek/adapters/redis.rb,
lib/peek/adapters/memory.rb,
lib/peek/adapters/memcache.rb,
lib/peek/controller_helpers.rb,
lib/peek/adapters/elasticsearch.rb,
app/controllers/peek/results_controller.rb

Defined Under Namespace

Modules: Adapters, ControllerHelpers, Views Classes: Railtie, ResultsController

Constant Summary collapse

ALLOWED_ENVS =
['development', 'staging'].freeze
VERSION =
'1.0.1'

Class Method Summary collapse

Class Method Details

._request_idObject



11
12
13
# File 'lib/peek.rb', line 11

def self._request_id
  @_request_id ||= Concurrent::AtomicReference.new
end

.adapterObject



23
24
25
# File 'lib/peek.rb', line 23

def self.adapter
  @adapter
end

.adapter=(*adapter_options) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/peek.rb', line 27

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

.clearObject

Hook that happens after every request. It is expected to reset any state that Peek managed throughout the requests lifecycle.

Returns nothing.



103
104
105
# File 'lib/peek.rb', line 103

def self.clear
  _request_id.update { '' }
end

.enabled?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/peek.rb', line 51

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

.envObject



55
56
57
# File 'lib/peek.rb', line 55

def self.env
  Rails.env
end

.into(klass, options = {}) ⇒ Object



86
87
88
89
# File 'lib/peek.rb', line 86

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

.request_idObject



15
16
17
# File 'lib/peek.rb', line 15

def self.request_id
  _request_id.get
end

.request_id=(id) ⇒ Object



19
20
21
# File 'lib/peek.rb', line 19

def self.request_id=(id)
  _request_id.update { id }
end

.resetObject

Clears out any and all views.

Returns nothing.



94
95
96
97
# File 'lib/peek.rb', line 94

def self.reset
  @views = nil
  @cached_views = nil
end

.resultsObject



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/peek.rb', line 67

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

.setupObject



107
108
109
# File 'lib/peek.rb', line 107

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

.viewsObject



59
60
61
62
63
64
65
# File 'lib/peek.rb', line 59

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