mongoid-multitenancy 0.3.2 → 0.3.3
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/Gemfile.lock +1 -1
- data/lib/mongoid/multitenancy/document.rb +6 -0
- data/lib/mongoid/multitenancy/version.rb +1 -1
- data/spec/inheritance_spec.rb +18 -0
- data/spec/models/mutable_child.rb +5 -0
- data/spec/mutable_child_spec.rb +33 -0
- metadata +47 -19
- checksums.yaml +0 -15
data/Gemfile.lock
CHANGED
@@ -7,6 +7,7 @@ module Mongoid
|
|
7
7
|
attr_accessor :tenant_field
|
8
8
|
|
9
9
|
def tenant(association = :account, options={})
|
10
|
+
original_options = options.clone
|
10
11
|
tenant_options = { optional: options.delete(:optional), immutable: options.delete(:immutable) { true } }
|
11
12
|
# Setup the association between the class and the tenant class
|
12
13
|
# TODO: should index this association if no other indexes are defined => , index: true
|
@@ -40,6 +41,11 @@ module Mongoid
|
|
40
41
|
where(nil)
|
41
42
|
end
|
42
43
|
}
|
44
|
+
|
45
|
+
self.define_singleton_method(:inherited) do |child|
|
46
|
+
child.tenant association, original_options
|
47
|
+
super(child)
|
48
|
+
end
|
43
49
|
end
|
44
50
|
|
45
51
|
# Redefine 'validates_with' to add the tenant scope when using a UniquenessValidator
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Inheritance' do
|
4
|
+
|
5
|
+
let(:client) { Account.create!(:name => "client") }
|
6
|
+
|
7
|
+
describe "class" do
|
8
|
+
before do
|
9
|
+
Mongoid::Multitenancy.current_tenant = client
|
10
|
+
MutableChild.create :title => "title X", :slug => "page-x"
|
11
|
+
end
|
12
|
+
after { Mongoid::Multitenancy.current_tenant = nil }
|
13
|
+
|
14
|
+
it 'should be valid' do
|
15
|
+
expect(Mutable.last).to be_a MutableChild
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MutableChild do
|
4
|
+
|
5
|
+
let(:client) { Account.create!(:name => "client") }
|
6
|
+
let(:another_client) { Account.create!(:name => "another client") }
|
7
|
+
|
8
|
+
describe "#valid?" do
|
9
|
+
before { Mongoid::Multitenancy.current_tenant = client; }
|
10
|
+
after { Mongoid::Multitenancy.current_tenant = nil }
|
11
|
+
|
12
|
+
let(:item) { MutableChild.new(:title => "title X", :slug => "page-x") }
|
13
|
+
|
14
|
+
it_behaves_like "a tenant validator"
|
15
|
+
|
16
|
+
context "when the tenant has not changed" do
|
17
|
+
before { item.save! }
|
18
|
+
it 'should be valid' do
|
19
|
+
item.title = "title X (2)"
|
20
|
+
item.should be_valid
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context "when the tenant has changed" do
|
25
|
+
before { item.save!; Mongoid::Multitenancy.current_tenant = another_client }
|
26
|
+
it 'should be valid' do
|
27
|
+
item.client = another_client
|
28
|
+
item.should be_valid
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
metadata
CHANGED
@@ -1,113 +1,128 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid-multitenancy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease:
|
5
|
+
version: 0.3.3
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Aymeric Brisse
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2013-
|
12
|
+
date: 2013-09-24 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
15
|
+
prerelease: false
|
14
16
|
name: mongoid
|
17
|
+
type: :runtime
|
15
18
|
requirement: !ruby/object:Gem::Requirement
|
16
19
|
requirements:
|
17
20
|
- - ~>
|
18
21
|
- !ruby/object:Gem::Version
|
19
22
|
version: '3'
|
20
|
-
|
21
|
-
prerelease: false
|
23
|
+
none: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
23
25
|
requirements:
|
24
26
|
- - ~>
|
25
27
|
- !ruby/object:Gem::Version
|
26
28
|
version: '3'
|
29
|
+
none: false
|
27
30
|
- !ruby/object:Gem::Dependency
|
31
|
+
prerelease: false
|
28
32
|
name: rake
|
33
|
+
type: :development
|
29
34
|
requirement: !ruby/object:Gem::Requirement
|
30
35
|
requirements:
|
31
36
|
- - ~>
|
32
37
|
- !ruby/object:Gem::Version
|
33
38
|
version: '10.0'
|
34
|
-
|
35
|
-
prerelease: false
|
39
|
+
none: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
37
41
|
requirements:
|
38
42
|
- - ~>
|
39
43
|
- !ruby/object:Gem::Version
|
40
44
|
version: '10.0'
|
45
|
+
none: false
|
41
46
|
- !ruby/object:Gem::Dependency
|
47
|
+
prerelease: false
|
42
48
|
name: rspec
|
49
|
+
type: :development
|
43
50
|
requirement: !ruby/object:Gem::Requirement
|
44
51
|
requirements:
|
45
52
|
- - ~>
|
46
53
|
- !ruby/object:Gem::Version
|
47
54
|
version: '2.12'
|
48
|
-
|
49
|
-
prerelease: false
|
55
|
+
none: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
51
57
|
requirements:
|
52
58
|
- - ~>
|
53
59
|
- !ruby/object:Gem::Version
|
54
60
|
version: '2.12'
|
61
|
+
none: false
|
55
62
|
- !ruby/object:Gem::Dependency
|
63
|
+
prerelease: false
|
56
64
|
name: yard
|
65
|
+
type: :development
|
57
66
|
requirement: !ruby/object:Gem::Requirement
|
58
67
|
requirements:
|
59
68
|
- - ~>
|
60
69
|
- !ruby/object:Gem::Version
|
61
70
|
version: '0.8'
|
62
|
-
|
63
|
-
prerelease: false
|
71
|
+
none: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
65
73
|
requirements:
|
66
74
|
- - ~>
|
67
75
|
- !ruby/object:Gem::Version
|
68
76
|
version: '0.8'
|
77
|
+
none: false
|
69
78
|
- !ruby/object:Gem::Dependency
|
79
|
+
prerelease: false
|
70
80
|
name: mongoid-rspec
|
81
|
+
type: :development
|
71
82
|
requirement: !ruby/object:Gem::Requirement
|
72
83
|
requirements:
|
73
84
|
- - ~>
|
74
85
|
- !ruby/object:Gem::Version
|
75
86
|
version: '1.5'
|
76
|
-
|
77
|
-
prerelease: false
|
87
|
+
none: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
79
89
|
requirements:
|
80
90
|
- - ~>
|
81
91
|
- !ruby/object:Gem::Version
|
82
92
|
version: '1.5'
|
93
|
+
none: false
|
83
94
|
- !ruby/object:Gem::Dependency
|
95
|
+
prerelease: false
|
84
96
|
name: database_cleaner
|
97
|
+
type: :development
|
85
98
|
requirement: !ruby/object:Gem::Requirement
|
86
99
|
requirements:
|
87
100
|
- - ~>
|
88
101
|
- !ruby/object:Gem::Version
|
89
102
|
version: '1.0'
|
90
|
-
|
91
|
-
prerelease: false
|
103
|
+
none: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
93
105
|
requirements:
|
94
106
|
- - ~>
|
95
107
|
- !ruby/object:Gem::Version
|
96
108
|
version: '1.0'
|
109
|
+
none: false
|
97
110
|
- !ruby/object:Gem::Dependency
|
111
|
+
prerelease: false
|
98
112
|
name: redcarpet
|
113
|
+
type: :development
|
99
114
|
requirement: !ruby/object:Gem::Requirement
|
100
115
|
requirements:
|
101
116
|
- - ~>
|
102
117
|
- !ruby/object:Gem::Version
|
103
118
|
version: '2.2'
|
104
|
-
|
105
|
-
prerelease: false
|
119
|
+
none: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
122
|
- - ~>
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '2.2'
|
125
|
+
none: false
|
111
126
|
description: MultiTenancy with Mongoid
|
112
127
|
email:
|
113
128
|
- aymeric.brisse@mperfect-memory.com
|
@@ -129,19 +144,21 @@ files:
|
|
129
144
|
- lib/mongoid/validators/tenant_validator.rb
|
130
145
|
- mongoid-multitenancy.gemspec
|
131
146
|
- spec/immutable_spec.rb
|
147
|
+
- spec/inheritance_spec.rb
|
132
148
|
- spec/mandatory_spec.rb
|
133
149
|
- spec/models/account.rb
|
134
150
|
- spec/models/immutable.rb
|
135
151
|
- spec/models/mandatory.rb
|
136
152
|
- spec/models/mutable.rb
|
153
|
+
- spec/models/mutable_child.rb
|
137
154
|
- spec/models/optional.rb
|
138
155
|
- spec/mongoid-multitenancy_spec.rb
|
156
|
+
- spec/mutable_child_spec.rb
|
139
157
|
- spec/mutable_spec.rb
|
140
158
|
- spec/optional_spec.rb
|
141
159
|
- spec/spec_helper.rb
|
142
160
|
homepage: https://github.com/PerfectMemory/mongoid-multitenancy
|
143
161
|
licenses: []
|
144
|
-
metadata: {}
|
145
162
|
post_install_message:
|
146
163
|
rdoc_options: []
|
147
164
|
require_paths:
|
@@ -150,27 +167,38 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
150
167
|
requirements:
|
151
168
|
- - ! '>='
|
152
169
|
- !ruby/object:Gem::Version
|
170
|
+
segments:
|
171
|
+
- 0
|
172
|
+
hash: 3855106664827069335
|
153
173
|
version: '0'
|
174
|
+
none: false
|
154
175
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
176
|
requirements:
|
156
177
|
- - ! '>='
|
157
178
|
- !ruby/object:Gem::Version
|
179
|
+
segments:
|
180
|
+
- 0
|
181
|
+
hash: 3855106664827069335
|
158
182
|
version: '0'
|
183
|
+
none: false
|
159
184
|
requirements: []
|
160
185
|
rubyforge_project:
|
161
|
-
rubygems_version:
|
186
|
+
rubygems_version: 1.8.25
|
162
187
|
signing_key:
|
163
|
-
specification_version:
|
188
|
+
specification_version: 3
|
164
189
|
summary: Support of a multi-tenant database with Mongoid
|
165
190
|
test_files:
|
166
191
|
- spec/immutable_spec.rb
|
192
|
+
- spec/inheritance_spec.rb
|
167
193
|
- spec/mandatory_spec.rb
|
168
194
|
- spec/models/account.rb
|
169
195
|
- spec/models/immutable.rb
|
170
196
|
- spec/models/mandatory.rb
|
171
197
|
- spec/models/mutable.rb
|
198
|
+
- spec/models/mutable_child.rb
|
172
199
|
- spec/models/optional.rb
|
173
200
|
- spec/mongoid-multitenancy_spec.rb
|
201
|
+
- spec/mutable_child_spec.rb
|
174
202
|
- spec/mutable_spec.rb
|
175
203
|
- spec/optional_spec.rb
|
176
204
|
- spec/spec_helper.rb
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
ZWQ3NzVkNzFkZGVlMDc3Y2Y5NTc1ZjI0MDhkNjA0YWRhNDIxMzMzNA==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZDMzNmQyMmFmZmEyYTYwYWM5ZjA3NGI0NzkxOGI1MGIxYTU0NGM2OA==
|
7
|
-
!binary "U0hBNTEy":
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
YjJkOGZlZDVkODlhODE3ZWUwYzM2NjliZmRhNjRhMDYxYWI3NWJiZDE5YWU3
|
10
|
-
YWQ3ODg1OWUwNzRmYTg2OWMyMDA2OTY2MmNlZGE1Y2JkNWExNTM1NjI4YTc0
|
11
|
-
NWYwZGE3MmE2OGYxMzNhZWNkMjI2YzE0ZmE2NGMyNzAzMmZiYTg=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
YTBlZjk0OGFmM2Q4YjZhYjYyNjc3MTY0MmNiYTBjZjgxODNjM2Y3ZDA1NzMx
|
14
|
-
YmQ4MDkxOGU4MTgyMWM5ZWRiYThkMTUxMGJkYmQxOTY0OTYwMGM2ZWE3YTAy
|
15
|
-
ZDFmYzg3Y2FjOTAxMDZkZWMwNTg1NjExOWY5NjFlZjc2NzJmNDg=
|