2010-09-16 23 views
7

रेडमाइन रीफ्रेश करने के लिए, मुझे हमारे पोस्ट-प्रतिबद्ध हुक से हमारी Redmine स्थापना को पिंग करने के लिए एसवीएन की आवश्यकता है। हमारी पोस्ट-प्रतिबद्ध हुक एक रूबी स्क्रिप्ट है जो एक ईमेल उत्पन्न करती है। मैं एक कॉल ऐसा करने सम्मिलित करने के लिए करना चाहते हैं:रूबी को कर्ल करने के लिए सिस्टम कॉल करने के लिए सही वाक्यविन्यास क्या है?

curl --insecure https://redmineserver+webappkey

इस कॉल कमांड लाइन से काम करता है लेकिन जब मैं यह करने के लिए प्रयास करें:

#!/usr/bin/ruby -w 

REFRESH_DRADIS_URL = "https://redmineserver+webappkey" 
system("/usr/bin/curl", "--insecure", "#{REFRESH_DRADIS_URL}") 

यह काम नहीं करता। मैं रूबी में यह कैसे करूँ? मैंने 'रूबी सिस्टम कर्ल' को गुगल किया लेकिन मुझे रूबी में घुमाव को एकीकृत करने के लिए लिंक का एक गुच्छा मिला (जो मुझे रूचि नहीं है)।

+1

वैसे: स्ट्रिंग प्रक्षेप की बेकार उपयोग। –

उत्तर

4

इस तरह के एक साधारण सी समस्या के लिए, मैं curl के लिए बाहर बमबारी से परेशान नहीं होता नहीं है, तो बस

require 'net/https' 

http = Net::HTTP.new('redmineserver+webappkey', 443) 

http.use_ssl = true 
http.verify_mode = OpenSSL::SSL::VERIFY_NONE 

http.get('/') 

करना और अधिक जटिल समस्याओं के लिए, मैं अभी भी curl के लिए बाहर शेल नहीं, बल्कि कई में से एक का उपयोग करें रूबी libcurl बाइंडिंग्स।

+0

इसे एक उत्तर बनाना क्योंकि यह पहला समाधान था जो मेरे लिए काम करने वाले सबसे नज़दीक था। रुबी के लिए नए लोगों के लिए, HTTP.new() के लिए पहला तर्क सर्वर का यूआरआई है। http.get() एक तर्क के रूप में/से शुरू, यूआरएल लेता है। – Avery

7

वहाँ many ways

REFRESH_DRADIS_URL = "https://redmineserver+webappkey" 
result = `/usr/bin/curl --insecure #{REFRESH_DRADIS_URL}` 

रहे हैं, लेकिन मुझे नहीं लगता कि आप बिल्कुल कर्ल उपयोग करना होगा। इस

require 'open-uri' 
open(REFRESH_DRADIS_URL) 

मैं चाहता हूँ की कोशिश करें, प्रमाणपत्र मान्य तो यह हो जाता है एक छोटे से अधिक जटिल

require 'net/https' 
http = Net::HTTP.new("amazon.com", 443) 
http.use_ssl = true 
http.verify_mode = OpenSSL::SSL::VERIFY_NONE 
resp, data = http.get("/") 
+0

मुझे यह एक त्रुटि मिली। (StackOverflow मुझे पूरी चीज प्रिंट करने नहीं देगा, इसलिए यहां "महत्वपूर्ण हिस्सा" है)। चेतावनी: पोस्ट-प्रतिबद्ध हुक आउटपुट के साथ विफल (बाहर निकलने वाला कोड 1): /usr/lib/ruby/1.8/net/http.rb:5286:in 'कनेक्ट': SSL_connect लौटा = 1 errno = 0 स्थिति = SSLv3 पढ़ें सर्वर प्रमाणपत्र बी: प्रमाण पत्र सत्यापित विफल (OpenSSL :: SSL :: SSLError) – Avery

+0

अमान्य प्रमाणपत्रों को संभालने के लिए जोड़ा गया कोड। –

+0

'खुला ("# {REFRESH_DRADIS_URL}")' को खोलने के लिए सरलीकृत किया जा सकता है (REFRESH_DRADIS_URL) '। – eric

0

मैं इस हाल ही में करना था और निम्नलिखित की कोशिश की और यह काम किया:

test.rb

class CurlTest 
    def initialize() 
    end 
    def dumpCurl 
     test = `curl -v https://google.com 2>&1` 
     puts test 
    end 
end 

curlTest = CurlTest.new() 
curlTest.dumpCurl 
संबंधित मुद्दे

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