00:00:20.439
Hello everyone! Am I super loud or do I just talk really loudly? My name is John.
00:00:27.400
I wanted to share some tips and tricks about IRB. Doing live coding as a lightning talk is probably the worst idea ever, mainly because I type slowly, but please be patient!
00:00:32.640
I love IRB; it's been a huge part of my journey in learning Ruby. I think it's incredibly useful, and I've seen many other languages incorporate some cool things like TR Ruby for learning.
00:00:39.879
It was instrumental in my learning process, and there are a lot of cool patterns you can discover when you work with others. You can customize IRB more than people usually think, and you can do some really neat things in Rails console. I'm going to share some references in case I don’t finish.
00:00:45.559
It's super powerful and customizable. If I can't cover everything and you think IRB is weak just because I didn't finish, please look into it—there's really a lot you can do.
00:00:52.120
So let’s go over some simple things you can enhance. How many of you have customized your IRB to have autocomplete and history? I’d love to know where everyone's at.
00:00:59.520
For those of you who haven’t, you can set it up so you don’t have to type everything repeatedly. This makes it much smoother!
00:01:08.960
There are basic features like interpolation and much more that you can leverage to enhance your coding experience. I’ll show you some ways you can print things more efficiently.
00:01:17.080
You can just say `p` in IRB, or `y` for a different representation, which looks a bit different.
00:01:22.119
There's also `pp` for pretty print, which will display it in a more readable format, and you can also use ‘awesome print’ which adds color to your output.
00:01:27.680
This makes it particularly nice when you are trying to look things up quickly.
00:01:35.000
Now, about the history feature: when you hit the up arrow, you can access your previous commands.
00:01:41.360
For instance, if you have a number in the console, you can hit tab to see more available methods related to that object.
00:01:47.399
You can also inspect various methods; for example, you can query where a given method is defined. This can be incredibly helpful.
00:01:53.680
Additionally, you can check the parameters required for methods. This is particularly useful when navigating unfamiliar APIs.
00:02:01.840
Moving on, you have the ability to customize your IRB console through the `.irbrc` file, allowing for some personal flavor.
00:02:08.960
You can also modify settings in real-time. For example, if I type in a certain command, it loads up various components.
00:02:14.959
One of the settings is called `Echo`. When set to true, if I have a variable called `f`, it prints out its value. If `Echo` is set to false, it doesn't show the variable value when just typing the variable name.
00:02:22.120
Moreover, you can customize the prompt that IRB displays. For instance, I currently have one set with RVM details.
00:02:28.760
You have other prompt options like classic which simply shows the current line number.
00:02:33.920
There are also functionalities to indicate when you have unclosed blocks or quotes, which is really handy.
00:02:39.280
Another feature is the ability to auto-indent your code. For example, if I write a method, it can maintain proper indentation, making it easier to read.
00:02:46.959
You can call out to the system for various things, including configuration settings.
00:02:54.200
This allows you to create permanent settings without needing to repeatedly type them every time you start IRB.
00:03:02.879
In terms of organization, I try to set up an `.irbrc` file for specific projects as well as a global one to keep my customizations consistent, no matter the working directory.
00:03:09.600
When I start a new project, I can customize my IRB experience to be tailored for that particular project, which is pretty neat.
00:03:17.239
Sometimes when I'm developing, I want to know the best way to test something, like a regex or certain methods I'm not familiar with.
00:03:25.880
If I start writing a method and want to test it, there's a plugin that lets you use vi within IRB, which is incredibly useful.
00:03:33.239
This allows for a more interactive experience as you can make changes on the go while coding.
00:03:39.920
Now, this brings me to a project I was involved with that made it difficult for me to track changes across different versions of an API.
00:03:46.559
While working on production, I came up with a way to log relevant information without cluttering the console view.
00:03:54.200
For instance, if I have a method that queries a user, I sometimes want to see the actual query that's being made.
00:04:01.679
So I developed a method that allows for logging the necessary data, which helps me analyze operations more effectively.
00:04:09.440
Additionally, I incorporated methods for comparing the access version, which is useful when diagnosing issues with different environments.
00:04:17.000
For example, if I check the log and find that a certain user already exists, I can pull the record directly.
00:04:23.760
If I want to analyze whether this user was part of a certain group or their queries to a specific endpoint, I can log that too.
00:04:30.680
All these methods I’ve talked about can be customized according to personal preferences, which is part of what I love about Ruby.
00:04:38.000
So, in closing, I highly encourage everyone to explore IRB and customize it further to enhance their development experience.
00:04:46.640
I believe you'll find it quite rewarding, and it's a great way to improve your productivity.
00:04:53.600
If you have any questions, feel free to reach out. Thank you!