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

Ave*_*ery 7 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}")
Run Code Online (Sandbox Code Playgroud)

它不起作用.我如何在ruby中执行此操作?我用Google搜索了'ruby system curl',但我只是有一堆链接将curl整合到ruby中(这不是我感兴趣的).

Jon*_*röm 7

很多方法

REFRESH_DRADIS_URL = "https://redmineserver+webappkey"
result = `/usr/bin/curl --insecure #{REFRESH_DRADIS_URL}`
Run Code Online (Sandbox Code Playgroud)

但我认为你根本不必使用卷曲.试试这个

require 'open-uri'
open(REFRESH_DRADIS_URL)
Run Code Online (Sandbox Code Playgroud)

如果证书无效,那么它会变得更复杂一些

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("/")
Run Code Online (Sandbox Code Playgroud)


Bri*_*zan 6

system ("curl --insecure #{url}")
Run Code Online (Sandbox Code Playgroud)


Jör*_*tag 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('/')
Run Code Online (Sandbox Code Playgroud)

对于更复杂的问题,我仍然不会使用 Ruby 绑定curl,而是使用众多 Ruby 绑定之一libcurl