mongoid-multitenancy 0.3.4 → 0.4.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 ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NTdmMTA4ODVhMTI1Njk1YzMyMGI3OTA5ZDUxYmNkMDkzMmY3MTE4Nw==
5
+ data.tar.gz: !binary |-
6
+ NGY5ZGFlNmJjMjQ5MzhlOWI4M2NhY2FkMGRkZTk0MjQzNmI3ZDY1MQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ZDQwNDZmZDc3N2NlYmRiMDJhMzQ0YmVlZDc2NWVmZmY4ZWRkYTY0ZjgzMzVk
10
+ Yzg1M2I5ZDZkOWM4ZDk1YTJhODk4YWNhNjVkY2I1NTM0MTNjNTRlNDZmNzBi
11
+ ZTM0NDAzYTM3YmI5NDZhOTI5ODQ4MTEzMGRhNWViOTc0NWZmY2Y=
12
+ data.tar.gz: !binary |-
13
+ OTkwYmNkMzIwY2MwNjRhNTIwZTVkNjliNDM0NWZiNzUzNTI3NWQ0YTY3NGZk
14
+ YjgxYzQ0M2RmZWMzNjYxZGNiNDUzZjNhOTkyNjJlYmU4ZGVlZDA3NmNiZjJi
15
+ OWFjMzEzYjdjNWY3MTcxZWRjN2JlNzBhMDE5YzVlMzMyOTBhZmU=
data/.gitignore CHANGED
@@ -16,3 +16,4 @@ tmp
16
16
  .yardoc
17
17
  _yardoc
18
18
  doc/
19
+ Gemfile*.lock
data/.travis.yml ADDED
@@ -0,0 +1,14 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - 2.1.0
6
+ - ruby-head
7
+ - jruby
8
+ - jruby-head
9
+ gemfile:
10
+ - gemfiles/Gemfile.mongoid-3.0
11
+ - gemfiles/Gemfile.mongoid-4.0
12
+ - Gemfile
13
+ services:
14
+ - mongodb
data/Gemfile CHANGED
@@ -1,4 +1,16 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ gem 'mongoid', '~> 4.0.alpha'
4
+
5
+ gem 'rake', '~> 10.0'
6
+
7
+ group :test do
8
+ gem 'coveralls', :require => false
9
+ gem 'rspec', '~> 2.12'
10
+ gem 'yard', '~> 0.8'
11
+ gem 'mongoid-rspec', '~> 1.5'
12
+ gem 'database_cleaner', '~> 1.0'
13
+ end
14
+
3
15
  # Specify your gem's dependencies in mongoid-multitenancy.gemspec
4
- gemspec
16
+ gemspec
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # mongoid-multitenancy
1
+ # mongoid-multitenancy [![Build Status](https://travis-ci.org/PerfectMemory/mongoid-multitenancy.png?branch=master)](https://travis-ci.org/PerfectMemory/mongoid-multitenancy.png?branch=master) [![Coverage Status](https://coveralls.io/repos/PerfectMemory/mongoid-multitenancy/badge.png?branch=master)](https://coveralls.io/r/PerfectMemory/mongoid-multitenancy) [![Code Climate](https://codeclimate.com/github/PerfectMemory/mongoid-multitenancy.png)](https://codeclimate.com/github/PerfectMemory/mongoid-multitenancy) [![Dependency Status](https://gemnasium.com/PerfectMemory/mongoid-multitenancy.png)](https://gemnasium.com/PerfectMemory/mongoid-multitenancy)
2
2
 
