diff options
author | Dante Catalfamo | 2023-04-28 00:59:21 -0400 |
---|---|---|
committer | Dante Catalfamo | 2023-04-28 00:59:21 -0400 |
commit | 39fd51842d75a34c2936810dacad7b8eb8f55ac9 (patch) | |
tree | 2a90e38f1f5dc23ed93ee67c83c859eb17ebf6d8 /content/posts/lesser-known-irb-features/index.org | |
parent | 5859df4f8147d4a53823d45dfb2157118b709088 (diff) | |
download | blog-39fd51842d75a34c2936810dacad7b8eb8f55ac9.tar.gz blog-39fd51842d75a34c2936810dacad7b8eb8f55ac9.tar.bz2 blog-39fd51842d75a34c2936810dacad7b8eb8f55ac9.zip |
lesser-known-irb: Add post
Diffstat (limited to 'content/posts/lesser-known-irb-features/index.org')
-rw-r--r-- | content/posts/lesser-known-irb-features/index.org | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/content/posts/lesser-known-irb-features/index.org b/content/posts/lesser-known-irb-features/index.org new file mode 100644 index 0000000..0753ae7 --- /dev/null +++ b/content/posts/lesser-known-irb-features/index.org @@ -0,0 +1,52 @@ +#+TITLE: Lesser Known IRB Features +#+DATE: 2023-04-28T00:22:54-04:00 +#+DRAFT: true +#+DESCRIPTION: Going over some of my favourite lesser known IRB features +#+TAGS[]: ruby +#+KEYWORDS[]: ruby +#+SLUG: +#+SUMMARY: + +While poking around in IRB and looking at the autocompletion results, +I found some functions that I didn't recognize and decided to take a +look at what they do. I found some pretty interesting stuff. + +It looks like some of these commands have been added recently to come +up to par with =pry=, and others have been kicking around for a while +and just flying under the radar. + +You can find them all defined in [[https://github.com/ruby/irb/blob/master/lib/irb/extend-command.rb][this file]] in the IRB source code. + +- IRB workspaces + - The terms workspace/binding/context are used interchangeably + - For some reason these methods have an excessive amount of aliases + - =pushb <obj>=, =pushws=, =irb_push_workspace=, =irb_push_binding= + change the current context (binding) to whatever object you + pass as arg. It pushes your binding onto the =workspaces= stack. + - =popb=, =popws=, =irb_pop_workspace=, =irb_push_binding= pop your + current workspace off the stack and take you out and bring you to + your previous binding environment. + - =cb [obj]=, =cws=, =chwd=, =irb_cb=, =irb_cws=, =irb_chws=, + =irb_change_binding= change the current context without pushing + the current context onto the stack, and change to the default + context when called without an argument. +- Examining object internals + - =ls [obj]= lists the contents of an object (methods, inherited + methods, instance variables, etc.) +- Switching between multiple IRB sessions (sub-IRBs) + - Running =irb= creates a sub-IRB. + - =jobs= lists existing sub-IRBs + - =fg <num>= lets you change sub-IRB + - =kill <num>= kills the given sub-IRB +- Find the source code for a method or constant + - =show_source <obj/method>= Displays the file path a method or + object was defined in, and prints its contents +- Read documentation + - =show_doc [method]= Either opens the documentation for the + constant or method provided as an argument, or opens an RI + documentation prompt of no argument is given. +- Show the current line + - =whereami= lists the current line of execution of the binding. + This is useful if you open IRB from =binding.irb= or =binding.b= +- List internal IRB commands + - =show_cmds= lists most of these commands inside of IRB :) |