module Shellac class Cache include Singleton VARNISH_CONFIGURATION = YAML.load_file("#{Rails.root.to_s}/config/varnish.yml")[::Rails.env] # return client instance def client @client ||= Varnish::Client.new "#{config("host")}:#{config("port")}", :timeout => config("timeout"), :keep_alive => config("keep_alive") end # purge a regular expression of url def purge path, recursive=false if recursive regex = "^#{path}" # purge any page starting with regex else regex = "^#{path}$" end # write to log Rails.logger.info "Purging#{" (recursively)" if recursive}: #{path}" # purge with client.purge "req.http.host ~ ^#{config("host")} && req.url ~ #{regex}" end protected def config attr VARNISH_CONFIGURATION[attr] end end end