3
3
  mongoid-multitenancy adds the ability to scope [Mongoid](https://github.com/mongoid/mongoid) models to a tenant in a **shared database strategy**. Tenants are represented by a tenant model, such as `Client`. mongoid-multitenancy will help you set the current tenant on each request and ensures all 'tenant models' are always properly scoped to the current tenant: when viewing, searching and creating.
4
4
 
@@ -0,0 +1,16 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'mongoid', '~> 3.0'
4
+
5
+ gem 'rake', '~> 10.0'
6
+
7
+ group :test do
8
+ gem 'coveralls', :require => false
9
+ gem 'rspec', '~> 2.12'
10
+ gem 'yard', '~> 0.8'
11
+ gem 'mongoid-rspec', '~> 1.5'
12
+ gem 'database_cleaner', '~> 1.0'
13
+ end
14
+
15
+ # Specify your gem's dependencies in mongoid-multitenancy.gemspec
16
+ gemspec :path => '..'
@@ -0,0 +1,16 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'mongoid', '~> 4.0.alpha'
4
+
5
+ gem 'rake', '~> 10.0'
6
+
7
+ group :test do
8
+ gem 'coveralls', :require => false
9
+ gem 'rspec', '~> 2.12'
10
+ gem 'yard', '~> 0.8'
11
+ gem 'mongoid-rspec', '~> 1.5'
12
+ gem 'database_cleaner', '~> 1.0'
13
+ end
14
+
15
+ # Specify your gem's dependencies in mongoid-multitenancy.gemspec
16
+ gemspec :path => '..'
@@ -7,6 +7,11 @@ module Mongoid
7
7
  module Multitenancy
8
8
  class << self
9
9
 
10
+ # Returns true if using Mongoid 4
11
+ def mongoid4?
12
+ Mongoid::VERSION.start_with? '4'
13
+ end
14
+
10
15
  # Set the current tenant. Make it Thread aware
11
16
  def current_tenant=(tenant)
12
17
  Thread.current[:current_tenant] = tenant
@@ -50,7 +50,13 @@ module Mongoid
50
50
 
51
51
  # Redefine 'validates_with' to add the tenant scope when using a UniquenessValidator
52
52
  def validates_with(*args, &block)
53
- if args.first == Validations::UniquenessValidator
53
+ validator = if Mongoid::Multitenancy.mongoid4?
54
+ Validatable::UniquenessValidator
55
+ else
56
+ Validations::UniquenessValidator
57
+ end
58
+
59
+ if args.first == validator
54
60
  args.last[:scope] = Array(args.last[:scope]) << self.tenant_field
55
61
  end
56
62
  super(*args, &block)
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module Multitenancy
3
- VERSION = "0.3.4"
3
+ VERSION = "0.4.0"
4
4
  end
5
5
  end
@@ -15,12 +15,5 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = Mongoid::Multitenancy::VERSION
17
17
 
18
- gem.add_dependency('mongoid', '~> 3')
19
-
20
- gem.add_development_dependency('rake', '~> 10.0')
21
- gem.add_development_dependency('rspec', '~> 2.12')
22
- gem.add_development_dependency('yard', '~> 0.8')
23
- gem.add_development_dependency('mongoid-rspec', '~> 1.5')
24
- gem.add_development_dependency('database_cleaner', '~> 1.0')
25
- gem.add_development_dependency('redcarpet', '~> 2.2')
18
+ gem.add_dependency('mongoid', '>= 3.0')
26
19
  end
data/spec/spec_helper.rb CHANGED
@@ -1,9 +1,13 @@
1
- $LOAD_PATH.unshift(File.dirname(__FILE__))
2
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
1
  MODELS = File.join(File.dirname(__FILE__), "models")
4
2
 
5
- require 'rubygems'
6
- require 'bundler/setup'
3
+ require 'simplecov'
4
+ require 'coveralls'
5
+
6
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
7
+ SimpleCov::Formatter::HTMLFormatter,
8
+ Coveralls::SimpleCov::Formatter
9
+ ]
10
+ SimpleCov.start
7
11
 
8
12
  require 'rspec'
9
13
  require 'mongoid'
@@ -11,6 +15,8 @@ require 'mongoid-multitenancy'
11
15
  require 'database_cleaner'
12
16
  require 'mongoid-rspec'
13
17
 
18
+ require_relative 'support/mongoid'
19
+
14
20
  Dir["#{MODELS}/*.rb"].each { |f| require f }
15
21
 
16
22
  Mongoid.configure do |config|
