rulesio 0.9.3 → 0.9.6
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 +2 -0
- data/lib/rulesio/railtie.rb +9 -1
- data/lib/rulesio/users.rb +9 -1
- data/lib/rulesio/version.rb +1 -1
- data/lib/rulesio.rb +10 -4
- metadata +2 -2
data/README.md
CHANGED
@@ -26,6 +26,7 @@ You should create two incoming channels (event streams) in rules.io, and configu
|
|
26
26
|
middleware :exceptions do # automatically generate events for exceptions
|
27
27
|
token 'ERROR_CHANNEL_TOKEN' # separate channel for error-centric events
|
28
28
|
end
|
29
|
+
disable_sending_events if Rails.env.test? || Rails.env.development?
|
29
30
|
|
30
31
|
###As general-purpose Rack middleware, with or without Rails
|
31
32
|
|
@@ -87,6 +88,7 @@ Options
|
|
87
88
|
RulesIO::Rack accepts these options:
|
88
89
|
|
89
90
|
* `token` -- the token for a rules.io channel
|
91
|
+
* `disable_sending_events` -- you probably want to include this directive for your test and development environments
|
90
92
|
* `webhook_url` -- defaults to 'https://www.rules.io/events'
|
91
93
|
* `middleware` -- takes the symbol for a middleware and a block, configuring it
|
92
94
|
* `queue` -- takes the class used for queuing (default: RulesIO::MemoryQueue), and an optional hash; see the section on girl_friday for examples
|
data/lib/rulesio/railtie.rb
CHANGED
@@ -3,10 +3,11 @@ require 'active_record'
|
|
3
3
|
|
4
4
|
module RulesIO
|
5
5
|
class RailsConfigurator
|
6
|
-
attr_accessor :token, :webhook_url, :middlewares, :queue, :controller_data, :queue_options
|
6
|
+
attr_accessor :token, :webhook_url, :middlewares, :queue, :controller_data, :queue_options, :disable
|
7
7
|
def initialize
|
8
8
|
@webhook_url = 'https://www.rules.io/events/'
|
9
9
|
@middlewares = {}
|
10
|
+
@disable = false
|
10
11
|
end
|
11
12
|
|
12
13
|
def token(token)
|
@@ -25,6 +26,10 @@ module RulesIO
|
|
25
26
|
@queue = queue
|
26
27
|
@queue_options = options
|
27
28
|
end
|
29
|
+
|
30
|
+
def disable_sending_events
|
31
|
+
@disable = true
|
32
|
+
end
|
28
33
|
|
29
34
|
def controller_data(data)
|
30
35
|
@controller_data = data
|
@@ -75,6 +80,7 @@ module RulesIO
|
|
75
80
|
if defined?(::Rails.configuration) && ::Rails.configuration.respond_to?(:middleware)
|
76
81
|
::Rails.configuration.middleware.insert_after 'ActionDispatch::Static', 'RulesIO::Rack',
|
77
82
|
:webhook_url => @webhook_url,
|
83
|
+
:disable_sending_events => @disable,
|
78
84
|
:token => @token,
|
79
85
|
:queue => @queue,
|
80
86
|
:queue_options => @queue_options,
|
@@ -84,6 +90,8 @@ module RulesIO
|
|
84
90
|
::Rails.configuration.middleware.use('RulesIO::Exceptions', @middlewares[:exceptions].configuration) if @middlewares.has_key?(:exceptions)
|
85
91
|
end
|
86
92
|
end
|
93
|
+
else
|
94
|
+
puts 'Warning: rulesio configuration file not found in config/rulesio.rb'
|
87
95
|
end
|
88
96
|
end
|
89
97
|
|
data/lib/rulesio/users.rb
CHANGED
@@ -46,8 +46,13 @@ module RulesIO
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def event(env, status, duration)
|
49
|
+
domain = if (status.to_i >= 400)
|
50
|
+
'pageerror'
|
51
|
+
else
|
52
|
+
(env['rulesio.request_method'] == 'GET') ? 'pageview' : 'formpost'
|
53
|
+
end
|
49
54
|
event = {
|
50
|
-
:_domain =>
|
55
|
+
:_domain => domain,
|
51
56
|
:status => status,
|
52
57
|
:duration => "%.2f" % (duration * 1000)
|
53
58
|
}
|
@@ -55,6 +60,9 @@ module RulesIO
|
|
55
60
|
event[:_xactor] = actor_for_exception(exception)
|
56
61
|
event[:_message] = exception.to_s
|
57
62
|
end
|
63
|
+
if domain == 'pageerror' && status.to_i < 500
|
64
|
+
event[:_message] = "#{status}: #{::Rack::Utils::HTTP_STATUS_CODES[status.to_i]}"
|
65
|
+
end
|
58
66
|
event.merge!(@options[:custom_data].call(env))
|
59
67
|
event
|
60
68
|
end
|
data/lib/rulesio/version.rb
CHANGED
data/lib/rulesio.rb
CHANGED
@@ -11,7 +11,7 @@ require 'active_support/core_ext/module/attribute_accessors'
|
|
11
11
|
require 'active_support/core_ext/hash/indifferent_access'
|
12
12
|
|
13
13
|
module RulesIO
|
14
|
-
mattr_accessor :filter_parameters, :buffer, :token, :webhook_url, :queue, :queue_options, :controller_data, :logger
|
14
|
+
mattr_accessor :filter_parameters, :buffer, :token, :webhook_url, :queue, :queue_options, :controller_data, :logger, :disable_sending_events
|
15
15
|
|
16
16
|
def self.default_ignored_crawlers
|
17
17
|
%w(Baidu Gigabot Googlebot libwww-perl lwp-trivial msnbot SiteUptime Slurp WordPress ZIBB ZyBorg Yandex Jyxobot Huaweisymantecspider ApptusBot NewRelicPinger)
|
@@ -29,6 +29,7 @@ module RulesIO
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def self.post_payload_to_token(payload, token)
|
32
|
+
return if RulesIO.disable_sending_events
|
32
33
|
uri = URI(RulesIO.webhook_url + token)
|
33
34
|
req = Net::HTTP::Post.new(uri.path)
|
34
35
|
req.body = payload.to_json
|
@@ -98,14 +99,16 @@ module RulesIO
|
|
98
99
|
params = request.params
|
99
100
|
action = page_event_name(request, params)
|
100
101
|
|
102
|
+
event[:_domain] = 'JSON' if event[:_domain] == 'pageview' && params['format'] == 'json'
|
103
|
+
event[:_domain] = 'XML' if event[:_domain] == 'pageview' && params['format'] == 'xml'
|
101
104
|
event[:_name] ||= action
|
102
105
|
event[:_from] ||= current_user.email if current_user && current_user.respond_to?(:email) && current_user.email != event[:_actor]
|
103
106
|
event[:action] = action
|
104
107
|
event[:request_url] = env['rulesio.request_url']
|
105
|
-
event[:request_method] =
|
108
|
+
event[:request_method] = env['rulesio.request_method']
|
106
109
|
event[:user_agent] = request.user_agent
|
107
110
|
event[:referer_url] = request.referer
|
108
|
-
event[:params] = params.except(*RulesIO.filter_parameters)
|
111
|
+
event[:params] = params.except(*RulesIO.filter_parameters).reject{|k,v|k =~ /password/}
|
109
112
|
event[:session] = request.session
|
110
113
|
end
|
111
114
|
|
@@ -124,11 +127,14 @@ module RulesIO
|
|
124
127
|
RulesIO.queue = options[:queue] || RulesIO::MemoryQueue
|
125
128
|
RulesIO.queue_options = options[:queue_options] || {}
|
126
129
|
RulesIO.controller_data = options[:controller_data] || '{}'
|
130
|
+
RulesIO.disable_sending_events = options[:disable_sending_events] || false
|
127
131
|
end
|
128
132
|
|
129
133
|
def call(env)
|
130
134
|
RulesIO.buffer = []
|
131
|
-
|
135
|
+
request = ::Rack::Request.new(env)
|
136
|
+
env['rulesio.request_url'] = request.url
|
137
|
+
env['rulesio.request_method'] = request.request_method
|
132
138
|
@app.call(env)
|
133
139
|
ensure
|
134
140
|
RulesIO.flush(env)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rulesio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-09-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|