¿Qué alternativas al IRB existen?


En el mundo de python, hay una serie de intérpretes alternativos de python que agregan características adicionales interesantes. Un ejemplo particularmente útil es bpython, que agrega resaltado de sintaxis dinámico, extrae automáticamente la documentación y muestra información de autocompletar en vivo. En el mundo de Ruby, todavía tengo que descubrir cualquier proyecto que agregue al intérprete básico de IRB incluso un subconjunto de estas características. ¿No estoy buscando lo suficiente, o es solo algo que la comunidad Ruby es falta?

 32
Author: Derek Thurn, 2010-10-07

9 answers

Qué coincidencia. Rubyflow justo ayer anunció la gema irbtools , que es una meta-gema que contiene muchas gemas de mejora irb geniales. Contiene:

  • Coloreado y salida como comentario por wirb y fancy_irb
  • Bonito indicador de IRB y sangría automática de IRB
  • Incluye stdlib del FileUtils: ls, cd, pwd, ln_s, rm, mkdir, touch, cat
  • Muchos ayudantes de 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 entero: nivel de anidamiento)
    • Object#d - pone el objeto, devuelve self (usando tap)
  • Constantes de información"mágicas": Info, OS, RubyVersion, RubyEngine
    • OS.windows?
    • RubyEngine.jruby?
    • RubyVersion.is.at_least? 1.9
  • Características del portapapeles: copy y paste
    • también disponible: copy_input y copy_output para la sesión historia
  • Llame a vim (u otro editor compatible) para editar un archivo, ciérrelo y se cargará en su sesión irb actual, con la tecnología de interactive_editor
  • Otra forma de carga en vivo en irb: bocetos
  • Resalte una cadena con olorize('string') o un archivo con ray('path'), desarrollado por coderay
  • Muestra las entradas de la base de datos ActiveRecord como tablas con hirb
  • Reinicie irb con reset! o cambie la versión de Ruby con el método 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 que requiere de esta manera: rq:mathn
  • Y rerquiring con rrq
  • Pruebe el ayudante incluido Object#ri, con la tecnología de ori!
  • Acceso a muchos más comandos con boson – llama a comandos para comenzar

Hay buenas capturas de pantalla en la página irbtools. Una cosa buena es que cada una de las utilidades puede valerse por sí sola, en caso de que solo desee elegir una o dos características.

2013 Update

Desde que escribí esto, Pry se ha convertido en un reemplazo popular de IRB. No hace tanto como irbtools fuera de la caja, pero es extensible con gemas de plugin que añaden características interesantes. Puede navegar por el código fuente como si fuera un directorio 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 navegar por la documentación de Ruby, emitir comandos de shell, y si usted es un Rails usuario, puede usar la gema pry-rails para obtener pry en su consola Rails. También hay una manera de conectarlo a Sinatra y usarlo con Heroku.

Hay una amplia documentación there hay un montón de screencasts incluyendo un Railscast. Definitivamente vale la pena investigarlo.

 29
Author: Mark Thomas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-28 12:36:35

Use Pry: http://pry.github.com

Vamos a:

  • iniciar sesiones en tiempo de ejecución
  • ver método código fuente
  • ver documentación del método (no usa RI, por lo que no tiene que generarlo previamente)
  • pop dentro y fuera de diferentes contextos
  • resaltado de sintaxis
  • integración de gist
  • historial de vistas y repeticiones
  • abra editores para editar el método usando edit-method obj.my_method sintaxis

Una tonelada más de grandes y originales características

 33
Author: horseyguy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-11 01:22:52

Nunca he oído hablar de una alternativa (popular) al IRB, pero ciertamente hay varias gemas útiles que hacen que la experiencia del IRB sea mucho más agradable:

  • awesome_print pretty imprime objetos Ruby con sangría y coloración, muy útil cuando se trata de mirar hashes anidados u otras estructuras de datos complicadas.
  • looksee también es bastante impresionante, 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 tu editor e IRB, por lo que es especialmente útil si eres 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 IRB, como la terminación de pestañas y el resaltado de sintaxis. También hay Utility Belt , pero no lo uso personalmente, por lo que no puedo comentar sus características.

Editar

Me olvidé Hirb , que es muy útil para, por ejemplo, mostrar los resultados de una consulta ActiveRecord en una consola Rails.

 3
Author: Michael Kohl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-07 19:11:23
 2
Author: Reactormonk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-07 18:59:27

JRuby se envía con jirb_swing, que proporciona la finalización del código.

 2
Author: Jörg W Mittag,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-07 19:50:18

No hay mucho en el área de alternativas al irb, pero hay un par de gemas que agregan características útiles al irb.

Más notablemente wirble, que, entre otras cosas, le da una salida coloreada (sin embargo, no entrada) y un historial que va más allá de la sesión actual.

 1
Author: sepp2k,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-07 19:45:07

Echa un vistazo a ripl, una alternativa irb modular que está diseñada para ser extensible. También puede obtener algunas respuestas de ¿ Hay algo como bpython para Ruby?.

 1
Author: cldwalker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 10:30:06

Rib es un shell interactivo Ruby modular y ligero.

Al igual que Pry, utiliza el analizador de Ruby para que tenga un comportamiento consistente con Ruby, por lo tanto, menos errores (por ejemplo, https://stackoverflow.com/a/39271791/474597 )

Es modular por lo que se puede extender fácilmente con más funcionalidades.

También se mantiene activamente a partir de 2016.

 0
Author: lulalala,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:56

Hice una consola Ruby pura, inspirada en la consola JavaScript de Google Chrome.

Https://github.com/sancarn/RubyConsole

Todavía es principalmente un proyecto WIP ya que sigo encontrando errores con el algoritmo actual, sin embargo, lo estoy construyendo para ser compatible con 1.9.3+.

 0
Author: Sancarn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-22 08:54:53