Class: PostHog::Client
- Inherits:
-
Object
- Object
- PostHog::Client
- Defined in:
- lib/posthog/client.rb
Constant Summary
Constants included from Utils
Utils::UTC_OFFSET_WITHOUT_COLON, Utils::UTC_OFFSET_WITH_COLON
Instance Method Summary collapse
-
#alias(attrs) ⇒ Object
Aliases a user from one id to another.
-
#capture(attrs) ⇒ Object
Captures an event.
-
#flush ⇒ Object
Synchronously waits until the worker has flushed the queue.
-
#identify(attrs) ⇒ Object
Identifies a user.
-
#initialize(opts = {}) ⇒ Client
constructor
A new instance of Client.
- #is_feature_enabled(flag_key, distinct_id, default_value = false) ⇒ Object
-
#queued_messages ⇒ Fixnum
Number of messages in the queue.
- #reload_feature_flags ⇒ Object
- #shutdown ⇒ Object
Methods included from Logging
Methods included from Utils
#date_in_iso8601, #datetime_in_iso8601, #formatted_offset, #isoify_dates, #isoify_dates!, #seconds_to_utc_offset, #stringify_keys, #symbolize_keys, #symbolize_keys!, #time_in_iso8601, #uid
Constructor Details
#initialize(opts = {}) ⇒ Client
Returns a new instance of Client.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/posthog/client.rb', line 21 def initialize(opts = {}) symbolize_keys!(opts) @queue = Queue.new @api_key = opts[:api_key] @max_queue_size = opts[:max_queue_size] || Defaults::Queue::MAX_SIZE @worker_mutex = Mutex.new @worker = Worker.new(@queue, @api_key, opts) @worker_thread = nil @feature_flags_poller = nil @personal_api_key = nil check_api_key! if opts[:personal_api_key].present? @personal_api_key = opts[:personal_api_key] @feature_flags_poller = FeatureFlagsPoller.new(opts[:feature_flags_polling_interval], opts[:personal_api_key], @api_key, opts[:host]) end at_exit { @worker_thread && @worker_thread[:should_exit] = true } end |
Instance Method Details
#alias(attrs) ⇒ Object
Aliases a user from one id to another
91 92 93 94 |
# File 'lib/posthog/client.rb', line 91 def alias(attrs) symbolize_keys! attrs enqueue(FieldParser.parse_for_alias(attrs)) end |
#capture(attrs) ⇒ Object
Captures an event
69 70 71 72 |
# File 'lib/posthog/client.rb', line 69 def capture(attrs) symbolize_keys! attrs enqueue(FieldParser.parse_for_capture(attrs)) end |
#flush ⇒ Object
Synchronously waits until the worker has flushed the queue.
Use only for scripts which are not long-running, and will specifically exit
49 50 51 52 53 54 |
# File 'lib/posthog/client.rb', line 49 def flush while !@queue.empty? || @worker.is_requesting? ensure_worker_running sleep(0.1) end end |
#identify(attrs) ⇒ Object
Identifies a user
80 81 82 83 |
# File 'lib/posthog/client.rb', line 80 def identify(attrs) symbolize_keys! attrs enqueue(FieldParser.parse_for_identify(attrs)) end |
#is_feature_enabled(flag_key, distinct_id, default_value = false) ⇒ Object
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/posthog/client.rb', line 101 def is_feature_enabled(flag_key, distinct_id, default_value=false) unless @personal_api_key logger.error('You need to specify a personal_api_key to use feature flags') return end is_enabled = @feature_flags_poller.is_feature_enabled(flag_key, distinct_id, default_value) capture({ 'distinct_id': distinct_id, 'event': '$feature_flag_called', 'properties': { '$feature_flag': flag_key, '$feature_flag_response': is_enabled } }) return is_enabled end |
#queued_messages ⇒ Fixnum
Returns number of messages in the queue.
97 98 99 |
# File 'lib/posthog/client.rb', line 97 def @queue.length end |
#reload_feature_flags ⇒ Object
118 119 120 121 122 123 124 |
# File 'lib/posthog/client.rb', line 118 def reload_feature_flags unless @personal_api_key logger.error('You need to specify a personal_api_key to use feature flags') return end @feature_flags_poller.load_feature_flags(true) end |
#shutdown ⇒ Object
126 127 128 129 |
# File 'lib/posthog/client.rb', line 126 def shutdown @feature_flags_poller.shutdown_poller flush end |