@@ -0,0 +1,30 @@
1
+ module Mongoid
2
+ module Matchers
3
+ class HaveIndexForMatcher
4
+ def matches?(klass)
5
+ @klass = klass.is_a?(Class) ? klass : klass.class
6
+ @errors = []
7
+
8
+ if Mongoid::VERSION.to_i < 4
9
+ index_options = @klass.index_options
10
+ else
11
+ index_options = Hash[@klass.index_specifications.map{|i| [i.key, i.options]}]
12
+ end
13
+
14
+ unless index_options[@index_fields]
15
+ @errors.push "no index for #{@index_fields}"
16
+ else
17
+ if !@options.nil? && !@options.empty?
18
+ @options.each do |option, option_value|
19
+ if index_options[@index_fields][option] != option_value
20
+ @errors.push "index for #{@index_fields.inspect} with options of #{index_options[@index_fields].inspect}"
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ @errors.empty?
27
+ end
28
+ end
29
+ end
30
+ end
metadata CHANGED
@@ -1,128 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-multitenancy
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.3.4
4
+ version: 0.4.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Aymeric Brisse
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-10-24 00:00:00.000000000 Z
11
+ date: 2014-01-28 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- version_requirements: !ruby/object:Gem::Requirement
16
- none: false
17
- requirements:
18
- - - ~>
19
- - !ruby/object:Gem::Version
20
- version: '3'
21
14
  name: mongoid
22
15
  requirement: !ruby/object:Gem::Requirement
23
- none: false
24
16
  requirements:
25
- - - ~>
17
+ - - ! '>='
26
18
  - !ruby/object:Gem::Version
27
- version: '3'
28
- prerelease: false
19
+ version: '3.0'
29
20
  type: :runtime
30
- - !ruby/object:Gem::Dependency
31
- version_requirements: !ruby/object:Gem::Requirement
32
- none: false
33
- requirements:
34
- - - ~>
35
- - !ruby/object:Gem::Version
36
- version: '10.0'
37
- name: rake
38
- requirement: !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ~>
42
- - !ruby/object:Gem::Version
43
- version: '10.0'
44
- prerelease: false
45
- type: :development
46
- - !ruby/object:Gem::Dependency
47
- version_requirements: !ruby/object:Gem::Requirement
48
- none: false
49
- requirements:
50
- - - ~>
51
- - !ruby/object:Gem::Version
52
- version: '2.12'
53
- name: rspec
54
- requirement: !ruby/object:Gem::Requirement
55
- none: false
56
- requirements:
57
- - - ~>
58
- - !ruby/object:Gem::Version
59
- version: '2.12'
60
- prerelease: false
61
- type: :development
62
- - !ruby/object:Gem::Dependency
63
- version_requirements: !ruby/object:Gem::Requirement
64
- none: false
65
- requirements:
66
- - - ~>
67
- - !ruby/object:Gem::Version
68
- version: '0.8'
69
- name: yard
70
- requirement: !ruby/object:Gem::Requirement
71
- none: false
72
- requirements:
73
- - - ~>
74
- - !ruby/object:Gem::Version
75
- version: '0.8'
76
- prerelease: false
77
- type: :development
78
- - !ruby/object:Gem::Dependency
79
- version_requirements: !ruby/object:Gem::Requirement
80
- none: false
81
- requirements:
82
- - - ~>
83
- - !ruby/object:Gem::Version
84
- version: '1.5'
85
- name: mongoid-rspec
86
- requirement: !ruby/object:Gem::Requirement
87
- none: false
88
- requirements:
89
- - - ~>
90
- - !ruby/object:Gem::Version
91
- version: '1.5'
92
- prerelease: false
93
- type: :development
94
- - !ruby/object:Gem::Dependency
95
- version_requirements: !ruby/object:Gem::Requirement
96
- none: false
97
- requirements:
98
- - - ~>
99
- - !ruby/object:Gem::Version
100
- version: '1.0'
101
- name: database_cleaner
102
- requirement: !ruby/object:Gem::Requirement
103
- none: false
104
- requirements:
105
- - - ~>
106
- - !ruby/object:Gem::Version
107
- version: '1.0'
108
21
  prerelease: false
109
- type: :development
110
- - !ruby/object:Gem::Dependency
111
22
  version_requirements: !ruby/object:Gem::Requirement
112
- none: false
113
- requirements:
114
- - - ~>
115
- - !ruby/object:Gem::Version
116
- version: '2.2'
117
- name: redcarpet
118
- requirement: !ruby/object:Gem::Requirement
119
- none: false
120
23
  requirements:
121
- - - ~>
24
+ - - ! '>='
122
25
  - !ruby/object:Gem::Version
123
- version: '2.2'
124
- prerelease: false
125
- type: :development
26
+ version: '3.0'
126
27
  description: MultiTenancy with Mongoid
127
28
  email:
128
29
  - aymeric.brisse@mperfect-memory.com
