2012-01-16 25 views
7

मैं कमांड शैल में चल रही रूबी प्रक्रिया को डीबग करने के लिए रूबिमाइन के आईडीई डीबगर का उपयोग करना चाहता हूं, क्योंकि यह उत्पन्न होता है, उदाहरण के लिए "रेल कंसोल" द्वारा।एक शेल प्रक्रिया में रूबिमाइन आईडीई डीबगर को कैसे संलग्न करें?

वेब सर्वर (रूबीमाइन के भीतर से) या परीक्षण सूट (रूबीमाइन के भीतर से भी चलते समय) चलाने पर मुझे डीबगर से बहुत अच्छा लाभ मिला है।

हालांकि, अगर प्रक्रिया रूबिमाइन द्वारा शुरू नहीं की जाती है, तो मुझे डीबगर को कैसे संलग्न किया जाए, इस पर नुकसान होता है।

मैं संस्करण RubyMine 3.2.4 का उपयोग कर रहा सन जावा 1.6.0_26 साथ Ubuntu पर, रूबी REE 1.8.7, और नवीनतम डिबग जवाहरात:

ruby-debug-base (0.10.4) 
ruby-debug-ide (0.4.17.beta8) 

विचार?

+1

मुझे लगता है कि आपके प्रश्न का शीर्षक एक क्रिया खो रहा है। –

+0

@ डेविड ग्रेसन धन्यवाद - आप सही हैं। फिक्स्ड। –

उत्तर

3

रूबीमाइन में रूबी रिमोट डीबग कॉन्फ़िगरेशन प्रकार का उपयोग करें। विवरण के लिए आधिकारिक RubyMine documentation का संदर्भ लें।

मूल रूप से आप की तरह स्क्रिप्ट चलाने:

rdebug-ide --port <port number> -- script.rb 

और फिर RubyMine डीबगर से निर्दिष्ट पोर्ट से कनेक्ट।

+0

धन्यवाद @ क्रैजीकोडर जिसने काम किया, मैंने अपने भ्रम के माध्यम से थोड़ा सा कदम उठाया: 1. कमांड लाइन से rdebug-ide कमांड को लॉन्च करें, उदा। 'रेल कंसोल' खोल सत्र को डीबग करने के लिए यह पढ़ेगा: 'rdebug-ide --port 1234 - रेल कंसोल'। 2. रूबीमाइन में, रन कॉन्फ़िगरेशन एडिटर का उपयोग करें और उसी पोर्ट (यहां 1234) का उपयोग करके एक नया रूबी रिमोट डीबग कॉन्फ़िगरेशन बनाएं, और दूरस्थ पथ को कार्य निर्देशिका में सेट करें, फिर डीबग बटन दबाएं, और यह खोल देगा आरंभ करने के लिए, जबकि रूबीमाइन में स्रोतों को तोड़ दिया जा सकता है। बहुत सराहना की! –

5

इस तरह आप यह रेल में क्या है:

rdebug-ide --port 6778 -- /projects/your_rails_project/script/rails console 

या के लिए:

gem install ruby-debug-ide --platform=ruby 

इसके बाद, इस कंसोल में चलाएँ:

सबसे पहले, सुनिश्चित करें कि आप rdebug-ide है स्थापित करना रेल 4.0+

rdebug-ide --port 6778 -- /projects/your_rails_project/bin/rails console 

या, जैसा कि @ क्रिस्टोफरविल ने below का उल्लेख किया है, यदि आप एक गैर-स्थानीय सर्वर डीबग करना चाहते हैं तो आप --host पैरामीटर पास कर सकते हैं। (चेतावनी के लिए नीचे अपनी टिप्पणी पढ़ें)

यह रिमोट डीबग क्लाइंट कनेक्ट करने के लिए प्रतीक्षा करेगा। पर RubyMine में चलाएँ> संपादित विन्यास

  1. क्लिक करें फिर एक "रूबी रिमोट डीबग" उदाहरण के

  2. उपयोग 6778 से ऊपर के रूप में ही बंदरगाह (यदि आपको उपरोक्त के बदलते हैं, तो यकीन है कि बंदरगाहों से मिलान करने के) जोड़ने

  3. रूट फ़ोल्डर और स्थानीय रूट फ़ोल्डर में एक ही,/परियोजनाओं/your_rails_project

  4. लागू करें और बंद पर क्लिक करें है।

