ruby - rugby - ¿Qué alternativas a IRB hay?
interactive ruby download (9)
En el mundo de Python, hay una serie de intérpretes de Python alternativos que añaden interesantes características adicionales. Un ejemplo particularmente útil es bpython, que agrega resaltado de sintaxis dinámica, extrae automáticamente la documentación y muestra información de autocompletado en vivo. En el mundo de Ruby, aún no he descubierto ningún proyecto que agregue al intérprete básico de IRB, incluso un subconjunto de estas características. ¿Acaso no estoy mirando lo suficiente, o es algo de lo que carece la comunidad de Ruby?
Eche un vistazo a ripl , una alternativa modular de irb diseñada para ser extensible. También puedes obtener algunas respuestas de ¿Hay algo como bpython para Ruby? .
Hice una consola de Ruby pura, inspirada en la consola de JavaScript de Google Chrome.
https://github.com/sancarn/RubyConsole
Sigue siendo principalmente un proyecto de WIP ya que sigo encontrando errores con el algoritmo actual, sin embargo, lo estoy construyendo para que sea compatible con 1.9.3+.
JRuby se envía con jirb_swing
, que proporciona la finalización del código.
No hay mucho en el área de alternativas al IRB, pero hay un par de gemas que agregan características útiles al IRB.
El más notablemente Wirble , que, entre otras cosas, le da salida de color (no entrada) y un historial que va más allá de la sesión actual.
Nunca he oído hablar de una alternativa (popular) al IRB, pero ciertamente hay varias gemas útiles que hacen que la experiencia IRB sea mucho más agradable:
- awesome_print imprime objetos de Ruby con sangría y color, muy útil cuando se trata de mirar hashes anidados u otras estructuras de datos complicadas.
- looksee es bastante impresionante también, proporciona un método
lp
(ruta de búsqueda) que le muestra de dónde obtiene un objeto Ruby sus métodos (clase, superclase, etc.). - Sketches conecta su editor y IRB, por lo que es especialmente útil si usted es del tipo que le gusta el desarrollo interactivo. Emacs con
inf-ruby
también es bueno para esto. - Wirble es un conjunto completo de mejoras de IRB, como la finalización de pestañas y el resaltado de sintaxis. También está el Utility Belt , pero no lo uso personalmente, por lo que no puedo comentar sus características.
Editar
Olvidé Hirb , que es muy útil, por ejemplo, para mostrar los resultados de una consulta de ActiveRecord en una consola de Rails.
Qué casualidad. Rubyflow acaba de anunciar la gema irbtools , que es una meta-gema que contiene muchas gemas de mejora de irb. Contiene:
- Colorized y salida como comentario por
wirb
yfancy_irb
- Buen indicador de IRB y sangría automática del IRB
- Incluye FileUtils de stdlib:
ls
,cd
,pwd
,ln_s
,rm
,mkdir
,touch
,cat
- Muchos ayudantes para la depuración:
ap
,q
,o
,c
,y
,Object#m
,Object#d
-
ap
- awesome_print -
q
- comop
, pero en una línea -
Object#m
- lista de métodos ordenados (toma el parámetro integer: nivel de anidación) -
Object#d
- pone el objeto, regresa a sí mismo (usandotap
)
-
- Constantes de información "mágica":
Info, OS, RubyVersion, RubyEngine
-
OS.windows?
-
RubyEngine.jruby?
-
RubyVersion.is.at_least? 1.9
-
- Funciones del portapapeles:
copy
ypaste
- también disponible:
copy_input
ycopy_output
para el historial de la sesión
- también disponible:
- Llame a
vim
(u otro editor compatible) para editar un archivo, ciérrelo y se carga en su sesión actual de IRB, con tecnología deinteractive_editor
- Otra forma de carga en vivo en irb: bocetos
- Resalta una cadena con
olorize(''string'')
o un archivo conray(''path'')
, impulsado por coderay - Muestra las entradas de la base de datos ActiveRecord como tablas con
hirb
- ¡Reinicie el
irb
conreset!
o cambie la versión de Ruby con el método deuse
yrvm!
- Incluye el directorio actual en la ruta de carga (se eliminó en 1.9.2 por razones de seguridad, pero es bastante molesto en IRB)
- Más corto requiriendo así:
rq:mathn
- Y volver a
rrq
conrrq
- Prueba el
Object#ri
helper incluido, ¡con tecnología deori
! - Acceda a muchos más comandos con
boson
: llame a los comandos para comenzar
Hay bonitas capturas de pantalla en la página de irbtools . Una cosa buena es que cada una de las utilidades puede funcionar por sí misma, en caso de que solo desee seleccionar una o dos características.
Actualización 2013
Desde que escribí esto, Pry ha convertido en un reemplazo popular de IRB. No hace tanto como irbtools
fuera de la caja, pero es extensible con gemas de complemento que agregan características interesantes. Puede navegar por el código fuente como si fuera un directorio de Unix:
pry(main)> cd FileUtils
pry(FileUtils):1> show-method rm
From: /opt/ruby/lib/ruby/1.9.1/fileutils.rb @ line 556:
Number of lines: 10
Owner: FileUtils
def rm(list, options = {})
fu_check_options options, OPT_TABLE[''rm'']
list = fu_list(list)
fu_output_message "rm#{options[:force] ? '' -f'' : ''''} #{list.join '' ''}" if options[:verbose]
return if options[:noop]
list.each do |path|
remove_file path, options[:force]
end
end
pry(FileUtils):2>
También puede explorar la documentación de Ruby, emitir comandos de shell y, si es usuario de Rails, puede usar la gema de pry-rails
para obtener información sobre la consola de Rails. También hay una forma de conectarlo a Sinatra y usarlo con Heroku.
Hay una amplia documentación: hay un montón de screencasts que incluyen un Railscast. Definitivamente vale la pena investigarlo.
Use Pry: http://pry.github.com
Te deja:
- iniciar sesiones en tiempo de ejecución
- 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 el método utilizando el método de
edit-method obj.my_method
sintaxis
Una tonelada más grandes y originales características
rib es un shell interactivo de Ruby modular y ligero.
Al igual que Pry, utiliza el analizador de Ruby, por lo que tiene un comportamiento constante con Ruby, por lo tanto, menos errores (por ejemplo, https://.com/a/39271791/474597 )
Es modular por lo que uno puede ampliarlo fácilmente con más funcionalidades.
También se mantiene activamente a partir de 2016.