# module Byebug::EvalFunctions

Utilities used by the eval command

### Public Instance Methods

allowing_other_threads() { || ... } click to toggle source

Run block temporarily ignoring all TracePoint events.

Used to evaluate stuff within Byebug's prompt. Otherwise, any code creating new threads won't be properly evaluated because new threads will get blocked by byebug's main thread.

    # File lib/byebug/commands/eval.rb, line 18
    def allowing_other_threads
      Byebug.unlock
      res = yield
      Byebug.lock
      res
    end

eval_with_setting(binding, expression, stack_on_error) click to toggle source

Evaluate `expression` using `binding`

@param binding [Binding] Context where to evaluate the expression @param expression [String] Expression to evaluation @param stack_on_error [Boolean] Whether to show a stack trace on error.

    # File lib/byebug/commands/eval.rb, line 40
    def eval_with_setting(binding, expression, stack_on_error)
      allowing_other_threads do
        if stack_on_error
          bb_eval(expression, binding)
        else
          bb_warning_eval(expression, binding)
        end
      end
    end

run_with_binding() { |binding| ... } click to toggle source

Get current binding and yield it to the given block

    # File lib/byebug/commands/eval.rb, line 28
    def run_with_binding
      binding = get_binding
      yield binding
    end