IT story

Rails 콘솔 / irb 출력을 억제하는 방법

hot-time 2020. 9. 17. 18:59
반응형

Rails 콘솔 / irb 출력을 억제하는 방법


나는 꽤 이상한 문제에 봉착했다.

Rails Console의 프로덕션 서버에서 일부 db 항목을 테스트하고 있었는데, 거의 모든 명령으로 인해 ssh 채널이 중단되는 등 수많은 o / p 라인이 발생했습니다.

콘솔 / irb 스크린 풀을 억제하는 방법이 있습니까?

감사


추가 할 수 있습니다 . 모든 명령 / 문에 nil .

예:

users = User.all; nil

실제로 irb는 마지막으로 실행 된 명령문의 (반환) 값을 인쇄합니다. 따라서이 경우 nil이 마지막으로 실행 된 유효한 문이므로 nil 만 인쇄됩니다. :)


irb / console 출력을 침묵시키는 방법을 찾기 위해 austinruby.com 에서 답변을 찾았습니다 .

침묵 irb :

conf.return_format = ""

기본 출력 :

conf.return_format = "=> %s\n"

예를 들어 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

(Note: You must install the ctx gem first, though awesome_print is optional, of course.)

Now when you are on any console that uses irb, you can do the following:

Normal mode:

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"}}}

...yep, just what you expect.

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, now everything is printing out awesomely! :)

Quiet mode:

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, no output at all? Nice.

Anyways, you can add whatever mode you like, and when you're finished with that mode, just exit out or it, and you'll be back in the previous mode.

Hope that was helpful! :)


Supress Output, In General

Also, depending on your needs, have a look at using quietly or silence_stream for suppressing output in general, not just in the irb/console:

silence_stream(STDOUT) do
  users = User.all
end

NOTE: quietly will be deprecated in Ruby 2.2.0 and will eventually be removed. (Thanks BenMorganIO!)

More information can be found here.


$ irb --simple-prompt --noecho


running the following within irb works for me:

irb_context.echo = false

참고URL : https://stackoverflow.com/questions/4678732/how-to-suppress-rails-console-irb-outputs

반응형