尝试' PURGE'使用路边的清漆

时间:2015-06-26 14:20:18

标签: ruby varnish curb

我试图使用' curb'宝石送一个' PURGE'请求我们的清漆盒,问题是它似乎无法正常工作。

我无法判断它是否失败,因为它没有在我们的清漆盒中实现(它应该已经存在)或因为路边没有发送请求作为清除而非作为获取。

这是实际发出请求的函数:

    def make_request_of (request_method)
        self.curl = Curl::Easy.new(self.uri) do |http|
            setup_request request_method, http
        end
        self.curl.ssl_verify_peer =  self.ssl ||false
        self.curl.http request_method
        if self.curl.response_code == 301
            self.uri =  self.curl.redirect_url
            make_request_of request_method
        end
    end

    def setup_request method,http
        http.headers['request-method'] = method.to_s
        http.headers.update(headers)
        http.max_redirects = self.redirects || 3
        http.post_body = self.payload || nil
        http.http_auth_types = self.auth_type || nil
        http.username = self.username || nil
        http.password = self.password || nil
        http.useragent = "curb"
        http
    end

运行时(使用两个清漆盒的IP)我得到了这个:

  • 200
  • 200

如果为true,则为此函数返回的值:

        def flush pattern
            results = ::YAML.load_file(self.varnish_ip_files_path).map do |ip|
                http = VCK::Http.request do 
                    set_uri "http://#{ip}/#{pattern}"
                end
                http.make_request_of 'PURGE'
                puts http.response
                case http.response
                    when 200
                        true
                    else
                        false
                end
            end
            !(results.reject! { |r| r }.length >= 1)
        end

我已尝试使用this answer发送“清除”' PURGE'请求,具体来说:

# see lib/curl.rb
module Curl
  # ...
  def self.patch(url, params={}, &block)
    http :PATCH, url, postalize(params), nil, &block
  end
  # ...
end

1 个答案:

答案 0 :(得分:0)

原来这是清漆后端,需要重新设计它以取消禁令而不是清除,需要让它工作但最终我的代码很好。