whenauser 0.4.4 → 0.5.0
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 +14 -8
- data/lib/whenauser/girl_friday_queue.rb +11 -1
- data/lib/whenauser/version.rb +1 -1
- data/lib/whenauser.rb +3 -1
- metadata +63 -69
data/README.md
CHANGED
@@ -22,14 +22,15 @@ In your Gemfile:
|
|
22
22
|
You should create two incoming channels (event streams) in WhenAUser, and configure their tokens in `config/whenauser.rb` (the available options are explained below). You may want to create additional channels to use in other environments, eg for staging.
|
23
23
|
|
24
24
|
token 'CHANNEL_TOKEN' # default channel (for user-centric events)
|
25
|
-
middleware :pageviews # automatically generate events for pageviews
|
25
|
+
middleware :pageviews # automatically generate events for requests/pageviews
|
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
29
|
|
30
|
-
###As general-purpose Rack middleware, without Rails
|
30
|
+
###As general-purpose Rack middleware, with or without Rails
|
31
31
|
|
32
|
-
config.middleware.
|
32
|
+
config.middleware.insert 0, 'WhenAUser::Rack', :token => 'CHANNEL_TOKEN'
|
33
|
+
config.middleware.insert_after 'WhenAUser::Rack', 'WhenAUser::Pageviews'
|
33
34
|
config.middleware.use 'WhenAUser::Exceptions', :token => 'ERROR_CHANNEL_TOKEN'
|
34
35
|
|
35
36
|
Using girl_friday for asynchronous communication and persistence
|
@@ -39,15 +40,20 @@ By default this gem sends a batch of events to the WhenAUser service synchronous
|
|
39
40
|
|
40
41
|
queue WhenAUser::GirlFridayQueue
|
41
42
|
|
42
|
-
|
43
|
+
Using the GirlFridayQueue also ensures that events are not lost should the WhenAUser service be temporarily unavailable.
|
43
44
|
|
44
|
-
|
45
|
-
|
45
|
+
You can also pass options to girl_friday. To avoid losing events when your app server instances restart, you can tell girl_friday to use Redis. In order to use the Redis backend, you must use the [connection_pool](https://github.com/mperham/connection_pool) gem to share a set of Redis connections with other threads and the GirlFriday queue. If you are not already using Redis in your application, add
|
46
|
+
|
47
|
+
gem 'connection_pool'
|
48
|
+
gem 'redis'
|
46
49
|
|
47
|
-
|
50
|
+
to your Gemfile, and add something like this to `config/whenauser.rb`:
|
48
51
|
|
52
|
+
require 'connection_pool'
|
53
|
+
|
54
|
+
redis_pool = ConnectionPool.new(:size => 5, :timeout => 5) { ::Redis.new }
|
49
55
|
queue WhenAUser::GirlFridayQueue,
|
50
|
-
:store => GirlFriday::Store::Redis, :store_config => { :pool =>
|
56
|
+
:store => GirlFriday::Store::Redis, :store_config => { :pool => redis_pool }
|
51
57
|
|
52
58
|
See the [girl_friday wiki](https://github.com/mperham/girl_friday/wiki) for more information on how to use girl_friday.
|
53
59
|
|
@@ -8,7 +8,17 @@ module WhenAUser
|
|
8
8
|
|
9
9
|
def initialize
|
10
10
|
super(:whenauser, {:size => 1}.merge(WhenAUser.queue_options)) do |msg|
|
11
|
-
|
11
|
+
retries = 0
|
12
|
+
begin
|
13
|
+
WhenAUser.post_payload_to_token msg[:payload], WhenAUser.token
|
14
|
+
rescue Exception => e
|
15
|
+
if (retries += 1) % 6 == 5
|
16
|
+
WhenAUser.logger.warn "WhenAUser having trouble sending events; #{retries} attempts so far."
|
17
|
+
end
|
18
|
+
sleep [5, retries].max
|
19
|
+
retry
|
20
|
+
end
|
21
|
+
WhenAUser.logger.warn "WhenAUser resuming service after #{retries} retries." unless retries == 0
|
12
22
|
end
|
13
23
|
end
|
14
24
|
|
data/lib/whenauser/version.rb
CHANGED
data/lib/whenauser.rb
CHANGED
@@ -6,10 +6,11 @@ require 'whenauser/girl_friday_queue'
|
|
6
6
|
require 'whenauser/memory_queue'
|
7
7
|
require 'net/http'
|
8
8
|
require 'uri'
|
9
|
+
require 'logger'
|
9
10
|
require 'active_support/core_ext/module/attribute_accessors'
|
10
11
|
|
11
12
|
module WhenAUser
|
12
|
-
mattr_accessor :
|
13
|
+
mattr_accessor :filter_parameters, :buffer, :token, :webhook_url, :queue, :queue_options, :logger
|
13
14
|
|
14
15
|
def self.default_ignored_crawlers
|
15
16
|
%w(Baidu Gigabot Googlebot libwww-perl lwp-trivial msnbot SiteUptime Slurp WordPress ZIBB ZyBorg Yandex Jyxobot Huaweisymantecspider ApptusBot)
|
@@ -45,6 +46,7 @@ module WhenAUser
|
|
45
46
|
class Rack
|
46
47
|
def initialize(app, options={})
|
47
48
|
@app = app
|
49
|
+
WhenAUser.logger = defined?(Rails) ? Rails.logger : Logger.new(STDOUT)
|
48
50
|
WhenAUser.webhook_url = options[:webhook_url] || 'http://www.whenauser.com/events/'
|
49
51
|
WhenAUser.buffer = []
|
50
52
|
WhenAUser.filter_parameters = defined?(Rails) ? Rails.application.config.filter_parameters : []
|
metadata
CHANGED
@@ -1,71 +1,72 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: whenauser
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 4
|
8
|
-
- 4
|
9
|
-
version: 0.4.4
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.0
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- David Anderson
|
13
9
|
- Chris Weis
|
14
10
|
autorequire:
|
15
11
|
bindir: bin
|
16
12
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
13
|
+
date: 2012-08-02 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
22
16
|
name: activesupport
|
23
|
-
|
24
|
-
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
- 0
|
30
|
-
version: "0"
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
31
23
|
type: :runtime
|
32
|
-
version_requirements: *id001
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: actionpack
|
35
24
|
prerelease: false
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '0'
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: actionpack
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
43
39
|
type: :runtime
|
44
|
-
version_requirements: *id002
|
45
|
-
- !ruby/object:Gem::Dependency
|
46
|
-
name: girl_friday
|
47
40
|
prerelease: false
|
48
|
-
|
49
|
-
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: girl_friday
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
50
52
|
- - ~>
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
segments:
|
53
|
-
- 0
|
54
|
-
- 10
|
55
|
-
- 0
|
53
|
+
- !ruby/object:Gem::Version
|
56
54
|
version: 0.10.0
|
57
55
|
type: :runtime
|
58
|
-
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.10.0
|
59
63
|
description: Rack middleware for connecting to WhenAUser
|
60
|
-
email:
|
64
|
+
email:
|
61
65
|
- david@alpinegizmo.com
|
62
66
|
executables: []
|
63
|
-
|
64
67
|
extensions: []
|
65
|
-
|
66
68
|
extra_rdoc_files: []
|
67
|
-
|
68
|
-
files:
|
69
|
+
files:
|
69
70
|
- .gitignore
|
70
71
|
- Gemfile
|
71
72
|
- README.md
|
@@ -79,35 +80,28 @@ files:
|
|
79
80
|
- lib/whenauser/railtie.rb
|
80
81
|
- lib/whenauser/version.rb
|
81
82
|
- whenauser.gemspec
|
82
|
-
has_rdoc: true
|
83
83
|
homepage: https://github.com/tractionlabs/whenauser
|
84
84
|
licenses: []
|
85
|
-
|
86
85
|
post_install_message:
|
87
86
|
rdoc_options: []
|
88
|
-
|
89
|
-
require_paths:
|
87
|
+
require_paths:
|
90
88
|
- lib
|
91
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
requirements:
|
100
|
-
- -
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
|
103
|
-
- 0
|
104
|
-
version: "0"
|
89
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
97
|
+
requirements:
|
98
|
+
- - ! '>='
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
105
101
|
requirements: []
|
106
|
-
|
107
102
|
rubyforge_project:
|
108
|
-
rubygems_version: 1.
|
103
|
+
rubygems_version: 1.8.24
|
109
104
|
signing_key:
|
110
105
|
specification_version: 3
|
111
106
|
summary: Rack middleware for connecting to WhenAUser
|
112
107
|
test_files: []
|
113
|
-
|