rugby ruby irb

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?




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 y fancy_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 - como p , 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 (usando tap )
  • Constantes de información "mágica": Info, OS, RubyVersion, RubyEngine
    • OS.windows?
    • RubyEngine.jruby?
    • RubyVersion.is.at_least? 1.9
  • Funciones del portapapeles: copy y paste
    • también disponible: copy_input y copy_output para el historial de la sesión
  • 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 de interactive_editor
  • Otra forma de carga en vivo en irb: bocetos
  • Resalta una cadena con olorize(''string'') o un archivo con ray(''path'') , impulsado por coderay
  • Muestra las entradas de la base de datos ActiveRecord como tablas con hirb
  • ¡Reinicie el irb con reset! o cambie la versión de Ruby con el método de use y rvm!
  • 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 con rrq
  • Prueba el Object#ri helper incluido, ¡con tecnología de ori !
  • 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.