web-dev-qa-db-fra.com

Comment supprimer Rails sorties console / irb

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

84
ghtn

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 :)

179
intellidiot

À 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"
29
LarsDK

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! :)

9
Mason Cloud

Sortie de suppression, en général

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 .

5
Joshua Pinter

$ irb --simple-Prompt --noecho

3
user3490179

exécuter ce qui suit dans irb fonctionne pour moi:

irb_context.echo = false
2
schpet