रेल कंसोल / इर्ब आउटपुट को कैसे दबाएं


89

मैं एक बहुत अजीब समस्या के साथ फंस गया हूँ।

मैं हमारे उत्पादन सर्वर में रेल कंसोल में कुछ db प्रविष्टियों का परीक्षण कर रहा था, जहाँ लगभग सभी कमांडों में बड़ी संख्या में ओ / पी लाइनें थीं, जिसके कारण ssh चैनल लटका हुआ था :(

क्या कंसोल / irb स्क्रीनफुल को दबाने का कोई तरीका है?

धन्यवाद

जवाबों:


190

तुम जोड़ सकते हो ; अपने सभी आदेशों / कथनों को शून्य करें।

उदाहरण:

users = User.all; nil

वास्तव में irb अंतिम निष्पादित विवरण के मूल्य (रिटर्न) को प्रिंट करता है। इस प्रकार इस मामले में यह केवल nil प्रिंट करेगा क्योंकि nil अंतिम निष्पादित वैध कथन है :)


13
बहुत बढ़िया, एक और भी छोटा रास्ता अर्ध-बृहदान्त्र है जिसके बाद एक ऑब्जेक्ट होता है जैसेusers = User.all; 0
बॉब

1
यह केवल लौटी हुई वस्तुओं के लिए काम करता है, पी और पुट के काम का नहीं।
the_minted

इसका सिर्फ एक हैक, आप सिर्फ गिनती का उपयोग कर सकते हैं, जैसे Users.all.count, केवल एक लाइन आउटपुट, और यदि आप वेरिएबल में आउटपुट स्टोर करना चाहते हैं, तो इसे इस तरह किया जा सकता हैusers = User.all; Users.all.count
तसव्वार हुसैन

31

एक समाधान की खोज में irb / कंसोल आउटपुट को कैसे चुप करें, मुझे austinruby.com पर एक उत्तर भी मिला :

मौन irb:

conf.return_format = ""

डिफ़ॉल्ट आउटपुट:

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

उदाहरण के लिए सीमा 512 वर्ण:

conf.return_format = "=> limited output\n %.512s\n"

बहुत उपयोगी। कोई भी मौका irb / rails कंसोल को खोलने के दौरान इसे सेट करने का एक तरीका है, अर्थात इसमें एक पैरामीटर?
केच

आप इसे $ Home / .irbrc
hdgarrood

8

यहां, इसे अपने ~ / .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

(नोट: आपको निश्चित रूप से वैकल्पिक है ctx, हालांकि, पहले मणि स्थापित करना होगा awesome_print।)

अब जब आप irb का उपयोग करने वाले किसी भी कंसोल पर हैं, तो आप निम्न कार्य कर सकते हैं:

सामान्य स्थिति:

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या इसके बाहर, और आप पिछले मोड में वापस आ जाएंगे।

आशा है कि उपयोगी था! :)


4

सुपर आउटपुट, जनरल में

इसके अलावा, आपकी आवश्यकताओं के आधार पर, सामान्य रूप से आउटपुट को दबाने quietlyया silence_streamदबाने के लिए एक नज़र है , न कि केवल irb / कंसोल में:

silence_stream(STDOUT) do
  users = User.all
end

नोट: quietlyरूबी 2.2.0 में पदावनत किया जाएगा और अंततः हटा दिया जाएगा। (धन्यवाद BenMorganIO !)

अधिक जानकारी यहां पाई जा सकती है


1
ध्यान दें कि quietlyरूबी 2.2.0 में पदावनत किया गया है और हटाया जा रहा है।
BenMorganIO

@BenMorganIO ने उत्तर के लिए एक नोट जोड़ा। उसके लिए धन्यवाद!
जोशुआ पिंटर

4

मेरे लिए निम्नलिखित काम करता है:

irb_context.echo = false

4
irb --simple-prompt --noecho
  • --simple-prompt - एक सरल संकेत का उपयोग करता है - बस >>
  • --noecho - संचालन के परिणाम को दबाता है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.