Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

`binding.pry` for javascript console?

In Ruby, I can type binding.pry anywhere in my code and at that point of execution my console will enter a REPL where I have access to all local variables, can make changes, and execute any arbitrary code.

Example:

# foo.rb require 'pry' n = 5 binding.pry puts "your number is #{n}" 

When I run it:

$ ruby foo.rb  From: /Users/cgenco/Desktop/foo.rb @ line 4 :      1: # foo.rb     2: require 'pry'     3: n = 5  => 4: binding.pry     5: puts "your  number is #{n}"  [1] pry(main)> n = 100 => 100 [2] pry(main)> exit your number is 100 

This is an incredible tool in debugging, especially for situations that require a complicated setup: I can just type binding.pry at the spot I need more code, mess around, figure out what code needs to written, then add the polished code to the actual source code.

Is there a tool like pry for javascript that works in a browser console?

like image 213
cgenco Avatar asked Jun 13 '13 20:06

cgenco


People also ask

Why is binding pry not working?

To fix this just move the binding. pry command one line to the top and try to run your file again. If it still doesn't catch it, move the binding. pry command one more line to the top and keep doing this until your file catches the binding.

How do I install pry?

To start pry, simply type pry after the gem is installed. You can also make it part of your application's dependencies by adding gem "pry" to your application's Gemfile. Installing pry from within the application has its own benefits. In fact, there is a pry-rails gem that replaces the Rails console with Pry.


2 Answers

Try with debugger; in your code as this answer suggests. Your browser developer tools must be open.

like image 59
Pigueiras Avatar answered Sep 18 '22 15:09

Pigueiras


Most browsers have developer tools that are quite similar to this.

In Chrome, for example, hit Ctrl+Shift+I to bring up the developer tools panel. Click on the "Sources" tab and you can browse any JavaScript files that have been loaded. From here you can set breakpoints by clicking in the left margin. Now when you reload the page, JavaScript execution will pause at the line you indicated.

At the bottom of the panel there is a "Show console" button that will open up a REPL you can play around with.

Here is a screenshot illustrating everything I just mentioned:

Screenshot of Chrome developer tools on StackOverflow

There are similar tools in Firefox, IE, Safari, and Opera. Just Google for "developer tools [your browser of choice]" to learn more about them.

like image 35
Dan Tao Avatar answered Sep 20 '22 15:09

Dan Tao