打印每个卷曲的参数

时间:2014-01-13 14:16:10

标签: ruby ruby-on-rails-3.2

我需要增加用户和用户但是当我在curl中写我的变量时,当我尝试它时我什么都没得到

(1..180000).step(20000)do |userb|
 (20000..180000).step(20000)do |usere|
curl = %x[ curl -i -s -H "Host: xxxx" "http://XXXXX/scripts/exportStatsCsv/testA1?start='+ userb +'&end='+ usere +'&startDate='#{@array_timestampdate[0]}'&endDate='#{@array_timestampdate[1]}'" ]                                                                                                 sleep(10)  
  end 
end 

1 个答案:

答案 0 :(得分:1)

尝试运行代码并启用警告和调试:

ruby -cW2 path/to/your/code

您应该看到类似的内容:

syntax error, unexpected tIDENTIFIER, expecting keyword_end
...                          sleep(10)
...                               ^

当您遇到问题时,您需要首先执行此操作。当启用警告并设置为最高值时,Ruby将为您提供有关脚本问题的更多详细信息。这是标志的意思:

  -c              check syntax only
  -W[level=2]     set warning level; 0=silence, 1=medium, 2=verbose

您收到此错误,因为sleep(10)需要作为单独的语句执行。您可以在它之间插入;,以及调用cURL,或将其放在一行上。我建议使用第二个选项,以便更容易阅读命令。

另外,我强烈建议使用Curb gem而不是像你一样在子shell中启动cURL。你正在失去灵活性并浪费CPU时间使用Ruby,然后是操作系统,创建一个新的shell来启动cURL。

最后,您需要学会更清晰地编写代码,否则您很快就会陷入混乱的角落。这是我编写代码的起点:

require 'uri'

@array_timestampdate = ['start_date', 'end_date']

(1..180000).step(20000) do |userb|
  (20000..180000).step(20000) do |usere|

    uri = URI.parse('http://XXXXX/scripts/exportStatsCsv/testA1')
    uri.query = URI.encode_www_form(
      {
        'start'     => userb,
        'end'       => usere,
        'startDate' => @array_timestampdate[0],
        'endDate'   => @array_timestampdate[1]
      }
    )
    curl = %Q[ curl -i -s -H "Host: xxxx" "#{uri.to_s}" ]

    puts curl
  end 
end 

输出一个小例子:

>> curl -i -s -H "Host: xxxx" "http://XXXXX/scripts/exportStatsCsv/testA1?start=1&end=20000&startDate=start_date&endDate=end_date"
...
>> curl -i -s -H "Host: xxxx" "http://XXXXX/scripts/exportStatsCsv/testA1?start=160001&end=180000&startDate=start_date&endDate=end_date"