2011-11-22 13 views
5

क्या रूबी सिस्टम कॉल से बंडल इंस्टॉल करना संभव है?सीएलआई/रूबी सिस्टम कॉल के माध्यम से बंडल इंस्टॉल

मैं एक पथ के अंतर्गत एक परियोजना के लिए जवाहरात और रन परीक्षण स्थापित करने के लिए कोशिश कर रहा हूँ ...

उदाहरण के लिए आदेश है:

"cd /some/other/project && bundle install && gem list && rspec spec" 

आदर्श रूप में मैं सिर्फ एक के माध्यम से परीक्षण चलाने के लिए चाहते हैं एक परियोजना में रेक फ़ाइल, जबकि यह सुनिश्चित करने के लिए कि उस परियोजना के लिए प्रासंगिक रत्न स्थापित हैं।

"cd /some/other/project && pwd" 

यह सही रास्ता देता है:

सीडी, सही ढंग से काम करने अगर मैं चलाने लगता है। लेकिन अगर मैं बंडल & & मणि वातावरण स्थापित करते हैं, यह वर्तमान फ़ोल्डर के लिए जवाहरात स्थापित करने के लिए लगता है और अन्य परियोजना से Gemfile उपयोग नहीं करता है, और बाद में rspec कल्पना काम नहीं करता।

संक्षेप में, क्या एक rakefile भी सुनिश्चित प्रासंगिक जवाहरात उपलब्ध हैं के भीतर एक अन्य परियोजना के लिए, उदाहरण के लिए 'rspec कल्पना' को चलाने के लिए सबसे अच्छा तरीका क्या है?

उत्तर

0

संपादित करें: मुझे लगता है मैं यह पता लगाने की है। देखें कि क्या यह आपके लिए काम करता है:

#@pwd is the "working directory of the execution... 

Dir.chdir @pwd do 
    so = "" 
    vars = { 
     "BUNDLE_GEMFILE" => nil, 
     "BUNDLE_BIN_PATH" => nil, 
     "RUBYOPT" => nil, 
     "rvm_" => nil, 
     "RACK_ENV" => nil, 
     "RAILS_ENV" => nil, 
     "PWD" => @pwd 
     } 
    options = { 
      :chdir=>@pwd 
      } 
    Open3.popen3(vars, cmd, options) do |stdin, stdout, stderr| 
    stdin.close_write 
    so = stdout.read 
    so = stderr.read if so.nil? || so == "" 
    end 

    so 
end 

मूल पोस्ट: मैं इस के साथ मेरे बाल बाहर फाड़ कर रहा हूँ। स्थापित | | मुझे लगता है कि यह बंडल कार्यकारी के साथ कुछ है अद्यतन वातावरण चर की स्थापना जब आप आवेदन शुरू, मैं कोशिश की है

bash -c "cd ../other/; bundle install; and it fails" मैं का उपयोग कर की कोशिश की है open3.popen ("बंडल स्थापित",: chdir = > "../ अन्य")

अगर यह किसी भी सांत्वना तुम पागल नहीं हैं, लेकिन मैं करने के लिए यह पता लगाने की कि यह कैसे तय करने के लिए नहीं कर पा रहे।

मैं भी कोशिश की open3.popen ("बंडल स्थापित", {: chdir => "../ अन्य",: unsetenv_others => झूठी}) लेकिन इस सिस्टम पथ से RVM को हटाने के ऊपर समाप्त होता है;

6

वास्तव में यह लग रहा है कि इस व्यवहार को प्राप्त करने के अधिकारी जिस तरह से इस तरह है:

Bundler.with_clean_env do 
    system "shell out" 
end  

मैं गूगल समूहों में जवाब से अधिक पाया: https://groups.google.com/d/msg/ruby-bundler/UufhzrliWfo/d51B_zARksUJ

0

kangguru के जवाब देने के लिए इसके अलावा, आप की जरूरत हो सकती

bundle install --deployment 

ताकि Bundler.with_clean_env आरवीएम द्वारा गड़बड़ न हो। यह आपके प्रोजेक्ट की जड़ में आपके सभी रत्नों की प्रतियां। विक्रेता/बंडल में स्थापित करता है, जिसे तब Bundler.with_clean_env कमांड द्वारा उठाया जाता है।

(एक टिप्पणी के रूप में इस डाल दिया है चाहेंगे, लेकिन मैं 50 + प्रतिष्ठा नहीं है)

+0

हा, सिर्फ महसूस किया कि मैं @easyjo साथ काम करता था। यह एक छोटी सी स्टैक ओवरफ्लो दुनिया है – xavriley

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