Ruby对卷曲进行系统调用的正确语法是什么?

时间:2010-09-16 12:55:55

标签: ruby curl

要刷新Redmine,我需要SVN从我们的post-commit钩子ping我们的Redmine安装。我们的post-commit钩子是一个生成电子邮件的Ruby脚本。我想插入一个电话来做这个:

curl --insecure https://redmineserver+webappkey

此调用可以从命令行进行,但是当我尝试执行此操作时:

#!/usr/bin/ruby -w

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

它不起作用。我如何在ruby中执行此操作?我搜索了'ruby系统卷曲',但我只是有一堆链接将卷曲整合到红宝石中(这不是我感兴趣的)。

4 个答案:

答案 0 :(得分: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("/")

答案 1 :(得分:6)

system ("curl --insecure #{url}")

答案 2 :(得分: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,而是使用众多Ruby libcurl绑定中的一个。

答案 3 :(得分:1)

我最近必须这样做,并尝试了以下工作:

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