MacBookdeCasiano:rubytesting casiano$ ruby f2c.rb 32F celsius = 0.0 farenheit = 32.0Ejecútelo con y sin la opción
-d
[~/rubytesting/f2c]$ ruby -d f2c.rb 32F Exception `LoadError' at /Users/casiano/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/site_ruby/1.9.1/rubygems.rb:1194 - cannot load such file -- rubygems/defaults/operating_system Exception `LoadError' at /Users/casiano/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/site_ruby/1.9.1/rubygems.rb:1203 - cannot load such file -- rubygems/defaults/ruby 32F Matches num = 32 kind= F celsius = 0.0 farenheit = 32.0 [~/rubytesting/f2c]$ ruby -d f2c.rb 32X Exception `LoadError' at /Users/casiano/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/site_ruby/1.9.1/rubygems.rb:1194 - cannot load such file -- rubygems/defaults/operating_system Exception `LoadError' at /Users/casiano/.rvm/rubies/ruby-1.9.3-p545/lib/ruby/site_ruby/1.9.1/rubygems.rb:1203 - cannot load such file -- rubygems/defaults/ruby 32X does not match [~/rubytesting/f2c]$ ruby -v ruby 1.9.3p545 (2014-02-24 revision 45159) [x86_64-darwin13.1.0]e intente averiguar el significado de cada una de las sentencias.
$ cat -n f2c.rb 1 #!/usr/bin/env ruby 2 3 t = ARGV[0] || '0C' 4 puts t if $DEBUG 5 6 if t =~ /^\s*(\d+(?:\.?\d+)?)([CF])\s*$/i 7 puts "Matches num = #{$1} kind= #{$2}" if $DEBUG 8 num, type = $1.to_f, $2 9 10 if (type == 'C') 11 celsius = num 12 farenheit = (celsius*9/5)+32 13 else 14 farenheit = num 15 celsius = (farenheit-32)*5/9 16 end 17 puts "celsius = #{celsius} farenheit = #{farenheit}" 18 else 19 puts "does not match" if $DEBUG 20 endpara entenderlo un poco consulte las siguientes secciones de la guía de usuario:
Pry can be invoked in the middle of a running program. It opens a Pry session at the point it's called and makes all program state at that point available.
It can be invoked on any object using the my_object.pry
syntax
or on the current binding
(or any binding) using binding.pry
.
The Pry session will then begin within the scope of the object (or binding).
When the session ends the program continues with any modifications you made to it.
[~/rubytesting/f2c]$ cat f2c2.rb #!/usr/bin/env ruby require 'pry' t = ARGV[0] || '0C' if t =~ /^\s*(\d+(?:\.?\d+)?)([CF])\s*$/i num, type = $1.to_f, $2 binding.pry if (type == 'C') celsius = num farenheit = (celsius*9/5)+32 else farenheit = num celsius = (farenheit-32)*5/9 end puts "celsius = #{celsius} farenheit = #{farenheit}" else $stderr.puts "not expected input" end
[~/rubytesting/f2c]$ cat Gemfile source 'https://rubygems.org' gem 'pry' gem 'pry-debugger' if RUBY_VERSION == "1.9.3" gem 'pry-byebug' if RUBY_VERSION == "2.1.2"
[~/rubytesting/f2c]$ ruby -v ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0] [~/rubytesting/f2c]$ bundle Using columnize 0.8.9 Using debugger-linecache 1.2.0 Using slop 3.6.0 Using byebug 3.5.1 Using coderay 1.1.0 Using method_source 0.8.2 Using pry 0.10.1 Using pry-byebug 2.0.0 Using bundler 1.6.2 Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
[~/rubytesting/f2c]$ ruby -v ruby 1.9.3p545 (2014-02-24 revision 45159) [x86_64-darwin13.1.0] [~/rubytesting/f2c]$ bundle Resolving dependencies... Using coderay 1.1.0 Using columnize 0.8.9 Using debugger-linecache 1.2.0 Using debugger-ruby_core_source 1.3.5 Using debugger 1.6.8 Using method_source 0.8.2 Using slop 3.6.0 Using pry 0.10.1 Using pry-debugger 0.2.3 Using bundler 1.6.0 Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
[~/rubytesting/f2c]$ ruby f2c2.rb From: /Users/casiano/local/src/ruby/rubytesting/f2c/f2c2.rb @ line 10 : 5: 6: if t =~ /^\s*(\d+(?:\.?\d+)?)([CF])\s*$/i 7: num, type = $1.to_f, $2 8: 9: binding.pry => 10: if (type == 'C') 11: celsius = num 12: farenheit = (celsius*9/5)+32 13: else 14: farenheit = num 15: celsius = (farenheit-32)*5/9 [1] pry(main)> p num 0.0 => 0.0 [2] pry(main)> continue celsius = 0.0 farenheit = 32.0