Ruby Capistrano curl命令中未终止的引号字符串

Ruby Capistrano curl命令中未终止的引号字符串,ruby,capistrano,cloudflare,Ruby,Capistrano,Cloudflare,我尝试了我能想到的单引号、双引号和反斜杠的每一种组合。如果有人能指出我做错了什么,我将不胜感激 run_locally do execute "\\curl -X POST \"https://api.cloudflare.com/client/v4/zones/#{fetch(:cloudflare_zone)}/purge_cache\" \ -H \"X-Auth-Email: test@example.com\" \ -H \"X-Auth-Key: #{fetc

我尝试了我能想到的单引号、双引号和反斜杠的每一种组合。如果有人能指出我做错了什么,我将不胜感激

run_locally do
    execute "\\curl -X POST \"https://api.cloudflare.com/client/v4/zones/#{fetch(:cloudflare_zone)}/purge_cache\" \
    -H \"X-Auth-Email: test@example.com\" \
    -H \"X-Auth-Key: #{fetch(:cloudflare_api)}\" \
    -H \"Content-Type: application/json\" \
    --data {\"purge_everything\":true}\""
end
我的capistrano脚本每次碰到这个都会死掉。我觉得这是最后一行,但我不知道为什么

编辑:我已经克服了那个错误,但现在从Cloudflare获取“请求体中格式错误的JSON”

run_locally do
            execute "\\curl -X POST \"https://api.cloudflare.com/client/v4/zones/#{fetch(:cloudflare_zone)}/purge_cache\" \
    -H \"X-Auth-Email: test@example.com\" \
    -H \"X-Auth-Key: #{fetch(:cloudflare_api)}\" \
    -H \"Content-Type: application/json\" \
    --data \"{\"purge_everything\":true}\" "
end

因此,由于某些原因,它不喜欢我的--data部分。

我无法直接为您检查这一点,但您可以使用其他字符串构造以更清晰的方式来执行此操作,这将有希望为您突出这一问题

run_locally do
  execute %{curl -X POST "https://api.cloudflare.com/client/v4/zones/#{fetch(:cloudflare_zone)}/purge_cache" \
    -H "X-Auth-Email: test@example.com" \
    -H "X-Auth-Key: #{fetch(:cloudflare_api)}" \
    -H "Content-Type: application/json" \
    --data '{"purge_everything":true}'}
  end
可能是JSON中嵌套的双引号导致了问题