@@ -132,11 +33,13 @@ extra_rdoc_files: []
132
33
  files:
133
34
  - .gitignore
134
35
  - .rspec
36
+ - .travis.yml
135
37
  - Gemfile
136
- - Gemfile.lock
137
38
  - LICENSE.TXT
138
39
  - README.md
139
40
  - Rakefile
41
+ - gemfiles/Gemfile.mongoid-3.0
42
+ - gemfiles/Gemfile.mongoid-4.0
140
43
  - lib/mongoid-multitenancy.rb
141
44
  - lib/mongoid/multitenancy.rb
142
45
  - lib/mongoid/multitenancy/document.rb
@@ -157,36 +60,30 @@ files:
157
60
  - spec/mutable_spec.rb
158
61
  - spec/optional_spec.rb
159
62
  - spec/spec_helper.rb
63
+ - spec/support/mongoid.rb
160
64
  homepage: https://github.com/PerfectMemory/mongoid-multitenancy
161
65
  licenses:
162
66
  - MIT
67
+ metadata: {}
163
68
  post_install_message:
164
69
  rdoc_options: []
165
70
  require_paths:
166
71
  - lib
167
72
  required_ruby_version: !ruby/object:Gem::Requirement
168
- none: false
169
73
  requirements:
170
74
  - - ! '>='
171
75
  - !ruby/object:Gem::Version
172
- segments:
173
- - 0
174
- hash: 1046556066794350660
175
76
  version: '0'
176
77
  required_rubygems_version: !ruby/object:Gem::Requirement
177
- none: false
178
78
  requirements:
179
79
  - - ! '>='
180
80
  - !ruby/object:Gem::Version
181
- segments:
182
- - 0
183
- hash: 1046556066794350660
184
81
  version: '0'
185
82
  requirements: []
186
83
  rubyforge_project:
187
- rubygems_version: 1.8.25
84
+ rubygems_version: 2.1.11
188
85
  signing_key:
189
- specification_version: 3
86
+ specification_version: 4
190
87
  summary: Support of a multi-tenant database with Mongoid
191
88
  test_files:
192
89
  - spec/immutable_spec.rb
@@ -203,4 +100,5 @@ test_files:
203
100
  - spec/mutable_spec.rb
204
101
  - spec/optional_spec.rb
205
102
  - spec/spec_helper.rb
103
+ - spec/support/mongoid.rb
206
104
  has_rdoc:
data/Gemfile.lock DELETED
@@ -1,55 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- mongoid-multitenancy (0.3.4)
5
- mongoid (~> 3)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- activemodel (3.2.15)
11
- activesupport (= 3.2.15)
12
- builder (~> 3.0.0)
13
- activesupport (3.2.15)
14
- i18n (~> 0.6, >= 0.6.4)
15
- multi_json (~> 1.0)
16
- builder (3.0.4)
17
- database_cleaner (1.2.0)
18
- diff-lcs (1.2.4)
19
- i18n (0.6.5)
20
- mongoid (3.1.5)
21
- activemodel (~> 3.2)
22
- moped (~> 1.4)
23
- origin (~> 1.0)
24
- tzinfo (~> 0.3.29)
25
- mongoid-rspec (1.9.0)
26
- mongoid (>= 3.0.1)
27
- rake
28
- rspec (>= 2.14)
29
- moped (1.5.1)
30
- multi_json (1.8.2)
31
- origin (1.1.0)
32
- rake (10.1.0)
33
- redcarpet (2.3.0)
34
- rspec (2.14.1)
35
- rspec-core (~> 2.14.0)
36
- rspec-expectations (~> 2.14.0)
37
- rspec-mocks (~> 2.14.0)
38
- rspec-core (2.14.6)
39
- rspec-expectations (2.14.3)
40
- diff-lcs (>= 1.1.3, < 2.0)
41
- rspec-mocks (2.14.4)
42
- tzinfo (0.3.38)
43
- yard (0.8.7.2)
44
-
45
- PLATFORMS
46
- ruby
47
-
48
- DEPENDENCIES
49
- database_cleaner (~> 1.0)
50
- mongoid-multitenancy!
51
- mongoid-rspec (~> 1.5)
52
- rake (~> 10.0)
53
- redcarpet (~> 2.2)
54
- rspec (~> 2.12)
55
- yard (~> 0.8)