lib/lacquer/varnish.rb in posterous-lacquer-0.2.3 vs lib/lacquer/varnish.rb in posterous-lacquer-0.2.4
- old
+ new
@@ -5,54 +5,53 @@
stats = stats.split("\n")
stats.shift
stats = stats.collect do |stat|
stat = stat.strip.match(/(\d+)\s+(.+)$/)
- { :key => stat[2], :value => stat[1] }
+ { :key => stat[2], :value => stat[1] } if stat
end
end
end
def purge(path)
send_command('url.purge ' << path).all? do |result|
result =~ /200/
end
end
- private
+ # private
- # Sends commands over telnet to varnish servers listed in the config.
+ # Sends commands over telnet to varnish servers listed in the config.
def send_command(command)
Lacquer.configuration.varnish_servers.collect do |server|
+ # RAILS_DEFAULT_LOGGER.debug("POSTEROUS_LACQUER_DEBUG: running(#{command.inspect}) on #{server.inspect}")
retries = 0
+ response = nil
begin
retries += 1
- response = []
connection = Net::Telnet.new(
'Host' => server[:host],
'Port' => server[:port],
'Timeout' => server[:timeout] || 5)
- connection.cmd(command) do |c|
- response.push c.strip
- c.strip
- end
+ connection.cmd(command + "\nquit\n") {|r| response = r.strip}
+ connection.close
rescue Exception => e
if retries < Lacquer.configuration.retries
retry
else
if Lacquer.configuration.command_error_handler
Lacquer.configuration.command_error_handler.call({
:error_class => "Varnish Error, retried #{Lacquer.configuration.retries} times",
:error_message => "Error while trying to connect to #{server[:host]}:#{server[:port]}: #{e}",
:parameters => server,
- :response => response.join("\n")})
+ :response => response})
else
raise VarnishError.new("Error while trying to connect to #{server[:host]}:#{server[:port]} #{e}")
end
- end
- ensure
- connection.close rescue nil
+ end
end
+ response
end
end
+
end
end