Je suis coincé avec un problème assez étrange.
Je testais certaines entrées db dans notre serveur de production dans la console Rails où presque toutes les commandes entraînaient un grand nombre de lignes o/p, en raison de laquelle le canal ssh était bloqué :(
Existe-t-il un moyen de supprimer les écrans de la console/irb?
Merci
Vous pouvez ajouter ; nil à toutes vos commandes/instructions.
Exemple:
users = User.all; nil
En fait, irb affiche la valeur (de retour) de la dernière instruction exécutée. Ainsi, dans ce cas, il affichera uniquement nil car nil est la dernière instruction valide exécutée :)
À la recherche d'une solution pour faire taire la sortie irb/console, j'ai également trouvé une réponse sur austinruby.com :
silence irb:
conf.return_format = ""
sortie par défaut:
conf.return_format = "=> %s\n"
limite à par exemple 512 caractères:
conf.return_format = "=> limited output\n %.512s\n"
Ici, ajoutez ceci à votre ~/.irbrc:
require 'ctx'
require 'awesome_print'
module IRB
class Irb
ctx :ap do
def output_value()
ap(@context.last_value)
end
end
ctx :puts do
def output_value()
puts(@context.last_value)
end
end
ctx :p do
def output_value()
p(@context.last_value)
end
end
ctx :quiet do
def output_value()
end
end
end
end
def irb_mode(mode)
ctx(mode) { irb }
end
(Remarque: vous devez d'abord installer la gemme ctx
, bien que awesome_print
est facultatif, bien sûr.)
Maintenant, lorsque vous êtes sur une console qui utilise irb, vous pouvez effectuer les opérations suivantes:
Mode normal:
irb(main):001:0> { this:'is a complex object', that:[ { will:'probably'}, { be:'good to read' } ], in:{ some:{ formatted:'way'} } }
=> {:this=>"is a complex object", :that=>[{:will=>"probably"}, {:be=>"good to read"}], :in=>{:some=>{:formatted=>"way"}}}
... oui, exactement ce que vous attendez.
awesome_print
mode:
irb(main):002:0> irb_mode(:ap)
irb#1(main):001:0> { this:'is a complex object', that:[ { will:'probably'}, { be:'good to read' } ], in:{ some:{ formatted:'way'} } }
=> {
:this => "is a complex object",
:that => [
[0] {
:will => "probably"
},
[1] {
:be => "good to read"
}
],
:in => {
:some => {
:formatted => "way"
}
}
}
... wow, maintenant tout s'imprime à merveille! :)
Mode silencieux:
irb#1(main):002:0> irb_mode(:quiet)
irb#1(main):001:0> { this:'is a complex object', that:[ { will:'probably'}, { be:'good to read' } ], in:{ some:{ formatted:'way'} } }
irb#1(main):002:0>
... whoah, pas de sortie du tout? Agréable.
Quoi qu'il en soit, vous pouvez ajouter le mode de votre choix, et lorsque vous avez terminé avec ce mode, il suffit de exit
sortir ou le faire, et vous serez de retour dans le mode précédent.
J'espère que cela vous a été utile! :)
De plus, selon vos besoins, jetez un œil à l'utilisation de quietly
ou silence_stream
pour supprimer la sortie en général, pas seulement dans irb/console:
silence_stream(STDOUT) do
users = User.all
end
REMARQUE: quietly
sera déconseillé dans Ruby 2.2.0 et sera finalement supprimé. = (Merci BenMorganIO !)
Plus d'informations peuvent être trouvées ici .
$ irb --simple-Prompt --noecho
exécuter ce qui suit dans irb fonctionne pour moi:
irb_context.echo = false