orwell-mole 0.1.0 → 0.3.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.
- checksums.yaml +4 -4
- data/README.md +73 -9
- data/lib/orwell/mole/transport/sidekiq.rb +25 -0
- data/lib/orwell/mole/transport/sucker_punch.rb +27 -0
- data/lib/orwell/mole/transporter.rb +11 -7
- data/lib/orwell/mole/version.rb +1 -1
- metadata +53 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c28540d10a1580c8b9aa5875ebe7e78cca83146f
|
4
|
+
data.tar.gz: a181ec77d9aa664f7bb99939b4c03d5a2309c0f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6953a976f1052330d109be320ed431c96fcfa5fae36197e66c4d82162d117ef2caec5322bb97b69b691035c30cf3db0d07b13f4f4b7ad405ad2b98b488f5c09a
|
7
|
+
data.tar.gz: c68b70b61af652fa7b65e5e540369f13e4dfbbd8137afae0b435e75df80a284de73ec52eca6981a6d06a90922b1722223bd39aa6eef0d0d0a890b02c77cbdc8f
|
data/README.md
CHANGED
@@ -1,27 +1,91 @@
|
|
1
1
|
# Mole
|
2
2
|
|
3
|
-
Easily send events to Orwell from
|
3
|
+
Easily send events to Orwell from your Ruby applications.
|
4
4
|
|
5
|
-
[](https://rubygems.org/gems/orwell-mole)[](https://travis-ci.org/doomspork/mole) [](https://codeclimate.com/github/doomspork/mole) [](https://coveralls.io/r/doomspork/mole) [](https://gemnasium.com/doomspork/mole)
|
5
|
+
[](https://rubygems.org/gems/orwell-mole) [](https://travis-ci.org/doomspork/mole) [](https://codeclimate.com/github/doomspork/mole) [](https://coveralls.io/r/doomspork/mole?branch=master) [](https://gemnasium.com/doomspork/mole)
|
6
6
|
|
7
|
-
|
7
|
+
## Installation
|
8
8
|
|
9
|
-
|
9
|
+
Add this line to your application's Gemfile:
|
10
10
|
|
11
|
-
|
11
|
+
gem 'orwell-mole', require: 'orwell/mole'
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle install
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install orwell-mole
|
20
|
+
|
21
|
+
And require it:
|
22
|
+
|
23
|
+
require 'orwell/mole'
|
24
|
+
|
25
|
+
## Configuration
|
26
|
+
|
27
|
+
Currently there is only one required configuration option: `api_token`.
|
12
28
|
|
13
29
|
```ruby
|
14
30
|
Mole.config do |c|
|
15
31
|
c.api_token = 'your orwell api token'
|
32
|
+
c.logger = Log4r::Logger[Rails.env]
|
16
33
|
end
|
17
34
|
```
|
18
35
|
|
19
|
-
###
|
36
|
+
### Options
|
37
|
+
+ `api_token` - The application's API token provided by Orwell.
|
38
|
+
+ `logger` - Override the logger Mole will use, the default uses `Logger` to stdout.
|
39
|
+
+ `method` - Set the transport used by Mole to transmit events, valid options:
|
40
|
+
- `:basic_http` - No frills HTTP requests via `net/http`, the default.
|
41
|
+
- `:sucker_punch` - Uses [SuckerPunch](https://github.com/brandonhilkert/sucker_punch) to asynchroniously transmit events.
|
42
|
+
- `:sidekiq` - Similar to `:sucker_punch` but the underlying library is [Sidekiq](https://github.com/mperham/sidekiq).
|
43
|
+
|
44
|
+
_Note_: To use either `:sucker_punch` or `:sidekiq` you'll need to require them first:
|
20
45
|
|
21
46
|
```ruby
|
22
|
-
|
23
|
-
|
47
|
+
# Sidekiq
|
48
|
+
require 'orwell/mole/transport/sidekiq'
|
49
|
+
|
50
|
+
# SuckerPunch
|
51
|
+
require 'orwell/mole/transport/sucker_punch'
|
52
|
+
```
|
53
|
+
|
54
|
+
## Usage
|
55
|
+
|
56
|
+
To create a channel for a specific user's actions, add the following line to the beginnging of your code:
|
24
57
|
|
58
|
+
```ruby
|
25
59
|
@channel = Mole.track(@user.email, :accounts)
|
26
|
-
@channel.record(:password_change)
|
27
60
|
```
|
61
|
+
|
62
|
+
Now to record an event on this channel we use:
|
63
|
+
|
64
|
+
```ruby
|
65
|
+
@channel.record(:new_tweet, tweet: '...', timestamp: '...')
|
66
|
+
```
|
67
|
+
|
68
|
+
Alternatively it may be necessary for a channel to remain open where individual events will be tagged with differing identifiers, to create one of these channels we use:
|
69
|
+
|
70
|
+
```ruby
|
71
|
+
@channel = Mole.channel(:accounts)
|
72
|
+
```
|
73
|
+
|
74
|
+
When we record events on one of these channels it's required that an identifier is provided as second parameter followed by any additional details:
|
75
|
+
|
76
|
+
```ruby
|
77
|
+
@channel.record(:new_account, params[:email], params)
|
78
|
+
```
|
79
|
+
|
80
|
+
|
81
|
+
## Contributing
|
82
|
+
|
83
|
+
Feedback and fixes are always welcome. Please make use of [Issues](https://github.com/doomspork/autocomplete-me/issues) and [Pull Requests](https://github.com/doomspork/autocomplete-me/pulls), all code should have test coverage.
|
84
|
+
|
85
|
+
## Author/Contact
|
86
|
+
|
87
|
+
Mole is written and maintained by [@doomspork](github.com/doomspork).
|
88
|
+
|
89
|
+
## License
|
90
|
+
|
91
|
+
Mole is made available under the [MIT](http://opensource.org/licenses/MIT) License.
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'sidekiq' unless defined?(Sidekiq)
|
2
|
+
|
3
|
+
module Mole
|
4
|
+
module Transport
|
5
|
+
class Sidekiq
|
6
|
+
include ::Sidekiq::Worker
|
7
|
+
|
8
|
+
attr_reader :request_options
|
9
|
+
|
10
|
+
def initialize(opts = {})
|
11
|
+
@request_options = opts
|
12
|
+
end
|
13
|
+
|
14
|
+
def perform(event)
|
15
|
+
Sidekiq.delay.perform_http(event, request_options)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.perform_http(event, opts)
|
19
|
+
BasicHttp.new(opts).perform(event)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'sucker_punch' unless defined?(SuckerPunch)
|
2
|
+
|
3
|
+
module Mole
|
4
|
+
module Transport
|
5
|
+
class SuckerPunch
|
6
|
+
|
7
|
+
class AsyncWrapper
|
8
|
+
include ::SuckerPunch::Job
|
9
|
+
|
10
|
+
def perform(event, options)
|
11
|
+
BasicHttp.new(options).perform(event)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
attr_reader :request_options
|
16
|
+
|
17
|
+
def initialize(opts = {})
|
18
|
+
@request_options = opts
|
19
|
+
end
|
20
|
+
|
21
|
+
def perform(event)
|
22
|
+
AsyncWrapper.new.perform(event, request_options)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
@@ -15,13 +15,17 @@ module Mole
|
|
15
15
|
private
|
16
16
|
|
17
17
|
def lookup(transport)
|
18
|
-
case transport
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
18
|
+
transport = case transport
|
19
|
+
when :basic_http
|
20
|
+
Transport::BasicHttp
|
21
|
+
when :sucker_punch
|
22
|
+
Transport::SuckerPunch
|
23
|
+
when :sidekiq
|
24
|
+
Transport::Sidekiq
|
25
|
+
else
|
26
|
+
raise NotImplementedError
|
27
|
+
end
|
28
|
+
transport.new(config_hash)
|
25
29
|
end
|
26
30
|
|
27
31
|
def config_hash
|
data/lib/orwell/mole/version.rb
CHANGED
metadata
CHANGED
@@ -1,125 +1,153 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: orwell-mole
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Callan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.7'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.7'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: coveralls
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0.7'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0.7'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '10.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '10.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rr
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '1.1'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.1'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '3.1'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - ~>
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '3.1'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rspec-its
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - ~>
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '1.0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - ~>
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '1.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: sidekiq
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '3.2'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '3.2'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: simplecov
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
|
-
- - ~>
|
115
|
+
- - "~>"
|
102
116
|
- !ruby/object:Gem::Version
|
103
117
|
version: '0.9'
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
|
-
- - ~>
|
122
|
+
- - "~>"
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '0.9'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: sucker_punch
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '1.2'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '1.2'
|
111
139
|
- !ruby/object:Gem::Dependency
|
112
140
|
name: webmock
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
114
142
|
requirements:
|
115
|
-
- - ~>
|
143
|
+
- - "~>"
|
116
144
|
- !ruby/object:Gem::Version
|
117
145
|
version: '1.18'
|
118
146
|
type: :development
|
119
147
|
prerelease: false
|
120
148
|
version_requirements: !ruby/object:Gem::Requirement
|
121
149
|
requirements:
|
122
|
-
- - ~>
|
150
|
+
- - "~>"
|
123
151
|
- !ruby/object:Gem::Version
|
124
152
|
version: '1.18'
|
125
153
|
description: Mole allows developers to send events from within their code directly
|
@@ -130,16 +158,18 @@ executables: []
|
|
130
158
|
extensions: []
|
131
159
|
extra_rdoc_files: []
|
132
160
|
files:
|
133
|
-
- README.md
|
134
161
|
- LICENSE
|
162
|
+
- README.md
|
163
|
+
- lib/orwell/mole.rb
|
135
164
|
- lib/orwell/mole/client.rb
|
136
165
|
- lib/orwell/mole/config.rb
|
137
166
|
- lib/orwell/mole/errors/missing_api_token_error.rb
|
138
167
|
- lib/orwell/mole/event.rb
|
139
168
|
- lib/orwell/mole/transport/basic_http.rb
|
169
|
+
- lib/orwell/mole/transport/sidekiq.rb
|
170
|
+
- lib/orwell/mole/transport/sucker_punch.rb
|
140
171
|
- lib/orwell/mole/transporter.rb
|
141
172
|
- lib/orwell/mole/version.rb
|
142
|
-
- lib/orwell/mole.rb
|
143
173
|
homepage: http://www.orwell.io
|
144
174
|
licenses:
|
145
175
|
- MIT
|
@@ -150,17 +180,17 @@ require_paths:
|
|
150
180
|
- lib
|
151
181
|
required_ruby_version: !ruby/object:Gem::Requirement
|
152
182
|
requirements:
|
153
|
-
- -
|
183
|
+
- - ">="
|
154
184
|
- !ruby/object:Gem::Version
|
155
185
|
version: '0'
|
156
186
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
187
|
requirements:
|
158
|
-
- -
|
188
|
+
- - ">="
|
159
189
|
- !ruby/object:Gem::Version
|
160
190
|
version: '0'
|
161
191
|
requirements: []
|
162
192
|
rubyforge_project:
|
163
|
-
rubygems_version: 2.
|
193
|
+
rubygems_version: 2.2.2
|
164
194
|
signing_key:
|
165
195
|
specification_version: 4
|
166
196
|
summary: A client library for Orwell
|