try - ruby tutorial pdf
¿Cómo puedo soltar el indicador IRB desde un script en ejecución? (6)
¿Puedo pasar a un aviso IRB desde un script de Ruby en ejecución?
Quiero ejecutar un script, pero luego tengo que darme un indicador IRB en un punto del programa con el estado actual del programa, pero no solo ejecutando rdebug y teniendo un punto de interrupción.
Esta función está disponible desde Ruby 2.4. Puedes simplemente usar binding.irb
P.ej
require ''irb''
a = 10
binding.irb
puts a
Si ejecuta el código anterior, obtendrá la consola irb, de modo que puede inspeccionar los valores de las variables locales y cualquier otra cosa que esté dentro del alcance.
Fuente: http://blog.redpanthers.co/new-binding-irb-introduced-ruby-2-4/
Ruby commit: https://github.com/ruby/ruby/commit/493e48897421d176a8faf0f0820323d79ecdf94a
Llego bastante tarde al juego, pero si ya está cargando un script desde dentro de irb / pry, un raise
simple también funciona para regresarlo al indicador irb / pry. Lo uso bastante a menudo cuando escribo uno de los scripts en la consola de rails.
Simplemente agregue esta línea al lugar donde desea el punto de interrupción:
require ''ruby-debug'';debugger
pero sugiero utilizar la palanca en lugar de irb, que es muy útil, inserte en su lugar la siguiente línea:
require ''pry''; binding.pry
aparentemente requiere una porción de código para caer en IRB.
Aquí está el enlace (parece funcionar bien).
http://jameskilton.com/2009/04/02/embedding-irb-into-your-ruby-application
require ''irb''
module IRB
def self.start_session(binding) # call this method to drop into irb
unless @__initialized
args = ARGV
ARGV.replace(ARGV.dup)
IRB.setup(nil)
ARGV.replace(args)
@__initialized = true
end
workspace = WorkSpace.new(binding)
irb = Irb.new(workspace)
@CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
@CONF[:MAIN_CONTEXT] = irb.context
catch(:IRB_EXIT) do
irb.eval_input
end
end
end
puede usar ruby-debug para obtener acceso a irb
require ''rubygems''
require ''ruby-debug''
x = 23
puts "welcome"
debugger
puts "end"
cuando el programa llegue al depurador tendrá acceso a irb.
Pry (una alternativa IRB) también te permite hacer esto, de hecho fue diseñado desde cero para este caso de uso :)
Es tan fácil como poner binding.pry
en el punto donde desea iniciar la sesión:
require ''pry''
x = 10
binding.pry
Y dentro de la sesión:
pry(main)> puts x
=> 10
Visite el sitio web: http://pry.github.com
Pry, te dejamos:
- caer en una sesión en cualquier punto de tu código
- ver el código fuente del método
- ver la documentación del método (sin utilizar RI, por lo que no es necesario pregenerarlo)
- entrar y salir de diferentes contextos
- resaltado de sintaxis
- integración esencial
- ver y reproducir el historial
- abrir editores para editar métodos usando la sintaxis
edit obj.my_method
Una tonelada más grandes y originales características