अगला, रन और डीबग बटन के बगल में सूची से इस कॉन्फ़िगरेशन को चुनें और फिर डीबग बटन पर क्लिक करें। इसे कुछ सेकंड दें और कंसोल "रेल कंसोल" चलाएगा जहां आप कभी भी "rdebug-ide" चलाते हैं

+0

धन्यवाद, लेकिन वास्तव में यह रेल 3.2 में काम नहीं करता है, क्योंकि 'रेल कंसोल' अब एक अलग प्रक्रिया को जन्म देता है, और रूबीमाइन आईडीई डीबगर अभी तक बहु-प्रक्रिया डीबगिंग को संभाल नहीं सकता है, हालांकि वे रूबीमाइन की अगली रिलीज में इसे शामिल कर रहे हैं । –

+0

मैं रूबीमाइन 4.0.3 के साथ फिलहाल एक रेल 3.2.2 एप्लिकेशन (रूबी 1.9.3 पी 1 9 4) डिबग कर रहा हूं। जब मैंने "boot.rb" चलाने की कोशिश की (rdebug-ide के साथ) प्रक्रिया शुरू हो गई और तुरंत बंद कर दिया गया। जब मैंने ऊपर दिए गए आदेश का उपयोग किया तो यह मेरे लिए काम करता था। – Abdo

+0

आप कोई समस्या नहीं चलाने के लिए प्रक्रिया प्राप्त कर सकते हैं, लेकिन मुझे नहीं लगता कि आप इसे ब्रेकपॉइंट्स पर रुकने के लिए प्राप्त कर सकते हैं, क्योंकि 'रेल' निष्पादन योग्य पृष्ठभूमि प्रक्रिया को जन्म देता है जिस पर निगरानी नहीं की जाती है। और पहली जगह डीबगर में इसे चलाने के लिए मेरा पूरा कारण ब्रेकपॉइंट्स सेट करना है। http://youtrack.jetbrains.com/issue/RUBY-10967 –

2

मैं वास्तव में यहां कुछ पोस्ट करना चाहता हूं, जिसके लिए एक पूर्ण उत्तर ढूंढना बहुत कठिन है और यह मुझे ले गया पता लगाने के लिए एक बहुत लंबा समय।लोग पूछ रहे हैं कि रिमू कार्यकर्ता को रिमोट डीबग कैसे संलग्न करें और यहां सही तरीका है जो मेरे लिए अंत में काम करता है। यह आलेख Google खोज पर उच्च है और ढूंढना आसान होगा।

सर्वर पर शेल से (मेरे लिए मेरा लैपटॉप) इसे अपनी साइट रूट से निष्पादित करें: rdebug-ide --port 1236 - डिस्पैचर-पोर्ट 26166 --होस्ट 0.0.0.0 बिन/रेक रेस्क: काम क्यूईयू रिमोट होस्ट: 127.0.0.1 रिमोट पोर्ट: 1236 रिमोट रूट फ़ोल्डर: 26,166 स्थानीय रूट पथ: साइट रूट स्थानीय पोर्ट को सर्वर पर पथ = *

RubyMine आईडीई में

के साथ दूरदराज के डिबग कॉन्फ़िगर पर पथ अपने अपनी रूट फ़ाइल में वर्कस्टेशन जहां आप ब्रेकपॉइंट्स सेट करेंगे (मेरे मामले में यह सब स्थानीय है इसलिए इसकी सभी 1 पथ और फाइलों की एक प्रति)

अपने वेब सर्वर को सामान्य के रूप में चलाएं: रेल की

अपने रेस्क्यू कार्यकर्ता में ब्रेकपॉइंट सेट करें और आपको उस ब्रेकपॉइंट पर पहुंचने के लिए अपनी साइट पर जो कुछ भी करने की आवश्यकता है उसे निष्पादित करने का प्रयास करें।

1 नोट - "वसंत" मणि होने से मुझे त्रुटियां मिलीं और मुझे इसे/बंडल पर टिप्पणी करनी पड़ी।