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

时间:2018-08-30 13:52:01

标签: 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: #{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部分。

1 个答案:

答案 0 :(得分:0)

我无法直接为您检查此问题,但是您可以使用其他字符串结构以更清晰的方式执行此操作,希望可以为您突出显示该问题。

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中嵌套的双引号引起了问题。