¿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?
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
yfancy_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
comop
, 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 (usandotap
)
-
- 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
ypaste
- también disponible:
copy_input
ycopy_output
para la sesión historia
- también disponible:
- 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 deinteractive_editor
- Otra forma de carga en vivo en irb: bocetos
- Resalte una cadena con
olorize('string')
o un archivo conray('path')
, desarrollado por coderay - Muestra las entradas de la base de datos ActiveRecord como tablas con
hirb
- Reinicie
irb
conreset!
o cambie la versión de Ruby con el métodouse
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 que requiere de esta manera:
rq:mathn
- Y rerquiring con
rrq
- Pruebe el ayudante incluido
Object#ri
, con la tecnología deori
! - 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.
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
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.
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
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.
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.
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?.
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.
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+.
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