2013-07-04 5 views
9

जब मैं bundle exec का उपयोग कर आदेशों को लागू यह पैरामीटर मैं में पारित लेता है इस के लिए एक उदाहरण होगा:।"बंडल निष्पादन" मेरे द्वारा पारित पैरामीटर क्यों खाता है?

bundle exec my_command run --verbose 

इस मामले --verbose में एक बंडलर तर्क के रूप में यह my_command के लिए इस्तेमाल किया जाना चाहिए जहां के रूप में प्रयोग किया जाता है। मुझे पता है कि निम्न तरीके से काम करेगा:

bundle exec 'my_command run --verbose' 

क्या उद्धरण से बचना संभव है? मेरे द्वारा उपयोग किए जाने वाले आदेश में पहले से ही बहुत सारे उद्धरण हैं। मुझे उम्मीद थी कि ऐसा कुछ काम करेगा लेकिन यह नहीं था:

bundle exec -- my_command run --verbose 

मुझे इस बारे में बंडलर के लिए अधिक दस्तावेज नहीं दिखाई देता है। किसी भी विचार की बहुत प्रशंसा की जाएगी।

+0

मुझे यह समस्या नहीं है, आप किस बंडलर का उपयोग कर रहे हैं? – Shelvacu

+0

मैं बंडलर संस्करण 1.3.5 – arangamani

उत्तर

2

source of bundler से निरीक्षण करने से यह bundle exec के बाद Kernel.exec के सभी मापदंडों पारित करने के लिए डिफ़ॉल्ट व्यवहार है, इसलिए --verbose मापदंडों अपने आदेश, नहीं bundle को दे दिया जाएगा।

bundle exec my_command run --verbose 

क्योंकि कोई आदेश/लिपि -- नाम पर है एक त्रुटि में बंडल

Kernel.exec('my_command', 'run', '--verbose') 

और

bundle exec -- my_command run --verbose 

परिणाम के संदर्भ के अंतर्गत निम्नलिखित चलेंगे।

चेक यहाँ परीक्षण का मामला:

#!/usr/bin/env ruby 
# coding: utf-8 
# file: test.rb 

p ARGV 

परीक्षण:

$ bundle exec ruby test.rb --verbose --arg1 
["--verbose", "--arg1"] 
11

यह वही है एक आम समस्या है जब खोल में एक से दूसरे आदेश पारित करने की तरह लग रहा है, और यह आप की तरह लग रहा ' मैं जो उपयोग करूंगा उसके करीब आऊंगा।

bundle exec my_command run --verbose 

या::

bundle exec -- my_command run --verbose 

प्रयास करें:

bundle exec my_command -- run --verbose 

bundle exec -- टूटता bundle exec के लिए आदेश-श्रृंखला का उपयोग करने के बजाय का उपयोग करने का। execbundle और my_command के लिए उप-आदेश है exec के लिए पैरामीटर है। my_command के लिए पैरामीटर, ठीक है, न तो bundle या exec उनके बारे में जानना आवश्यक है ताकि -- जा सके जहां आप पैरामीटर की उस श्रृंखला को bundle पर तोड़ना चाहते हैं।

+0

का उपयोग कर रहा हूं उदाहरण के लिए, एक विशिष्ट ActiveSupport :: TestCase 'बंडल exec ruby ​​- test/unit/class_test.rb -n '/ test_a_method /'' – eebbesen

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