framed_rails 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -69,6 +69,15 @@ Configuration
69
69
  <td>false</td>
70
70
  </tr>
71
71
 
72
+ <tr>
73
+ <td>:excluded_params</td>
74
+ <td>An array of request parameter keys to never send to Framed. <code>:controller</code>, <code>:action</code>,
75
+ <code>:utf8</code>, <code>:authenticity_token</code>, <code>:commit</code>, and <code>:password</code> are never
76
+ sent, and anything added here is in addition to default values.
77
+ </td>
78
+ <td>[]</td>
79
+ </tr>
80
+
72
81
  </table>
73
82
 
74
83
  Emitters
data/lib/framed/client.rb CHANGED
@@ -16,7 +16,7 @@ module Framed
16
16
  end
17
17
 
18
18
  def track(data)
19
- Framed.logger.info("Client#track #{data.length}")
19
+ Framed.log_info("Client#track #{data.length} events")
20
20
 
21
21
  creds = Base64.strict_encode64(@config[:api_key] + ':')
22
22
  payload = JSON.generate(data)
@@ -27,7 +27,7 @@ module Framed
27
27
  begin
28
28
  @client.track(events)
29
29
  rescue Exception => exc
30
- Framed.logger.error("framed_rails: transmit failed: #{exc}")
30
+ Framed.log_error("#transmit failed: #{exc}")
31
31
  end
32
32
  end
33
33
  end
@@ -47,7 +47,7 @@ module Framed
47
47
 
48
48
  class Logger < Base
49
49
  def enqueue(event)
50
- Framed.logger.info(JSON.generate(event))
50
+ Framed.log_info(JSON.generate(event))
51
51
  end
52
52
  end
53
53
 
@@ -78,7 +78,7 @@ module Framed
78
78
 
79
79
  def start
80
80
  if @request_thread and !@request_thread.alive?
81
- Framed.logger.error("Starting request thread due to dead thread")
81
+ Framed.log_info("Starting request thread due to dead thread")
82
82
  end
83
83
 
84
84
  @request_thread = Thread.new do
@@ -116,7 +116,7 @@ module Framed
116
116
  end
117
117
 
118
118
  def warn_full(event)
119
- Framed.logger.error("Queued #{event} to framed, but queue is full. Dropping event.")
119
+ Framed.log_error("Queued #{event} to Framed, but queue is full. Dropping event.")
120
120
  end
121
121
 
122
122
  def enqueue(event)
@@ -179,7 +179,7 @@ module Framed
179
179
  begin
180
180
  @client.track(events)
181
181
  rescue Exception => exc
182
- Framed.logger.error("framed_rails: transmit failed: #{exc}")
182
+ Framed.log_error("#transmit failed: #{exc}")
183
183
  end
184
184
  end
185
185
  end
data/lib/framed/rails.rb CHANGED
@@ -6,28 +6,43 @@ ActionController::Base.class_eval do
6
6
  "#{request.method}_#{params[:controller]}\##{params[:action]}"
7
7
  end
8
8
 
9
+ # XHR requests are not sent unless explictly enabled or Turbolinks, which
10
+ # is a special kind of XHR
9
11
  def framed_included?(request)
10
12
  return true if Framed.configuration[:include_xhr]
11
- # include Turbolinks requests (which are a special kind of XHR)
12
13
  return true if request.headers.include?('X-XHR-Referer')
13
14
 
14
15
  !request.xhr?
15
16
  end
16
17
 
18
+ def framed_get_or_make_anonymous_id
19
+ anonymous_id = cookies.signed[Framed.anonymous_cookie]
20
+
21
+ if anonymous_id.nil?
22
+ anonymous_id = Framed.new_anonymous_id
23
+ cookie = {:value => anonymous_id, :httponly => true}
24
+ cookies.signed.permanent[Framed.anonymous_cookie] = cookie
25
+ end
26
+
27
+ return anonymous_id
28
+ end
29
+
30
+ def framed_current_user_id
31
+ begin
32
+ current_user.try(:id)
33
+ rescue
34
+ nil
35
+ end
36
+ end
37
+
17
38
  def framed_report_request
18
39
  return unless framed_included?(request)
19
40
 
20
41
  begin
21
- anonymous_id = cookies.signed[Framed.anonymous_cookie]
42
+ anonymous_id = framed_get_or_make_anonymous_id
22
43
  user_id = send(Framed.user_id_controller_method)
44
+ cleaned_params = params.except(*Framed.excluded_params).to_h
23
45
 
24
- if anonymous_id.nil?
25
- anonymous_id = Framed.new_anonymous_id
26
- cookie = {:value => anonymous_id, :httponly => true}
27
- cookies.signed.permanent[Framed.anonymous_cookie] = cookie
28
- end
29
-
30
- cleaned_params = params.except(:controller, :action).to_h
31
46
  event = {
32
47
  :type => :track,
33
48
  :anonymous_id => anonymous_id,
@@ -46,15 +61,8 @@ ActionController::Base.class_eval do
46
61
 
47
62
  Framed.report(event)
48
63
  rescue Exception => exc
49
- Framed.logger.error("Failed to report request #{exc}")
64
+ Framed.log_error("Failed to report request #{exc}")
50
65
  end
51
66
  end
52
67
 
53
- def framed_current_user_id
54
- begin
55
- current_user.try(:id)
56
- rescue
57
- nil
58
- end
59
- end
60
68
  end
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+
2
3
  module Framed
3
- VERSION = "0.1.5"
4
+ VERSION = '0.1.7'
4
5
  end
data/lib/framed_rails.rb CHANGED
@@ -12,6 +12,15 @@ module Framed
12
12
  SEGMENT_API_ENDPOINT = 'https://api.segment.io/v1/track'
13
13
  FRAMED_API_ENDPOINT = 'https://intake.framed.io/events'
14
14
  COOKIE_NAME = 'framed_id'
15
+ LOG_PREFIX = '[framed_rails] '
16
+
17
+ DEFAULT_EXCLUDED_PARAMS =
18
+ [:controller,
19
+ :action,
20
+ :utf8,
21
+ :authenticity_token,
22
+ :commit,
23
+ :password]
15
24
 
16
25
  class << self
17
26
  attr_accessor :client, :consumer
@@ -23,10 +32,15 @@ module Framed
23
32
  :endpoint => Framed::FRAMED_API_ENDPOINT,
24
33
  :logger => Logger.new(STDERR),
25
34
  :anonymous_cookie => Framed::COOKIE_NAME,
26
- :include_xhr => false
35
+ :include_xhr => false,
36
+ :excluded_params => []
27
37
  }
28
38
  end
29
39
 
40
+ def excluded_params
41
+ (configuration[:excluded_params] + DEFAULT_EXCLUDED_PARAMS).uniq
42
+ end
43
+
30
44
  def configure(silent = false)
31
45
  yield configuration
32
46
  self.client = Client.new(configuration)
@@ -55,6 +69,14 @@ module Framed
55
69
  configuration[:logger]
56
70
  end
57
71
 
72
+ def log_info(msg)
73
+ logger.info(LOG_PREFIX + msg)
74
+ end
75
+
76
+ def log_error(msg)
77
+ logger.error(LOG_PREFIX + msg)
78
+ end
79
+
58
80
  def drain
59
81
  @consumer.stop(true) if @consumer
60
82
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: framed_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-08-28 00:00:00.000000000 Z
12
+ date: 2015-12-04 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: ! 'TK
15
15