2010-09-20 8 views
5

में संदर्भित किए बिना रेल 3 में एक मणि का उपयोग कैसे करें मैं सोच रहा हूं कि एक रत्न 3 ऐप में रत्न को ऐप्पल में संदर्भित किए बिना एक मणि को कैसे पहुंचाया जा सकता है। मैं रूबी-डीबग के साथ ऐसा करना चाहता हूं (मैं ruby-debug19 का उपयोग कर रहा हूं)। मैं इसे डीबग करने के लिए उपयोग करता हूं, लेकिन मेरी टीम पर सभी लोग निर्भरता को मजबूर नहीं करते हैं और इसलिए मैं इसका उपयोग कर सकता हूं, यह बहुत ही राजनयिक प्रतीत नहीं होता है। क्या कोई और तरीका है?जेमफाइल

यह mattering समाप्त होता है, तो मैं Rails3, Bundler 1.0.0, रूबी 1.9.2, RVM, OSX हिम तेंदुए

उपयोग कर रहा हूँ एक तरफ ध्यान दें पर, मैं, gemfile समूह सुविधा का उपयोग कर के बारे में सोचा था लेकिन यह सही महसूस नहीं करता है। समूह factory_girl जैसी चीजों के लिए बहुत अच्छे लगते हैं जहां केवल वास्तविक वातावरण में वास्तविक निर्भरता है, लेकिन रूबी-डीबग के साथ वहां तक ​​रहने की कोई वास्तविक आवश्यकता नहीं है जब तक कि आप इसका उपयोग नहीं करना चाहते।

+0

मैं इसे अपने लिए समझने का दृढ़ संकल्प हूं, और यदि मैं करता हूं तो साझा करूंगा। आईएमओ बंडलर रेल के साथ कभी भी सबसे बुरी चीज है। – bioneuralnet

उत्तर

2

AFAIK आप ऐसा नहीं कर सकते क्योंकि रेल 3 सिस्टम रत्न को अलग करता है।

मेरा सुझाव है कि जेमफाइल में जेम को :require => false विकल्प के साथ जोड़ना है, इसलिए इसे शामिल किया गया है, लेकिन स्थापित नहीं किया गया है। फिर, आपके ऐप में, मैन्युअल रूप से मणि की आवश्यकता होती है।

या आप विक्रेता प्रोजेक्ट (रत्न के लिए एक फ़ोल्डर होना चाहिए) के भीतर अपनी परियोजना में इसे बंडल करने का प्रयास कर सकते हैं और अपने एससीएम में विशिष्ट मणि फ़ोल्डर को अनदेखा कर सकते हैं ताकि आपके सहकर्मी प्रभावित न हों।

+0

सुझाव के लिए धन्यवाद। हालांकि मैं वास्तव में मणि की स्थापना की आवश्यकता भी नफरत करता हूं।इस विशेष मणि की स्थापना हमेशा सीधी नहीं होती है और इसके परिणामस्वरूप 'बंडल इंस्टॉल' कमांड विफल हो जाता है :( –

3

यह वास्तव में बदसूरत है और यह अपने gemfile से बाहर खींच नहीं करता है, लेकिन मैं अपने Gemfile में ऐसा तो मैं अलग वातावरण में एक रत्न के लिए 2 अलग स्रोतों का उपयोग कर सकते हैं:

if ENV['MY_RDEBUG_VAR'] == "i_want_to_use_rdebug" 
    gem "ruby-debug" 
end 

बस इसे बनाने के एक अस्पष्ट वातावरण चर जो केवल आप ही अपने सिस्टम पर सेट करेंगे। इस तरह, आपके सहकर्मियों में env var set नहीं होगा और मणि उनके लिए कभी भी स्थापित या लोड नहीं होगा।

0

मैंने रेल कोड प्रारंभकर्ता को निम्नलिखित कोड जोड़ने और इसे फ़ाइल/जानकारी/फ़ाइल को बाहर करने में अनदेखा कर दिया।

$: << Bundler.bundle_path.join("gems", "ruby-debug19-0.11.6", "cli") 
$: << Bundler.bundle_path.join("gems", "ruby-debug-base19-0.11.24", "lib") 
$: << Bundler.bundle_path.join("gems", "linecache19-0.5.11", "lib") 
$: << Bundler.bundle_path.join("gems", "columnize-0.3.1", "lib") 
require 'ruby-debug' 

हालांकि यह काम करता है, मैं तथ्य यह है कि इन निर्भरताओं मणि फ़ाइल में रखा जा करने की जरूरत है को स्वीकार करता है, तो किसी को वास्तव में इस करना चाहिए पता नहीं है, शायद सबसे अच्छा है।

+0

इस समाधान का उपयोग अपने जोखिम पर करें। मेरा मानना ​​है कि उसने बाद में मेरे लिए काम करना बंद कर दिया है आरवीएम का संस्करण। आजकल मैं अपने रत्न में विकास समूह में रूबी-डीबग जोड़ता हूं। –

0

यह दोनों गहरे लाल रंग का 1.8 और 1,9

if RUBY_VERSION.include?('1.9') 
    ruby_debug = 'ruby-debug19' # new branch for ruby-debug that supports 1.9 
else 
    ruby_debug = 'ruby-debug' 
    gem 'fastercsv' # ruby 1.9 bundles FasterCSV now 
end 


group :test do 
    gem 'webrat' 
    gem "factory_girl" 
    gem 'shoulda' 

    # gem 'redgreen' 
    gem 'autotest-rails' 
    gem 'autotest-fsevent' 
    gem 'autotest' 
    gem ruby_debug 
end 

group :development do 
    gem ruby_debug 
end 
0

मैं जानता हूँ कि यह कुछ अन्य मामलों में जहां यह अच्छा होगा अगर वहाँ एक साफ तरीका यह है, था कवर नहीं करता है के साथ ruby_debug उपयोग करने के लिए अपने ही समाधान है - - autotest-growl और autotest-fsevent दिमाग में आते हैं, साथ ही साथ मेरे .irbrc में बहुत सारी चीजों की आवश्यकता होती है जो मुझे एक अच्छे अनुभव के लिए जरूरी है कि मैं हर किसी पर बल नहीं देना चाहता, जैसे कि विरबल और हिरब - लेकिन विशेष रूप से ruby-debug के लिए, ruby-debug-wrapper gem है सहायक यदि एकाधिक रूबी संस्करणों के खिलाफ परीक्षण आपके दर्द का हिस्सा है।

यदि आप ruby-debug के संस्करण को स्थापित करने से बचना चाहते हैं, तो मुझे लगता है कि अन्य विकल्पों ने सुझाए गए विकल्प वर्तमान में एकमात्र तरीके हैं।

संबंधित मुद्दे