2017-01-04 7 views
33

में नए ब्लॉक "git_source (: github)" का अर्थ हाल ही में मैंने एक गिट भंडार के बिना एक नया रेल 5 ऐप बनाया है। ऑटो-जेनरेटेड जेमफाइल में एक नया ब्लॉक शामिल है जिसे मैंने पहले नहीं देखा था:जेमफाइल

git_source(:github) do |repo_name| 
    repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/") 
    "https://github.com/#{repo_name}.git" 
end 

इसका क्या अर्थ है? क्या यह हर नए ऐप के लिए अनिवार्य है?

उत्तर

29

यह विरासत कोड का एक टुकड़ा है और इसे सबसे अधिक हटा दिया जाना चाहिए।

जोड़ा गया: इसके बंडलर में एक बग जो GitHub से स्रोतों पैदा कर सकता है के लिए एक समाधान के माध्यम से HTTP और HTTPS नहीं लोड करने के लिए - जो इसे मिडिल हमलों में आदमी की चपेट में आता है।

git_source एक स्रोत जोड़ता है जिसका आप उपयोग कर सकते हैं ताकि मणि rubygems.org से पैकेज के बजाय गिट रिपोजिटरी से डाउनलोड किया जा सके।

git_source(:github) do |repo_name| 
    repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/") 
    "https://github.com/#{repo_name}.git" 
end 

यह कर सकते हैं ताकि जब आप की घोषणा:

gem 'foo_bar', :github => 'foo/bar' 

Bundler https://github.com/foo/bar.git से मणि डाउनलोड करने का प्रयास करेंगे।

fixing this would be a breaking change के बाद से यह किसी भी मौजूदा Gemfile को अमान्य कर देगा। इसे बंडलर 2.x में ठीक किया गया है। उस बिंदु पर यह इस कामकाज को हटाने के लिए सुरक्षित होना चाहिए।

+0

फिर, क्या यह हाल ही में कुछ मणि से अपडेट की गई एक त्रुटि है? कौन सा मणि –

+0

इस समस्या के आसपास काम करने का एक और तरीका है 'बंडल कॉन्फ़िगरेशन github.https true' – Stefan

+0

True @Stefan सेट करना। लेकिन कोई भी टीम अपने सबसे अजीब सदस्य के रूप में सुरक्षित है। – max

14

बंडलर: जिथब निर्देश git://github.com/#{repo_name}.git (source) से प्राप्त होगा, जो असुरक्षित http प्रोटोकॉल का उपयोग करता है।

यह भविष्य Bundler संस्करणों में तय किया की वजह से है, लेकिन यह टुकड़ा Gemfile के शीर्ष में जोड़ा जाता है https सुनिश्चित करने के लिए Bundler 1.

4

में प्रयोग किया जाता है आप अपने gemfile लिए इस कोड को जोड़ने के लिए नहीं करना चाहते हैं लेकिन अभी भी गीथब से एक मणि को सुरक्षित रूप से एक्सेस करना चाहते हैं, आप निम्न विधि का उपयोग कर सकते हैं:

gem 'foo_bar', git: 'https://github.com/foo/bar.git 
संबंधित मुद्दे