Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
curl从命令行运行,但不在ruby脚本中运行_Ruby_Windows_Curl - Fatal编程技术网

curl从命令行运行,但不在ruby脚本中运行

curl从命令行运行,但不在ruby脚本中运行,ruby,windows,curl,Ruby,Windows,Curl,下面的命令(及其变体)在mac的terminal中运行OK,在mac上执行的ruby程序中运行OK,在windows命令提示符中直接运行OK,但在windows上尝试在ruby文件中运行它时,由于解析错误而失败 curl -u"user:pwd" -d"{\"name\":\"new_repo_beepo\"}" https://api.github.com/user/repos --insecure 我尝试过使用backticks、%x()和system来执行它。我也尝试过替换字符串和jso

下面的命令(及其变体)在mac的terminal中运行OK,在mac上执行的ruby程序中运行OK,在windows命令提示符中直接运行OK,但在windows上尝试在ruby文件中运行它时,由于解析错误而失败

curl -u"user:pwd" -d"{\"name\":\"new_repo_beepo\"}" https://api.github.com/user/repos --insecure
我尝试过使用backticks、%x()和system来执行它。我也尝试过替换字符串和json'ing片段,但没有任何运气。根据我所能确定的,失败点在
-d“{\“name\”:\“repo\u name\”}”
部分,但这只是尝试不使用它的命令。不管怎样,在ruby中windows上的每个命令变体中,我都会得到一个JSON解析错误。

您是否尝试过使用

这是一块宝石,效果很好。它可能比使用
system()
%x()
更好,而且肯定更安全(您可以在
system()
上插入恶意bash命令,因此需要小心使用)

它使用起来很简单。只需安装gem并将其作为ruby文件之一

注意:如果使用Rails,只需将其添加到您的GEM文件中(无需在每个文件上都需要它)


您还可以为
--unsecure
ssl使用一些参数。

这可能是ruby用于在windows上运行命令的shell机制的解析/引用问题。您是否尝试过系统的标记化形式,例如:

system('curl', '-u"user:pwd"', '-d"{"name":"new_repo_beepo"}"', 'https://api.github.com/user/repos', '--insecure')
在posix上,将指定的arg向量直接发送到执行程序,而不让shell碍事;对于windows,可能也有相同的语义


您不需要执行curl来执行此操作,因为ruby具有stdlib Net::HTTP。在您的评论中提到,您在jruby下使用此模块时遇到问题,但我们这里有jruby服务可以很好地执行http[s]请求,因此,您可以尝试发布一个问题,以解决jruby和本机http客户端libs的具体问题。

ruby在windows上运行命令时使用的shell机制可能存在解析/引用问题。您是否尝试过
system
的标记化形式,例如:
system('curl','-u“user:pwd”,'-d…,…)
?在posix上,它会将指定的arg向量直接发送到已执行程序,而不会让shell碍事。为什么要卷曲呢?在ruby中,您可以使用Net::HTTP直接执行此操作。谢谢,dbenhur——今天下午我将给标记化表单一个快照。至于你的另一个问题,我们的系统运行jruby,而本机扩展对于Net:HTTP、URB和我发现的其他版本来说似乎是个问题。@dbenhur:标记化版本工作得很好!非常感谢@德本胡尔:顺便说一下,如果你想提交与答案相同的建议,我会选择它。
system('curl', '-u"user:pwd"', '-d"{"name":"new_repo_beepo"}"', 'https://api.github.com/user/repos', '--insecure')