mongoid-simple-userstamps 0.2.0 → 1.0.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 +5 -5
- data/.travis.yml +21 -0
- data/Gemfile +2 -0
- data/README.md +23 -14
- data/Rakefile +6 -1
- data/gemfiles/mongoid-5.0.gemfile +7 -0
- data/gemfiles/mongoid-6.0.gemfile +7 -0
- data/gemfiles/mongoid-7.0.gemfile +7 -0
- data/lib/mongoid-simple-userstamps.rb +3 -4
- data/lib/mongoid-simple-userstamps/model.rb +12 -9
- data/lib/mongoid-simple-userstamps/user.rb +6 -2
- data/lib/mongoid-simple-userstamps/version.rb +1 -1
- data/mongoid-simple-userstamps.gemspec +12 -11
- data/spec/spec_helper.rb +1 -1
- data/spec/userstamps_spec.rb +37 -10
- metadata +9 -7
- data/lib/mongoid-simple-userstamps/config.rb +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 81b8a57413bd388e7166eafb49105d1ea7c7e37b7ce952e99a06532af6d41522
|
4
|
+
data.tar.gz: 4e52b4597c4be8f096cb67b6f31b2c14708e5edf57ef035657d1bc20b8a7a0da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 939f8d2fce4291e8f77823df64d19f81f238519d6b7886eabb066747d16c08f55803f9832d026de4e5744eade39d7225a86e2422d5e3f0e1f351c831da14fe3c
|
7
|
+
data.tar.gz: 5401425c074473d84f67df1dcd5a38a5a529a93c537e7f65030a20706cd2eb4905764ff8789e18c9d52ec8f7445471b976bb46406157d6bdfa9fdaf80d19aad5
|
data/.travis.yml
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
sudo: false
|
2
|
+
language: ruby
|
3
|
+
rvm:
|
4
|
+
- 2.5.1
|
5
|
+
before_install: gem install bundler -v 1.16.1
|
6
|
+
|
7
|
+
gemfile:
|
8
|
+
- Gemfile
|
9
|
+
- gemfiles/mongoid-5.0.gemfile
|
10
|
+
- gemfiles/mongoid-6.0.gemfile
|
11
|
+
- gemfiles/mongoid-7.0.gemfile
|
12
|
+
|
13
|
+
services:
|
14
|
+
- mongodb
|
15
|
+
|
16
|
+
addons:
|
17
|
+
apt:
|
18
|
+
sources:
|
19
|
+
- mongodb-3.4-precise
|
20
|
+
packages:
|
21
|
+
- mongodb-org-server
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -4,7 +4,7 @@ Adds stamps relations to mongoid models.
|
|
4
4
|
|
5
5
|
## Version Support
|
6
6
|
|
7
|
-
|
7
|
+
`5.x, 6.x and 7.x`
|
8
8
|
|
9
9
|
## Installation
|
10
10
|
|
@@ -22,14 +22,12 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
* Define current user.
|
25
|
+
- Include `Mongoid::Userstamps::Model` in your models you want user stamps.
|
26
|
+
- Define current user throught `Mongoid::Userstamps::User.current`.
|
28
27
|
|
29
28
|
```ruby
|
30
29
|
class User
|
31
30
|
include Mongoid::Document
|
32
|
-
include Mongoid::Userstamps::User
|
33
31
|
end
|
34
32
|
|
35
33
|
class Post
|
@@ -40,7 +38,7 @@ Or install it yourself as:
|
|
40
38
|
end
|
41
39
|
|
42
40
|
user = User.create
|
43
|
-
Mongoid::Userstamps::
|
41
|
+
Mongoid::Userstamps::User.current = user
|
44
42
|
|
45
43
|
pòst = Post.create
|
46
44
|
post.created_by # <User _id: 57305c268675c32e1c70a17e >
|
@@ -53,25 +51,36 @@ Or install it yourself as:
|
|
53
51
|
|
54
52
|
### Rails
|
55
53
|
|
56
|
-
|
54
|
+
- Define current user in your `application_controller.rb`
|
57
55
|
|
58
56
|
```ruby
|
59
57
|
class ApplicationController < ActionController::Base
|
58
|
+
before_action :authenticate!
|
60
59
|
before_action :define_userstamps_current
|
61
60
|
|
62
61
|
protected
|
63
62
|
|
64
63
|
def define_userstamps_current
|
65
|
-
Mongoid::Userstamps::
|
64
|
+
Mongoid::Userstamps::User.current = current_user
|
66
65
|
end
|
67
66
|
end
|
68
67
|
```
|
69
68
|
|
69
|
+
### Warden
|
70
|
+
|
71
|
+
* Define current user in [warden callback](https://github.com/hassox/warden/wiki/Callbacks)
|
72
|
+
|
73
|
+
```ruby
|
74
|
+
Warden::Manager.after_set_user do |user, auth, opts|
|
75
|
+
Mongoid::Userstamps::Config.set_current(record)
|
76
|
+
end
|
77
|
+
```
|
78
|
+
|
70
79
|
## Contributing
|
71
80
|
|
72
|
-
1.
|
73
|
-
|
74
|
-
2.
|
75
|
-
3.
|
76
|
-
4.
|
77
|
-
5.
|
81
|
+
1. Fork it (
|
82
|
+
<http://github.com/><my-github-username>/mongoid-simple-userstamps/fork )
|
83
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
84
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
85
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
86
|
+
5. Create new Pull Request
|
data/Rakefile
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require "mongoid-simple-userstamps/model"
|
1
|
+
require 'mongoid-simple-userstamps/version'
|
2
|
+
require 'mongoid-simple-userstamps/user'
|
3
|
+
require 'mongoid-simple-userstamps/model'
|
@@ -5,18 +5,21 @@ module Mongoid
|
|
5
5
|
module Userstamps
|
6
6
|
module Model
|
7
7
|
def self.included(base)
|
8
|
-
base.
|
9
|
-
|
8
|
+
base.class_eval do
|
9
|
+
if Mongoid::VERSION.to_f < 6
|
10
|
+
belongs_to :created_by, polymorphic: true
|
11
|
+
belongs_to :updated_by, polymorphic: true
|
12
|
+
else
|
13
|
+
belongs_to :created_by, polymorphic: true, optional: true
|
14
|
+
belongs_to :updated_by, polymorphic: true, optional: true
|
15
|
+
end
|
10
16
|
|
11
|
-
|
12
|
-
|
13
|
-
self.created_by = Mongoid::Userstamps::Config.current
|
17
|
+
before_create do
|
18
|
+
self.created_by = Mongoid::Userstamps::User.current unless created_by
|
14
19
|
end
|
15
|
-
end
|
16
20
|
|
17
|
-
|
18
|
-
|
19
|
-
self.updated_by = Mongoid::Userstamps::Config.current
|
21
|
+
before_update do
|
22
|
+
self.updated_by = Mongoid::Userstamps::User.current
|
20
23
|
end
|
21
24
|
end
|
22
25
|
end
|
@@ -4,8 +4,12 @@
|
|
4
4
|
module Mongoid
|
5
5
|
module Userstamps
|
6
6
|
module User
|
7
|
-
def self.
|
8
|
-
|
7
|
+
def self.current
|
8
|
+
Thread.current[:current_user]
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.current=(current)
|
12
|
+
Thread.current[:current_user] = current
|
9
13
|
end
|
10
14
|
end
|
11
15
|
end
|
@@ -1,24 +1,25 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
require 'mongoid-simple-userstamps/version'
|
5
6
|
|
6
7
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
8
|
+
spec.name = 'mongoid-simple-userstamps'
|
8
9
|
spec.version = Mongoid::Userstamps::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.summary =
|
12
|
-
spec.description =
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
10
|
+
spec.authors = ['Rafael Jurado']
|
11
|
+
spec.email = ['rjurado@nosolosoftware.es']
|
12
|
+
spec.summary = 'Simple way to add user stamps to your models.'
|
13
|
+
spec.description = 'Simple way to add user stamps to your models.'
|
14
|
+
spec.homepage = ''
|
15
|
+
spec.license = 'MIT'
|
15
16
|
|
16
17
|
spec.files = `git ls-files -z`.split("\x0")
|
17
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = [
|
20
|
+
spec.require_paths = ['lib']
|
20
21
|
|
21
|
-
spec.add_development_dependency
|
22
|
+
spec.add_development_dependency 'bundler', '~> 1.16'
|
22
23
|
spec.add_development_dependency 'rspec'
|
23
|
-
spec.add_dependency 'mongoid',
|
24
|
+
spec.add_dependency 'mongoid', '>= 5.0.0'
|
24
25
|
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/userstamps_spec.rb
CHANGED
@@ -3,7 +3,6 @@ require 'spec_helper'
|
|
3
3
|
describe 'Mongoid::Userstamp' do
|
4
4
|
class User
|
5
5
|
include Mongoid::Document
|
6
|
-
include Mongoid::Userstamps::User
|
7
6
|
end
|
8
7
|
|
9
8
|
class Post
|
@@ -16,7 +15,7 @@ describe 'Mongoid::Userstamp' do
|
|
16
15
|
context 'when current is defined' do
|
17
16
|
before :all do
|
18
17
|
@user = User.create
|
19
|
-
Mongoid::Userstamps::
|
18
|
+
Mongoid::Userstamps::User.current = @user
|
20
19
|
end
|
21
20
|
|
22
21
|
context 'when include Mongoid::Userstamps::Model' do
|
@@ -48,24 +47,52 @@ describe 'Mongoid::Userstamp' do
|
|
48
47
|
expect(post.updated_by).to eq(@user)
|
49
48
|
end
|
50
49
|
end
|
50
|
+
|
51
|
+
context 'when check thread safe' do
|
52
|
+
it 'works' do
|
53
|
+
Post.destroy_all
|
54
|
+
user1 = User.create
|
55
|
+
user2 = User.create
|
56
|
+
|
57
|
+
Thread.start do
|
58
|
+
Mongoid::Userstamps::User.current = user1
|
59
|
+
sleep 0.2
|
60
|
+
Post.create
|
61
|
+
end
|
62
|
+
|
63
|
+
Thread.start do
|
64
|
+
sleep 0.1
|
65
|
+
Mongoid::Userstamps::User.current = user2
|
66
|
+
end
|
67
|
+
|
68
|
+
sleep 0.3
|
69
|
+
expect(Post.first.created_by).to eq(user1)
|
70
|
+
end
|
71
|
+
end
|
51
72
|
end
|
52
73
|
|
53
74
|
context 'when current is not defined' do
|
54
75
|
before :all do
|
55
|
-
Mongoid::Userstamps::
|
76
|
+
Mongoid::Userstamps::User.current = nil
|
56
77
|
end
|
57
78
|
|
58
79
|
it 'should not set created_by' do
|
59
|
-
|
60
|
-
post
|
61
|
-
expect(post.created_by).to eq(user)
|
80
|
+
post = Post.create
|
81
|
+
expect(post.created_by).to be_nil
|
62
82
|
end
|
63
83
|
|
64
84
|
it 'should not set updated_by' do
|
65
|
-
|
66
|
-
post
|
67
|
-
post.
|
68
|
-
|
85
|
+
post = Post.create
|
86
|
+
post.update_attributes(title: 'title')
|
87
|
+
expect(post.updated_by).to be_nil
|
88
|
+
end
|
89
|
+
|
90
|
+
context 'when set manually created_by' do
|
91
|
+
it 'should respect it' do
|
92
|
+
user = User.create
|
93
|
+
post = Post.create(created_by: user)
|
94
|
+
expect(post.created_by).to eq(user)
|
95
|
+
end
|
69
96
|
end
|
70
97
|
end
|
71
98
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid-simple-userstamps
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rafael Jurado
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.16'
|
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
|
-
version: '1.
|
26
|
+
version: '1.16'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -60,12 +60,15 @@ extensions: []
|
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
62
|
- ".gitignore"
|
63
|
+
- ".travis.yml"
|
63
64
|
- Gemfile
|
64
65
|
- LICENSE.txt
|
65
66
|
- README.md
|
66
67
|
- Rakefile
|
68
|
+
- gemfiles/mongoid-5.0.gemfile
|
69
|
+
- gemfiles/mongoid-6.0.gemfile
|
70
|
+
- gemfiles/mongoid-7.0.gemfile
|
67
71
|
- lib/mongoid-simple-userstamps.rb
|
68
|
-
- lib/mongoid-simple-userstamps/config.rb
|
69
72
|
- lib/mongoid-simple-userstamps/model.rb
|
70
73
|
- lib/mongoid-simple-userstamps/user.rb
|
71
74
|
- lib/mongoid-simple-userstamps/version.rb
|
@@ -93,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
93
96
|
version: '0'
|
94
97
|
requirements: []
|
95
98
|
rubyforge_project:
|
96
|
-
rubygems_version: 2.
|
99
|
+
rubygems_version: 2.7.3
|
97
100
|
signing_key:
|
98
101
|
specification_version: 4
|
99
102
|
summary: Simple way to add user stamps to your models.
|
@@ -101,4 +104,3 @@ test_files:
|
|
101
104
|
- spec/spec_helper.rb
|
102
105
|
- spec/support/mongoid.yml
|
103
106
|
- spec/userstamps_spec.rb
|
104
|
-
has_rdoc:
|
@@ -1,27 +0,0 @@
|
|
1
|
-
##
|
2
|
-
# This module store Userstamps config
|
3
|
-
#
|
4
|
-
module Mongoid
|
5
|
-
module Userstamps
|
6
|
-
module Config
|
7
|
-
@@model = nil
|
8
|
-
@@current = nil
|
9
|
-
|
10
|
-
def self.current
|
11
|
-
@@current
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.model
|
15
|
-
@@model
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.set_current(current)
|
19
|
-
@@current = current
|
20
|
-
end
|
21
|
-
|
22
|
-
def self.set_model(user_class)
|
23
|
-
@@user_class = user_class
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|