Как подавить выходы Rails console / irb
Я застрял с довольно странной проблемой.
Я тестировал некоторые записи БД на нашем производственном сервере в консоли Rails, где почти все команды приводили к огромному количеству строк o/p, из-за чего зависал ssh-канал: (
Есть ли способ подавить экран консоли / irb?
Спасибо
6 ответов:
Вы можете добавить ; ноль ко всем вашим командам / утверждениям.
Пример:
users = User.all; nil
Фактически irb выводит значение (return)последнего выполненного оператора. Таким образом, в этом случае он будет печатать только nil, так как nil-это последний выполненный допустимый оператор:)
В поисках решения, как заставить замолчать вывод irb/console, я также нашел ответ на austinruby.com :
Молчание irb:
conf.return_format = ""
Вывод по умолчанию:
conf.return_format = "=> %s\n"
Предел для eg 512 символов:
conf.return_format = "=> limited output\n %.512s\n"
Вот, добавьте это к вашему ~/.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
(Примечание: сначала вы должны установить
Теперь, когда вы находитесь на любой консоли, использующей irb, вы можете сделать следующее:ctx
драгоценный камень, хотяawesome_print
, конечно, необязательно.)Нормальный режим:
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"}}}
...да, именно то, что вы ожидаете.
awesome_print
режим: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" } } }
...Ух ты, теперь все печатается потрясающе! :)
Тихий режим:
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>
... ого, совсем нет выхода? Ницца.
В любом случае, вы можете добавить любой режим, который вам нравится, и когда вы закончите с этим режимом, Простоexit
, и вы вернетесь в предыдущий режим.Надеюсь, что это было полезно! :)
Подавление Вывода, В Общем
Также, в зависимости от ваших потребностей, обратите внимание на использование
quietly
илиsilence_stream
для подавления вывода в целом, а не только в irb / console:silence_stream(STDOUT) do users = User.all end
Примечание:
quietly
будет устаревшим в Ruby 2.2.0 и в конечном итоге будет удален. (Спасибо BenMorganIO !)дополнительную информацию можно найти здесь.