Top Level Namespace

Defined Under Namespace

Modules: Contrast, ERBPropagator, Funchook, Kernel Classes: Delegator, Hash, Module, Object, String, Thread

Constant Summary collapse

FUNCHOOK_DIR_NAME =
'funchook'
FUNCHOOK_DIR =
File.expand_path(File.join(File.dirname(File.expand_path(__FILE__)), '..', FUNCHOOK_DIR_NAME))
COMMANDS =
['./autogen.sh', './configure', 'make clean', 'make'].freeze
SOURCE_PATHS =
[
  File.join('include', 'funchook.h'),
  File.join('src', 'libfunchook.dylib'),
  File.join('src', 'libfunchook.so')
].freeze
TARGET_PATHS =
([
  File.expand_path(File.join(File.expand_path(__dir__), '..', 'shared_libraries')),
  File.expand_path(__dir__)
] + bundler_install_target_paths).freeze

Instance Method Summary collapse

Instance Method Details

#ext_pathObject



15
16
17
18
19
# File 'ext/extconf_common.rb', line 15

def ext_path
  # __dir__ is relative to the file you're reading.
  # this file you're reading is presently within $APP_ROOT/ext/.
  __dir__
end

#make!Object



11
12
13
# File 'ext/extconf_common.rb', line 11

def make!
  create_makefile "#{ name }/#{ name }"
end

#nameObject



7
8
9
# File 'ext/extconf_common.rb', line 7

def name
  $TO_MAKE
end

#protobufObject

This file is auto-generated. DO NOT EDIT!



6
# File 'lib/contrast/api/dtm.pb.rb', line 6

require 'protobuf'

#unbound_eval(_class_name, content) ⇒ Object

This method is left purposefully at the top level namespace. Moving it elsewhere will break functionality as it executes evaluations against the namespace from which it is called – ie putting it in Contrast would make all changes it intends for Foo happen to Contrast::Foo instead

Parameters:

  • _class_name (String)

    the name of the class in which the eval will redefine functionality

  • content (String)

    the String content that will function as the code in the given class



18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/contrast/agent/class_reopener.rb', line 18

def unbound_eval _class_name, content
  # Yuck, this is a top-level method that has to break encapsulation
  # in order to access scoping!
  Contrast::Components::Scope::COMPONENT_INTERFACE.scope_for_current_ec.enter_contrast_scope!
  eval(content) # rubocop:disable Security/Eval
rescue Exception # rubocop:disable Lint/RescueException
  # We can't use components here, so we have to access the log directly. I hate
  # it, but we'll have to deal with it until we remove 2.5 support.
  Contrast::Logger::Log.instance.logger.error('Unable to perform unbound eval of new content', module: class_name)
  # And we need to return nil here, not the value from the logger.
  nil
ensure
  Contrast::Components::Scope::COMPONENT_INTERFACE.scope_for_current_ec.exit_contrast_scope!
end