multitenant 0.4.1 → 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/.ruby-version +1 -1
- data/README.md +3 -0
- data/Rakefile +7 -5
- data/lib/multitenant.rb +7 -1
- data/lib/multitenant/version.rb +1 -1
- data/multitenant.gemspec +3 -3
- data/spec/multitenant_spec.rb +9 -0
- metadata +12 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d442d62b100c49d8981f944f0a01753eb203b511c7dc6fa961294dd040a74ce8
|
4
|
+
data.tar.gz: 4559801e2f99045270bd5a84e01c773e7ae63bbc0728fb5e83111b2113c8574f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56daabe10f8062954dfd49dc003314c85d48886351ee4836ee4c9856089745f073279fe4de8fa87b77481768d7d095825a5972fe5d5cb6d99f5e79bd6e008d02
|
7
|
+
data.tar.gz: 0a0650fc7f66334106533224452c7d640bd5c344d212b892683843f9c097f421241ed497b77b5232fde53dc9f89b787eead85e5940fb4ef4b28cea9ce2539e65
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
3.0.1
|
data/README.md
CHANGED
@@ -11,6 +11,9 @@ accidentally leak data to an unintended audience.
|
|
11
11
|
class User < ActiveRecord::Base
|
12
12
|
belongs_to :tenant
|
13
13
|
belongs_to_multitenant
|
14
|
+
|
15
|
+
validates :email, uniqueness: true # application-wide uniqueness
|
16
|
+
validates :alias, uniqueness: { scope: :tenant_id } # tenant-wide uniqueness
|
14
17
|
end
|
15
18
|
|
16
19
|
Multitenant.with_tenant current_tenant do
|
data/Rakefile
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
require 'bundler'
|
2
|
-
Bundler::GemHelper.install_tasks
|
1
|
+
require 'bundler/gem_tasks'
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
begin
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
RSpec::Core::RakeTask.new('spec')
|
6
|
+
task :default => :spec
|
7
|
+
rescue LoadError
|
8
|
+
end
|
data/lib/multitenant.rb
CHANGED
@@ -3,7 +3,13 @@ require 'active_record'
|
|
3
3
|
# Multitenant: making cross tenant data leaks a thing of the past...since 2011
|
4
4
|
module Multitenant
|
5
5
|
class << self
|
6
|
-
|
6
|
+
def current_tenant=(value)
|
7
|
+
Thread.current[:current_tenant] = value
|
8
|
+
end
|
9
|
+
|
10
|
+
def current_tenant
|
11
|
+
Thread.current[:current_tenant]
|
12
|
+
end
|
7
13
|
|
8
14
|
# execute a block scoped to the current tenant
|
9
15
|
# unsets the current tenant after execution
|
data/lib/multitenant/version.rb
CHANGED
data/multitenant.gemspec
CHANGED
@@ -17,9 +17,9 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.add_dependency(%q<activerecord>, ['>= 3.1'])
|
18
18
|
|
19
19
|
s.add_development_dependency('rake')
|
20
|
-
s.add_development_dependency('sqlite3', ["~> 1.
|
21
|
-
s.add_development_dependency('rspec', ['~>
|
22
|
-
s.add_development_dependency('rspec-core', ['~>
|
20
|
+
s.add_development_dependency('sqlite3', ["~> 1.4.1"])
|
21
|
+
s.add_development_dependency('rspec', ['~> 3.0'])
|
22
|
+
s.add_development_dependency('rspec-core', ['~> 3.0'])
|
23
23
|
|
24
24
|
s.files = `git ls-files`.split("\n")
|
25
25
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/spec/multitenant_spec.rb
CHANGED
@@ -45,6 +45,15 @@ describe Multitenant do
|
|
45
45
|
it { Multitenant.current_tenant == :foo }
|
46
46
|
end
|
47
47
|
|
48
|
+
describe '#current_tenant=' do
|
49
|
+
it 'is threadsafe' do
|
50
|
+
Multitenant.current_tenant = :old_tenant
|
51
|
+
overwriter = Thread.new { Multitenant.current_tenant = :new_tenant }
|
52
|
+
overwriter.join
|
53
|
+
Multitenant.current_tenant.should == :old_tenant
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
48
57
|
describe 'Multitenant.with_tenant block' do
|
49
58
|
before do
|
50
59
|
@executed = false
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: multitenant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Sonnek
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -44,42 +44,42 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.4.1
|
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
|
-
version: 1.
|
54
|
+
version: 1.4.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: '3.0'
|
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
|
-
version:
|
68
|
+
version: '3.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec-core
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: '3.0'
|
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
|
-
version:
|
82
|
+
version: '3.0'
|
83
83
|
description: never let an unscoped Model.all accidentally leak data to an unintended
|
84
84
|
audience.
|
85
85
|
email:
|
@@ -106,7 +106,7 @@ files:
|
|
106
106
|
homepage: http://github.com/wireframe/multitenant
|
107
107
|
licenses: []
|
108
108
|
metadata: {}
|
109
|
-
post_install_message:
|
109
|
+
post_install_message:
|
110
110
|
rdoc_options: []
|
111
111
|
require_paths:
|
112
112
|
- lib
|
@@ -121,9 +121,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
121
|
- !ruby/object:Gem::Version
|
122
122
|
version: '0'
|
123
123
|
requirements: []
|
124
|
-
|
125
|
-
|
126
|
-
signing_key:
|
124
|
+
rubygems_version: 3.2.15
|
125
|
+
signing_key:
|
127
126
|
specification_version: 4
|
128
127
|
summary: scope database queries to current tenant
|
129
128
|
test_files:
|