00:00:15.040
All right, my name is Corey. I don't know if you can tell, but this is my first presentation. It's the first time I've ever done this in my life, so it's slightly terrifying.
00:00:30.400
I saw the commission on the MWRC website that said, 'Come hang with the smartest Rubies in the world.' I will be the first to tell you that I am definitely not one of those. I work at Saxonhorn Advertising, where we do advertising websites and other services for a bunch of car dealerships and fun things like that. I really love Ruby and the community. Mike and David were talking earlier about the community, and I wouldn't have the job that I have right now without the Utah Ruby review group. I don't know where I would be without all the fabulous people in the community.
00:01:15.280
But the most important thing you should know about me is that I have absolutely no idea what I'm doing. I've never done this before. As I was submitting the proposal and they accepted it, they told me they weren't sure if I would be able to cover 30 minutes. Yet, they still chose me.
00:01:46.799
So, what is Pry? Pry is a Ruby REPL. How many of you know what a REPL is? Okay, that’s not bad. When I first saw the screencast by Josh Cheek about Pry, he used that phrase 'REPL,' and I had no idea what it was, so I was a little confused. Basically, it stands for Read, Evaluate, Print, and Loop. It's a three-step loop of read, evaluate, and print. For example, we have IRB, which is one of those REPLs.
00:03:14.000
CoffeeScript also has one; if you run it without arguments, it turns into a little console. PHP has one as well, but I wouldn't recommend it. How many of you know what IElm stands for? Anyone? I have it in my speaker notes, but unfortunately, I can't see them because my phone is acting up. Oh, yes! It stands for Inferior Emacs Lisp Mode.
00:04:04.560
The Chrome JavaScript console is another good example. Basically, anything that has a console can be considered a REPL. We have IRB, and it’s awesome. I think these slides are out of order, but we already have one. Why do we need another one? Well, that's simply not true. IRB is not the end-all, be-all, because it really doesn’t suck. If you guys have ever used IRB tools, it's fantastic! I discovered it a couple of weeks ago while preparing this, and it does a lot of cool things. In fact, many of them integrate nicely with Pry.
00:05:51.600
I implemented IRB tools in one of my projects at work. Then, when I switched to a different project where I didn't have it, I immediately noticed it was missing when I was in the console. Essentially, IRB, by itself, doesn't do much.
00:06:46.160
Pry has many features that make it really awesome. For example, it provides easy shell access. So, anytime you’re working in Pry and want to execute a shell command, you just put a dot before the command. It magically runs that command for you and allows you to fire up an editor or any command you want right there.
00:07:51.200
You can also do object browsing as if you were in a shell or browsing directories in your terminal. For instance, you can execute an 'ls' command after changing directories into your application's controller, which lists all available items. It enables you to browse the source and can be incredibly helpful.
00:08:45.920
This got me out of a really tight situation once while working with a Ruby gem. We had an issue with a conditional association in my Rails model that wouldn't load. Through Pry, I discovered that Ruby was monkey-patching the String class and adding a 'to_proc' method. This issue caused significant headaches, but with Pry, I could clearly see where the problem was and what it did.
00:09:44.160
Pry's integration features are really cool. I love using GitHub and Gist to share snippets of code or get help from friends. You can quickly publish any method to a Gist and share it with someone else for assistance. It requires that you have the Gist gem installed, but once you do, you can paste any method straight into Gist from your session.
00:10:47.920
So, we're going to take some time to play around with this because I love live coding. Okay, you convinced me. If there's nothing useful over there, that sounds like a great idea.
00:11:59.680
That's the biggest takeaway I have. We’ll skip a couple of slides because it’s a long presentation, but one of the most useful features I've found with Pry is that you can replace IRB in your Rails console with it, and it's very straightforward. You can open up your development environment and replace it with Pry using just four lines of code.
00:12:40.520
You simply require Pry, replace IRB with Pry, and once that's done, you can access features that enhance your development experience greatly. Not only can you run commands in the console, but you can also easily execute and test modifications in your app.
00:13:53.200
I had to rush through some of this because I missed my train— a bad habit. Does anyone have any questions?
00:14:07.279
I've used it in some Rails 2 projects, but I can't remember which ones worked, and it didn't always operate as expected. Certain colorization and features in gem dependencies sometimes cause conflicts. If you're using older applications, those dependencies may not work either.