ruby 猴子补丁用keen.io保存查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 猴子补丁用keen.io保存查询相关的知识,希望对你有一定的参考价值。

require 'keen'

#
# Patch keen gem to allow saved queries
#

module Keen
  module HTTP
    class Sync
      def put(options)
        path, headers, body = options.values_at(
          :path, :headers, :body)
          @http.put(path, body, headers)
      end
    end
  end
end

module Keen
  class Client
    module SavingMethods
      def save_query(query_name, properties)
        ensure_project_id!
        ensure_write_key!
        save_body(
          api_saved_query_resource_path(query_name),
          MultiJson.encode(properties),
          'save')
      end

      private

      def save_body(path, body, error_method)
        begin
          response = Keen::HTTP::Sync.new(
            self.api_url, self.proxy_url).put(
              :path => path,
              :headers => api_headers(self.master_key, 'sync'),
              :body => body)
        rescue Exception => http_error
          raise HttpError.new("HTTP #{error_method} failure: #{http_error.message}", http_error)
        end
        process_response(response.code, response.body.chomp)
      end

      def api_saved_query_resource_path(query_name)
        "/#{self.api_version}/projects/#{self.project_id}/saved_queries/#{query_name}"
      end
    end
  end

  Client.__send__(:include, Keen::Client::SavingMethods)
end

module Keen
  class << self
    def_delegators :default_client,
                   :save_query
  end
end
Keen.save_query('message_by_weekday', {
  analysis_type: 'count',
  event_collection: 'message_received',
  group_by: 'time.wday',
})

以上是关于ruby 猴子补丁用keen.io保存查询的主要内容,如果未能解决你的问题,请参考以下文章

您如何检测到 Ruby 中发生了猴子补丁?

ruby 因为没人喜欢猴子补丁。

ruby 猴子补丁模式

ruby 猴子补丁模式

寻找可能导致麻烦的 Ruby 猴子补丁的来源?

ruby 该要点向您展示了如何运行保留分析。我在博客上写了如何在此处运行保留分析:https://keen.io/blog/47823687779