orwell-mole 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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