devise-async 0.2.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.
- data/CHANGELOG.md +5 -0
- data/README.md +15 -0
- data/lib/devise/async.rb +1 -0
- data/lib/devise/async/model.rb +30 -0
- data/lib/devise/async/version.rb +1 -1
- data/test/devise/async/model_test.rb +21 -0
- data/test/support/helpers.rb +8 -0
- data/test/support/rails_app/app/models/admin.rb +7 -0
- data/test/support/rails_app/db/schema.rb +24 -0
- metadata +9 -6
- data/test/support/support/rails_app/log/test.log +0 -0
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
## Unreleased
|
2
2
|
|
3
|
+
* Fixes
|
4
|
+
* Added `Devise::Async::Model` to use new devise's after_commit hooks to resolve #6 (only devise >=2.1.1)
|
5
|
+
|
6
|
+
## 0.2.0
|
7
|
+
|
3
8
|
* Enhancements
|
4
9
|
* Added `Devise::Async.queue` option to let configure the queue
|
5
10
|
the jobs will be enqueued to.
|
data/README.md
CHANGED
@@ -26,12 +26,27 @@ Or install it yourself as:
|
|
26
26
|
|
27
27
|
## Usage
|
28
28
|
|
29
|
+
### Devise >= 2.1.1
|
30
|
+
|
31
|
+
Include `Devise::Async::Model` to your Devise model
|
32
|
+
|
33
|
+
```ruby
|
34
|
+
class User < ActiveRecord::Base
|
35
|
+
devise :database_authenticatable, :confirmable # etc ...
|
36
|
+
|
37
|
+
include Devise::Async::Model # should be below call to `devise`
|
38
|
+
end
|
39
|
+
```
|
40
|
+
|
41
|
+
### Devise < 2.1.1
|
42
|
+
|
29
43
|
Set `Devise::Async::Proxy` as Devise's mailer in `config/initializers/devise.rb`:
|
30
44
|
|
31
45
|
```ruby
|
32
46
|
# Configure the class responsible to send e-mails.
|
33
47
|
config.mailer = "Devise::Async::Proxy"
|
34
48
|
```
|
49
|
+
### All
|
35
50
|
|
36
51
|
Set your queuing backend by creating `config/initializers/devise_async.rb`:
|
37
52
|
|
data/lib/devise/async.rb
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
module Devise
|
2
|
+
module Async
|
3
|
+
module Model
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
included do
|
7
|
+
after_commit :send_devise_pending_notifications
|
8
|
+
end
|
9
|
+
|
10
|
+
protected
|
11
|
+
|
12
|
+
def send_devise_notification(notification)
|
13
|
+
devise_pending_notifications << notification
|
14
|
+
end
|
15
|
+
|
16
|
+
def send_devise_pending_notifications
|
17
|
+
devise_pending_notifications.each do |notification|
|
18
|
+
# Use `id.to_s` to avoid problems with mongoid 2.4.X ids being serialized
|
19
|
+
# wrong with YAJL.
|
20
|
+
Devise::Async::Worker.enqueue(notification, self.class.name, self.id.to_s)
|
21
|
+
end
|
22
|
+
@devise_pending_notifications = []
|
23
|
+
end
|
24
|
+
|
25
|
+
def devise_pending_notifications
|
26
|
+
@devise_pending_notifications ||= []
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/devise/async/version.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module Devise
|
4
|
+
module Async
|
5
|
+
describe "Model" do
|
6
|
+
it "accumulates notifications to be send after commit" do
|
7
|
+
admin = create_admin
|
8
|
+
admin.send_confirmation_instructions
|
9
|
+
admin.send(:devise_pending_notifications).must_equal [:confirmation_instructions]
|
10
|
+
Worker.expects(:enqueue).never
|
11
|
+
end
|
12
|
+
|
13
|
+
it "triggers enqueues the notifications on save" do
|
14
|
+
admin = create_admin
|
15
|
+
admin.send_confirmation_instructions
|
16
|
+
Worker.expects(:enqueue).with(:confirmation_instructions, "Admin", admin.id.to_s)
|
17
|
+
admin.update_attribute(:username, "newusername")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/test/support/helpers.rb
CHANGED
@@ -18,3 +18,11 @@ end
|
|
18
18
|
def create_user(attributes={})
|
19
19
|
User.create!(valid_attributes(attributes))
|
20
20
|
end
|
21
|
+
|
22
|
+
def new_admin(attributes={})
|
23
|
+
Admin.new(valid_attributes(attributes))
|
24
|
+
end
|
25
|
+
|
26
|
+
def create_admin(attributes={})
|
27
|
+
Admin.create!(valid_attributes(attributes))
|
28
|
+
end
|
@@ -29,6 +29,30 @@ ActiveRecord::Schema.define(:version => 1) do
|
|
29
29
|
t.datetime "updated_at"
|
30
30
|
end
|
31
31
|
|
32
|
+
create_table "admins", :force => true do |t|
|
33
|
+
t.string "username"
|
34
|
+
t.string "facebook_token"
|
35
|
+
t.string "email", :default => "", :null => false
|
36
|
+
t.string "unconfirmed_email", :default => ""
|
37
|
+
t.string "encrypted_password", :limit => 128, :default => "", :null => false
|
38
|
+
t.string "confirmation_token"
|
39
|
+
t.datetime "confirmed_at"
|
40
|
+
t.datetime "confirmation_sent_at"
|
41
|
+
t.string "reset_password_token"
|
42
|
+
t.datetime "remember_created_at"
|
43
|
+
t.integer "sign_in_count", :default => 0
|
44
|
+
t.datetime "current_sign_in_at"
|
45
|
+
t.datetime "last_sign_in_at"
|
46
|
+
t.string "current_sign_in_ip"
|
47
|
+
t.string "last_sign_in_ip"
|
48
|
+
t.integer "failed_attempts", :default => 0
|
49
|
+
t.string "unlock_token"
|
50
|
+
t.datetime "locked_at"
|
51
|
+
t.string "authentication_token"
|
52
|
+
t.datetime "created_at"
|
53
|
+
t.datetime "updated_at"
|
54
|
+
end
|
55
|
+
|
32
56
|
create_table :delayed_jobs, :force => true do |table|
|
33
57
|
table.integer :priority, :default => 0 # Allows some jobs to jump to the front of the queue
|
34
58
|
table.integer :attempts, :default => 0 # Provides for retries, but still fail eventually.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise-async
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: devise
|
@@ -193,6 +193,7 @@ files:
|
|
193
193
|
- lib/devise/async/backend/delayed_job.rb
|
194
194
|
- lib/devise/async/backend/resque.rb
|
195
195
|
- lib/devise/async/backend/sidekiq.rb
|
196
|
+
- lib/devise/async/model.rb
|
196
197
|
- lib/devise/async/proxy.rb
|
197
198
|
- lib/devise/async/version.rb
|
198
199
|
- lib/devise/async/worker.rb
|
@@ -201,12 +202,14 @@ files:
|
|
201
202
|
- test/devise/async/backend/resque_test.rb
|
202
203
|
- test/devise/async/backend/sidekiq_test.rb
|
203
204
|
- test/devise/async/backend_test.rb
|
205
|
+
- test/devise/async/model_test.rb
|
204
206
|
- test/devise/async/proxy_test.rb
|
205
207
|
- test/devise/async/worker_test.rb
|
206
208
|
- test/devise/async_test.rb
|
207
209
|
- test/support/helpers.rb
|
208
210
|
- test/support/my_mailer.rb
|
209
211
|
- test/support/rails_app.rb
|
212
|
+
- test/support/rails_app/app/models/admin.rb
|
210
213
|
- test/support/rails_app/app/models/user.rb
|
211
214
|
- test/support/rails_app/config/database.yml
|
212
215
|
- test/support/rails_app/config/initializers/devise.rb
|
@@ -214,7 +217,6 @@ files:
|
|
214
217
|
- test/support/rails_app/config/routes.rb
|
215
218
|
- test/support/rails_app/db/schema.rb
|
216
219
|
- test/support/rails_app/log/development.log
|
217
|
-
- test/support/support/rails_app/log/test.log
|
218
220
|
- test/test_helper.rb
|
219
221
|
homepage: https://github.com/mhfs/devise-async/
|
220
222
|
licenses: []
|
@@ -230,7 +232,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
230
232
|
version: '0'
|
231
233
|
segments:
|
232
234
|
- 0
|
233
|
-
hash: -
|
235
|
+
hash: -1160752069777007952
|
234
236
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
235
237
|
none: false
|
236
238
|
requirements:
|
@@ -239,7 +241,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
239
241
|
version: '0'
|
240
242
|
segments:
|
241
243
|
- 0
|
242
|
-
hash: -
|
244
|
+
hash: -1160752069777007952
|
243
245
|
requirements: []
|
244
246
|
rubyforge_project:
|
245
247
|
rubygems_version: 1.8.23
|
@@ -254,12 +256,14 @@ test_files:
|
|
254
256
|
- test/devise/async/backend/resque_test.rb
|
255
257
|
- test/devise/async/backend/sidekiq_test.rb
|
256
258
|
- test/devise/async/backend_test.rb
|
259
|
+
- test/devise/async/model_test.rb
|
257
260
|
- test/devise/async/proxy_test.rb
|
258
261
|
- test/devise/async/worker_test.rb
|
259
262
|
- test/devise/async_test.rb
|
260
263
|
- test/support/helpers.rb
|
261
264
|
- test/support/my_mailer.rb
|
262
265
|
- test/support/rails_app.rb
|
266
|
+
- test/support/rails_app/app/models/admin.rb
|
263
267
|
- test/support/rails_app/app/models/user.rb
|
264
268
|
- test/support/rails_app/config/database.yml
|
265
269
|
- test/support/rails_app/config/initializers/devise.rb
|
@@ -267,5 +271,4 @@ test_files:
|
|
267
271
|
- test/support/rails_app/config/routes.rb
|
268
272
|
- test/support/rails_app/db/schema.rb
|
269
273
|
- test/support/rails_app/log/development.log
|
270
|
-
- test/support/support/rails_app/log/test.log
|
271
274
|
- test/test_helper.rb
|
File without changes
|