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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 25f0049bf2485cbd493191b024fe25d40892e338
4
- data.tar.gz: 6fd44b51ea7258f51a13f9150d29d9b649803398
3
+ metadata.gz: c28540d10a1580c8b9aa5875ebe7e78cca83146f
4
+ data.tar.gz: a181ec77d9aa664f7bb99939b4c03d5a2309c0f3
5
5
  SHA512:
6
- metadata.gz: 861cd019f9b8b09688b82a55b873ae1aed232f9e77a4357d7977ad430ffdf6610a27446d818870a98617ea8ce98691df73501b2e23212e854ba096e37f5a3c31
7
- data.tar.gz: 2ed88dd3a601855dfcf2a646dac56a132bb5e876e60f0f4da5797374701709d80815a90a5aab20000592913ab83abbc7692acdf70d074dc3eefc0bbb589adf47
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 within your Ruby application.
3
+ Easily send events to Orwell from your Ruby applications.
4
4
 
5
- [![Gem Version](https://badge.fury.io/rb/orwell-mole.png)](https://rubygems.org/gems/orwell-mole)[![Build Status](https://travis-ci.org/doomspork/mole.svg?branch=master)](https://travis-ci.org/doomspork/mole) [![Code Climate](https://codeclimate.com/github/doomspork/mole/badges/gpa.svg)](https://codeclimate.com/github/doomspork/mole) [![Coverage Status](https://coveralls.io/repos/doomspork/mole/badge.png)](https://coveralls.io/r/doomspork/mole) [![Dependency Status](https://gemnasium.com/doomspork/mole.svg)](https://gemnasium.com/doomspork/mole)
5
+ [![Gem Version](https://badge.fury.io/rb/orwell-mole.png)](https://rubygems.org/gems/orwell-mole) [![Build Status](https://travis-ci.org/doomspork/mole.svg?branch=master)](https://travis-ci.org/doomspork/mole) [![Code Climate](https://codeclimate.com/github/doomspork/mole/badges/gpa.svg)](https://codeclimate.com/github/doomspork/mole) [![Coverage Status](https://coveralls.io/repos/doomspork/mole/badge.png?branch=master)](https://coveralls.io/r/doomspork/mole?branch=master) [![Dependency Status](https://gemnasium.com/doomspork/mole.svg)](https://gemnasium.com/doomspork/mole)
6
6
 
7
- ### Gemfile
7
+ ## Installation
8
8
 
9
- + `gem 'orwell-mole', require: 'orwell/mole'`
9
+ Add this line to your application's Gemfile:
10
10
 
11
- ### Configuration
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
- ### Usage
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
- @channel = Mole.channel(:accounts)
23
- @channel.record(:new_account, params[:email], params)
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
- when :basic_http
20
- Transport::BasicHttp.new(config_hash)
21
- when :sidekiq
22
- raise NotImplementedError
23
- else nil
24
- end
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
@@ -1,3 +1,3 @@
1
1
  module Mole
2
- VERSION = '0.1.0'
2
+ VERSION = '0.3.0'
3
3
  end
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.1.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-10-29 00:00:00.000000000 Z
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.0.14
193
+ rubygems_version: 2.2.2
164
194
  signing_key:
165
195
  specification_version: 4
166
196
  summary: A client library for Orwell