debugging
debugging copied to clipboard
Improve your Print Debugging
Ruby Print Debugging

Helps you to introspect and debug your code.
Setup
Install gem:
$ gem install debugging
In Ruby:
require 'debugging/all'
Instead of requiring all, you can also require only one function, e.g:
require 'debugging/q'
In a bundler project, you will need to add the gem to your project's Gemfile
:
gem 'debugging', require: 'debugging/all'
Methods
at(label = nil)
Prints out that a specific point in a script has been reached.
[label] @ method `...', line ... of file ....
beep
Lets your terminal bell ring.
callstack
Prints out your current callstack. For example:
<main>
start
catch
block in start
eval_input
each_top_level_statement
catch
block in each_top_level_statement
loop
block (2 levels) in each_top_level_statement
block in eval_input
signal_status
block (2 levels) in eval_input
evaluate
evaluate
eval
irb_binding
howtocall(obj = self, method_or_proc)
Displays parameter names and types for a proc or method (identified by a symbol):
def function(a, b = 3, &c)
end
howtocall :function #=> function(a, b, &c)
What is not visible in the example above: All optional parameters are displayed underlined.
If you want to access a function that is defined on an other object than the current one, you can pass it as an optional parameter:
howtocall FileUtils, :cd #=> cd(dir, options, &block)
howtocall Open3, :popen3 #=> popen3(*cmd, **opts, &block)
An example with lambdas and keyword arguments:
a = ->(filter: /\A.*\z/, string:){ string[filter] }
howtocall a #=> call(string:, filter:)
mof(obj, depth = nil)
"Methods of": Prints out available methods, ordered by modules:
mof [1,2,3]
###
Eigenclass
Array
inspect to_s to_a to_h to_ary frozen? == eql? hash [] []= at fet
ch first last concat << push pop shift unshift insert each each_i
ndex reverse_each length size empty? find_index index rindex join r
everse reverse! rotate rotate! sort sort! sort_by! collect collect!
map map! select select! keep_if values_at delete delete_at delete_i
f reject reject! zip transpose replace clear fill include? <=> sli
ce slice! assoc rassoc + * - & | uniq uniq! compact compact! fl
atten flatten! count shuffle! shuffle sample cycle permutation combi
nation repeated_permutation repeated_combination product take take_whil
e drop drop_while bsearch pack
Enumerable
to_a entries to_h sort sort_by grep count find detect find_index f
ind_all select reject collect map flat_map collect_concat inject red
uce partition group_by first all? any? one? none? min max minmax
min_by max_by minmax_by member? include? each_with_index reverse_each
each_entry each_slice each_cons each_with_object zip take take_while
drop drop_while cycle chunk slice_before lazy
Object
Debugging
Kernel
nil? === =~ !~ eql? hash <=> class singleton_class clone dup tain
t tainted? untaint untrust untrusted? trust freeze frozen? to_s ins
pect methods singleton_methods protected_methods private_methods public
_methods instance_variables instance_variable_get instance_variable_set
instance_variable_defined? remove_instance_variable instance_of? kind_of?
is_a? tap send public_send respond_to? extend display method publi
c_method singleton_method define_singleton_method object_id to_enum enu
m_for
BasicObject
== equal? ! != instance_eval instance_exec __send__ __id__
q(*args)
Like Kernel#p
, but with colors on one line:
q :is_like, ?p, "but on one line"
re(string, regex, groups = nil)
Assists you when matching regexes againts strings. Try this one:
re "[email protected]", /\b([A-Z0-9._%+-]+)@([A-Z0-9.-]+\.[A-Z]{2,10})\b/i, 0..2
J-_-L
Copyright (c) 2010-2021 Jan Lelis. MIT License. Originated from the zucker gem.