Quelles sont les alternatives à la CISR sont là?
Question
Dans le monde de python, il y a un certain nombre d'interprètes de python alternatives qui ajoutent des fonctionnalités très supplémentaires. Un exemple particulièrement utile est bpython, qui ajoute la syntaxe dynamique mise en évidence, tire automatiquement la documentation, et affiche des informations en direct autocomplete. Dans le monde Ruby, je n'ai pas encore permis de découvrir des projets qui ajoutent à l'interprète de base de la CISR, même un sous-ensemble de ces caractéristiques. Suis-je tout simplement pas assez dur à la recherche, ou est-ce juste quelque chose de la communauté Ruby manque?
La solution
Quelle coïncidence. Rubyflow juste a annoncé hier la joyau de irbtools, qui est un contenant beaucoup de méta-gemme de gemmes d'amélioration de RIR de cool. Il contient:
- Colorisation et sortie comme commentaire par
wirb
etfancy_irb
- Nice CISR rapide et l'auto de la CISR indention
- Comprend FileUtils de la stdlib:
ls
,cd
,pwd
,ln_s
,rm
,mkdir
,touch
,cat
- De nombreux assistants de débogage:
ap
,q
,o
,c
,y
,Object#m
,Object#d
-
ap
- awesome_print -
q
- commep
, mais sur une ligne -
Object#m
- Liste de procédé commandé (a entier paramètres: niveau d'imbrication) -
Object#d
- met l'objet, les retours auto (en utilisanttap
)
-
- Informations « magiques » constantes:
Info, OS, RubyVersion, RubyEngine
-
OS.windows?
-
RubyEngine.jruby?
-
RubyVersion.is.at_least? 1.9
-
- Presse-papiers caractéristiques:
copy
etpaste
- également disponible:
copy_input
etcopy_output
pour l'histoire de la session
- également disponible:
- Appel
vim
(ou un autre éditeur pris en charge) pour modifier un fichier, fermez-le et il est chargé en votre session actuelle RIR, alimenté parinteractive_editor
- Une autre façon de chargement direct dans irb: croquis
- Mettre en surbrillance une chaîne avec
olorize('string')
ou un fichier avecray('path')
, alimenté par coderay - Affiche les entrées de la base de données sous forme de tableaux avec ActiveRecord
hirb
- Redémarrez
irb
avecreset!
ou changer la version Ruby avec la méthodeuse
etrvm!
- Y compris le répertoire courant dans le trajet de charge (a été éliminé 1.9.2 pour des raisons de sécurité, mais il est assez ennuyeux dans la CISR)
- Shorter exigeant comme ceci:
rq:mathn
- Et rerquiring avec
rrq
- Essayez l'assistant
Object#ri
inclus, alimenté parori
! - L'accès à beaucoup d'autres commandes avec
boson
- commandes d'appel pour commencer
Il y a des captures d'écran Nice sur la page irbtools . Une bonne chose à ce sujet est que chacun des services publics peut se suffire à lui-même, au cas où vous voulez juste écrémer une ou deux fonctions.
Mise à jour 2013
Depuis que j'ai écrit cela, Pry est devenu un remplacement de la CISR populaire. Il ne fait pas autant que irbtools
hors de la boîte, mais extensible avec le plugin gemmes qui ajoutent des fonctionnalités fraîches. Vous pouvez parcourir le code source comme il était un répertoire 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>
Vous pouvez aussi consulter la documentation Ruby, commandes shell d'émission, et si vous êtes un utilisateur Rails, vous pouvez utiliser la gemme pry-rails
pour obtenir levier dans la console Rails. Il y a aussi une façon de le brancher dans Sinatra et l'utiliser avec Heroku.
Il y a une abondante documentation - il y a un tas de screencasts, y compris un Railscast. Il vaut vraiment la peine de regarder dans.
Autres conseils
Utilisez Pry: http://pry.github.com
Soit vous est:
- démarrer des sessions lors de l'exécution
- Afficher le code source de la méthode
- Afficher la documentation de la méthode (ne pas utiliser RI si vous ne devez pré-le générer)
- pop dans et hors de différents contextes
- coloration syntaxique
- intégration essentiel
- et vue historique replay
- éditeurs ouverts à la méthode d'édition à l'aide
edit-method obj.my_method
syntaxe
Une tonne de plus grandes caractéristiques et originales
Je ne l'ai jamais entendu parler d'un (populaire) alternative à la CISR, mais il y a certainement plusieurs gemmes utiles qui rendent l'expérience de la CISR une plus belle du lot:
- awesome_print imprime assez des objets Ruby avec indentation et la coloration, très utile lorsque vous essayez de regarder hash imbriqués ou d'autres structures de données complexes.
- looksee est assez impressionnant aussi, il fournit une
lp
méthode (chemin recherche) qui vous montre où objet Ruby obtient ses méthodes de (classe, superclasse etc). - Sketches relie votre éditeur et la CISR, il est donc particulièrement utile si vous êtes le type qui aime le développement interactif. Emacs avec
inf-ruby
est également bon pour cela. - Wirble est un ensemble d'améliorations de la CISR, comme la complétion et la coloration syntaxique. Il y a aussi ceinture utilitaire, mais je ne l'utilise pas personnellement que, ne peut donc pas faire de commentaires sur ses caractéristiques.
Modifier
J'ai oublié Hirb , ce qui est très utile par exemple montrant les résultats d'une requête ActiveRecord dans une console Rails.
Il y a http://github.com/alloy/dietrb .
navires JRuby avec jirb_swing
, qui fournit la complétion de code.
Il n'y a pas grand-chose dans le domaine des solutions de rechange à irb, mais il y a quelques pierres précieuses qui ajoutent des fonctionnalités utiles à irb.
Plus particulièrement wirble , qui, entre autres choses, vous donne une sortie de couleur (pas d'entrée bien) et une histoire qui va au-delà de la session en cours.
Commander RIPL , une alternative irb modulaire qui est conçu pour être extensible. Vous pouvez également obtenir des réponses de Y at-il quelque chose comme bpython pour Ruby? .
est une interface interactive Ruby modulaire et la lumière.
, comme Pry, utilise l'analyseur de Ruby a donc un comportement cohérent avec Ruby ainsi moins de bugs (par exemple https://stackoverflow.com/ a / 39271791/474597 )
Il est modulaire, donc on peut facilement étendre avec plus de fonctionnalités.
Il est également toujours maintenu activement au 2016.
J'ai fait une console pur Ruby, inspiré de la console JavaScript de Google Chrome.
https://github.com/sancarn/RubyConsole
Il est encore principalement un projet de travaux en cours que je continue à trouver des bugs avec l'algorithme actuel, mais je construis qu'il soit compatible 1.9.3+.