manipulacion - guardar archivo en ruby
Si definí un método Ruby en IRB, ¿cómo lo edito sin volver a escribir todo? (5)
Echa un vistazo a la gema de pry - un gran reemplazo para IRB. Estas características pueden ser útiles:
-
hist
- repitiendo el historial de comandos -
amend-line
: cambiar una línea en una entrada de línea múltiple
Están bien documentados en la wiki de palanca.
Digamos que estoy ejecutando IRB y escribo esto en la consola:
def full_name(first, last)
puts "Your full name is: #{first, '' '', last}"
end
Digamos que quería editar eso para incluir el middle
del parámetro, ¿cómo podría volver a mostrar ese mismo método y editar la lista de parámetros y editar la declaración de las opciones sin tener que volver a escribir todo el método?
PD: Sé que este ejemplo es simple y fácilmente podría volver a escribir el método, pero tengo métodos mucho más amplios con los que estoy experimentando y estoy usando este sencillo para mayor brevedad.
Gracias.
No creo que tengas muchas opciones aquí. Lo que normalmente hago es colocar el código con el que estoy jugando en un archivo y usar load ''/path/to/file.rb''
para recargarlo cada vez que cambio algo.
También puede probar la gema de editor interactive_editor
que le permite usar un editor de texto completo para la edición de texto dentro de una sesión de IRB.
Puede hacer esto fácilmente en Pry (una alternativa mucho más poderosa para IRB), simplemente use el comando edit-method
para volver a abrir el método en un editor de la siguiente manera:
[19] (pry) main: 0> def full_name(first, last)
[19] (pry) main: 0* puts "Your full name is: #{first + '''' + last}"
[19] (pry) main: 0* end
=> nil
[20] (pry) main: 0> edit full_name
Waiting for Emacs...
=> nil
[21] (pry) main: 0> show-method full_name
From: (pry) @ line 32:
Number of lines: 3
Owner: Object
Visibility: public
def full_name(first, middle, last)
puts "Your full name is: #{first + middle + last}"
end
[22] (pry) main: 0> full_name "Stephen ", "william ", "Hawking"
Your full name is: Stephen william Hawking
=> nil
[23] (pry) main: 0>
Pry recarga automáticamente el método después de que se completa la edición (también se pueden configured usos de palanca del editor)
Puedes editar esto a través de irb o hacer palanca (lo que recomendaría encarecidamente), pero tendrás que volver a escribir todo el archivo. Si lo piensa, un método no es tan difícil de escribir: P Sin embargo, si tiene más de un método incluido en una clase, puede ser muy tedioso volver a escribir la clase completa y los métodos correspondientes. Lo que puedes hacer en ese caso es usar class_evals.
Class Name
def full_name(first, last)
puts "Your full name is: #{first + '' '' + last}"
end
end
# NEW Edited Code
Name.class_eval do
def full_name(first, middle, last)
puts "Your full name is: #{first + '' '' + middle + '' '' + last}"
end
end
Aquí hay un buen recurso para leer acerca de la reapertura de las clases / simulación de pareos y aquí hay otro que advierte sobre los efectos negativos de la simulación de parejas.
Usted no puede Aparte de volver a escribir / repensar, o presionar ↑ para obtener todas las declaraciones anteriores, pero para métodos más largos, esto puede ser muy confuso.
¿Por qué no escribe su código en un editor y luego load ''mycode.rb''
en IRb? Esto es esencialmente equivalente a copiar y pegar el texto, y llamar a la load ''myfile.rb''
nuevamente, como de costumbre, anulará las definiciones de métodos existentes.
O, mejor aún, use Pry en lugar de IRB como lo sugiere el bannister a continuación (yo mismo reemplacé completamente a IRB con Pry).