acts_as_tenant 0.3.5 → 0.3.6
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 +8 -8
- data/CHANGELOG.md +4 -0
- data/README.md +3 -0
- data/acts_as_tenant.gemspec +3 -4
- data/lib/acts_as_tenant/controller_extensions.rb +28 -0
- data/lib/acts_as_tenant/sidekiq.rb +1 -1
- data/lib/acts_as_tenant/version.rb +1 -1
- data/spec/acts_as_tenant/configuration_spec.rb +2 -2
- data/spec/acts_as_tenant/model_extensions_spec.rb +27 -26
- data/spec/acts_as_tenant/sidekiq_spec.rb +3 -3
- data/spec/acts_as_tenant/tenant_by_filter_spec.rb +1 -1
- data/spec/acts_as_tenant/tenant_by_subdomain_or_domain.rb +42 -0
- data/spec/acts_as_tenant/tenant_by_subdomain_spec.rb +4 -4
- metadata +8 -20
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MmNiZWQ1ZWI4YWU2Y2M4YTMxNjRiN2RkYTA0MzNkN2VkZTRhNTczOA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YzUzZmVmOTdhY2NlZDQ3NGMxZWRjMDYxY2RjODBmOWE1MjJlOTRiMA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NzhmYWY4NmY3ZTkxZjE0MTIzZjdlYjc2ZTI5ZmFhMWI0OGEzZmRhYzFmYjQ3
|
10
|
+
ODhiMmVmMmE0MTFiYjBiZTQyODg1ZTU3MzRiMzZmNmJmMzYwYzZkMTI1OGJi
|
11
|
+
ZDRjODllOWMzNmVhZmUxNmFkMmM1MjRjNDhmZjU4MTc3Y2YyMjQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NmU4NjEzZGQyOGQ5ZTk2MzgyMzMyYjRmMDczNGIwOTQ4NDA4YTNmNzc0MTU4
|
14
|
+
ZDc5M2UwNDMzMTI5YmExN2I1MjRhYTgxMDgyYjI0MjY3OWZkNjgyOTQxOGMw
|
15
|
+
MzYyNThlNjhiMTM2YTdhZTQ0NzQ4ODQxZDUzYTZlNTNhM2YyNzQ=
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -41,8 +41,11 @@ There are three ways to set the current tenant: (1) by using the subdomain to lo
|
|
41
41
|
class ApplicationController < ActionController::Base
|
42
42
|
set_current_tenant_by_subdomain(:account, :subdomain)
|
43
43
|
end
|
44
|
+
|
44
45
|
This tells acts_as_tenant to use the current subdomain to identify the current tenant. In addition, it tells acts_as_tenant that tenants are represented by the Account model and this model has a column named 'subdomain' which can be used to lookup the Account using the actual subdomain. If ommitted, the parameters will default to the values used above.
|
45
46
|
|
47
|
+
Alternatively, you could locate the tenant using the method set_current_tenant_by_subdomain_or_domain( :account, :subdomain, :domain ) which will try to match a record first by subdomain. in case it fails, by domain.
|
48
|
+
|
46
49
|
**Setting the current tenant in a controller, manually**
|
47
50
|
|
48
51
|
class ApplicationController < ActionController::Base
|
data/acts_as_tenant.gemspec
CHANGED
@@ -17,17 +17,16 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
19
|
s.require_paths = ["lib"]
|
20
|
-
|
20
|
+
|
21
21
|
#add_runtime_dependency("rails")
|
22
22
|
s.add_runtime_dependency('request_store', '>= 1.0.5')
|
23
23
|
s.add_dependency('rails','>= 3.1')
|
24
24
|
#s.add_dependency('request_store', '>= 1.0.5')
|
25
25
|
|
26
|
-
s.add_development_dependency('rspec')
|
26
|
+
s.add_development_dependency('rspec', '>=3.0')
|
27
27
|
s.add_development_dependency('rspec-rails')
|
28
28
|
s.add_development_dependency('database_cleaner')
|
29
29
|
s.add_development_dependency('sqlite3')
|
30
|
-
s.add_development_dependency('debugger')
|
31
30
|
|
32
|
-
s.add_development_dependency('sidekiq')
|
31
|
+
s.add_development_dependency('sidekiq', '>= 3.0')
|
33
32
|
end
|
@@ -26,6 +26,34 @@ module ActsAsTenant
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
29
|
+
|
30
|
+
# 01/27/2014 Christian Yerena / @preth00nker
|
31
|
+
# this method adds the possibility of use the domain as a possible second argument to find
|
32
|
+
# the current_tenant.
|
33
|
+
def set_current_tenant_by_subdomain_or_domain(tenant = :account, primary_column = :subdomain, second_column = :domain )
|
34
|
+
self.class_eval do
|
35
|
+
cattr_accessor :tenant_class, :tenant_primary_column, :tenant_second_column
|
36
|
+
end
|
37
|
+
|
38
|
+
self.tenant_class = tenant.to_s.camelcase.constantize
|
39
|
+
self.tenant_primary_column = primary_column.to_sym
|
40
|
+
self.tenant_second_column = second_column.to_sym
|
41
|
+
|
42
|
+
self.class_eval do
|
43
|
+
before_filter :find_tenant_by_subdomain_or_domain
|
44
|
+
helper_method :current_tenant
|
45
|
+
|
46
|
+
private
|
47
|
+
def find_tenant_by_subdomain_or_domain
|
48
|
+
ActsAsTenant.current_tenant = tenant_class.where(tenant_primary_column => request.subdomains.last).first || tenant_class.where(tenant_second_column => request.domain).first
|
49
|
+
end
|
50
|
+
|
51
|
+
def current_tenant
|
52
|
+
ActsAsTenant.current_tenant
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
29
57
|
|
30
58
|
# This method sets up a method that allows manual setting of the current_tenant. This method should
|
31
59
|
# be used in a before_filter. In addition, a helper is setup that returns the current_tenant
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module ActsAsTenant::Sidekiq
|
2
2
|
# Get the current tenant and store in the message to be sent to Sidekiq.
|
3
3
|
class Client
|
4
|
-
def call(worker_class, msg, queue)
|
4
|
+
def call(worker_class, msg, queue, redis_pool)
|
5
5
|
msg['acts_as_tenant'] ||=
|
6
6
|
{
|
7
7
|
'class' => ActsAsTenant.current_tenant.class.name,
|
@@ -7,7 +7,7 @@ describe ActsAsTenant::Configuration do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
it 'provides defaults' do
|
10
|
-
ActsAsTenant.configuration.require_tenant.
|
10
|
+
expect(ActsAsTenant.configuration.require_tenant).not_to be_truthy
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
@@ -21,7 +21,7 @@ describe ActsAsTenant::Configuration do
|
|
21
21
|
config.require_tenant = true
|
22
22
|
end
|
23
23
|
|
24
|
-
ActsAsTenant.configuration.require_tenant.
|
24
|
+
expect(ActsAsTenant.configuration.require_tenant).to eq(true)
|
25
25
|
end
|
26
26
|
|
27
27
|
end
|
@@ -5,6 +5,7 @@ ActiveRecord::Schema.define(:version => 1) do
|
|
5
5
|
create_table :accounts, :force => true do |t|
|
6
6
|
t.column :name, :string
|
7
7
|
t.column :subdomain, :string
|
8
|
+
t.column :domain, :string
|
8
9
|
end
|
9
10
|
|
10
11
|
create_table :projects, :force => true do |t|
|
@@ -110,11 +111,11 @@ describe ActsAsTenant do
|
|
110
111
|
end
|
111
112
|
|
112
113
|
describe 'is_scoped_as_tenant should return the correct value when true' do
|
113
|
-
it {Project.respond_to?(:scoped_by_tenant?).
|
114
|
+
it {expect(Project.respond_to?(:scoped_by_tenant?)).to eq(true)}
|
114
115
|
end
|
115
116
|
|
116
117
|
describe 'is_scoped_as_tenant should return the correct value when false' do
|
117
|
-
it {UnscopedModel.respond_to?(:scoped_by_tenant?).
|
118
|
+
it {expect(UnscopedModel.respond_to?(:scoped_by_tenant?)).to eq(false)}
|
118
119
|
end
|
119
120
|
|
120
121
|
describe 'tenant_id should be immutable, if already set' do
|
@@ -123,7 +124,7 @@ describe ActsAsTenant do
|
|
123
124
|
@project = @account.projects.create!(:name => 'bar')
|
124
125
|
end
|
125
126
|
|
126
|
-
it {
|
127
|
+
it { expect {@project.account_id = @account.id + 1}.to raise_error }
|
127
128
|
end
|
128
129
|
|
129
130
|
describe 'tenant_id should be mutable, if not already set' do
|
@@ -132,8 +133,8 @@ describe ActsAsTenant do
|
|
132
133
|
@project = Project.create!(:name => 'bar')
|
133
134
|
end
|
134
135
|
|
135
|
-
it { @project.account_id.
|
136
|
-
it {
|
136
|
+
it { expect(@project.account_id).to be_nil }
|
137
|
+
it { expect { @project.account = @account }.not_to raise_error }
|
137
138
|
end
|
138
139
|
|
139
140
|
describe 'tenant_id should auto populate after initialization' do
|
@@ -141,7 +142,7 @@ describe ActsAsTenant do
|
|
141
142
|
@account = Account.create!(:name => 'foo')
|
142
143
|
ActsAsTenant.current_tenant = @account
|
143
144
|
end
|
144
|
-
it {Project.new.account_id.
|
145
|
+
it {expect(Project.new.account_id).to eq(@account.id)}
|
145
146
|
end
|
146
147
|
|
147
148
|
describe 'Handles custom foreign_key on tenant model' do
|
@@ -151,7 +152,7 @@ describe ActsAsTenant do
|
|
151
152
|
@custom_foreign_key_task = CustomForeignKeyTask.create!(:name => 'foo')
|
152
153
|
end
|
153
154
|
|
154
|
-
it { @custom_foreign_key_task.account.
|
155
|
+
it { expect(@custom_foreign_key_task.account).to eq(@account) }
|
155
156
|
end
|
156
157
|
|
157
158
|
# Scoping models
|
@@ -167,8 +168,8 @@ describe ActsAsTenant do
|
|
167
168
|
@projects = Project.all
|
168
169
|
end
|
169
170
|
|
170
|
-
it { @projects.length.
|
171
|
-
it { @projects.
|
171
|
+
it { expect(@projects.length).to eq(1) }
|
172
|
+
it { expect(@projects).to eq([@project1]) }
|
172
173
|
end
|
173
174
|
|
174
175
|
describe 'Project.unscoped.all should return the unscoped value' do
|
@@ -183,7 +184,7 @@ describe ActsAsTenant do
|
|
183
184
|
@projects = Project.unscoped
|
184
185
|
end
|
185
186
|
|
186
|
-
it { @projects.count.
|
187
|
+
it { expect(@projects.count).to eq(2) }
|
187
188
|
end
|
188
189
|
|
189
190
|
describe 'Querying the tenant from a scoped model without a tenant set' do
|
@@ -219,11 +220,11 @@ describe ActsAsTenant do
|
|
219
220
|
end
|
220
221
|
|
221
222
|
it 'should correctly set the tenant on the task created with current_tenant set' do
|
222
|
-
@task2.account.
|
223
|
+
expect(@task2.account).to eq(@account)
|
223
224
|
end
|
224
225
|
|
225
226
|
it 'should filter out the non-tenant task from the project' do
|
226
|
-
@tasks.length.
|
227
|
+
expect(@tasks.length).to eq(1)
|
227
228
|
end
|
228
229
|
end
|
229
230
|
|
@@ -237,17 +238,17 @@ describe ActsAsTenant do
|
|
237
238
|
@task = @project2.tasks.create!(:name => 'bar')
|
238
239
|
end
|
239
240
|
|
240
|
-
it { @task.update_attributes(:project_id => @project1.id).
|
241
|
+
it { expect(@task.update_attributes(:project_id => @project1.id)).to eq(false) }
|
241
242
|
end
|
242
243
|
|
243
244
|
describe "Create and save an AaT-enabled child without it having a parent" do
|
244
245
|
@account = Account.create!(:name => 'baz')
|
245
246
|
ActsAsTenant.current_tenant = @account
|
246
|
-
Task.create(:name => 'bar').valid
|
247
|
+
it { expect(Task.create(:name => 'bar').valid?).to eq(true) }
|
247
248
|
end
|
248
249
|
|
249
250
|
describe "It should be possible to use aliased associations" do
|
250
|
-
it { AliasedTask.create(:name => 'foo', :project_alias => @project2).valid
|
251
|
+
it { expect(AliasedTask.create(:name => 'foo', :project_alias => @project2).valid?).to eq(true) }
|
251
252
|
end
|
252
253
|
|
253
254
|
# Additional default_scopes
|
@@ -268,8 +269,8 @@ describe ActsAsTenant do
|
|
268
269
|
end
|
269
270
|
|
270
271
|
it 'should apply both the tenant scope and the user defined default_scope, including :order' do
|
271
|
-
@tasks.length.
|
272
|
-
@tasks.
|
272
|
+
expect(@tasks.length).to eq(3)
|
273
|
+
expect(@tasks).to eq([@task2, @task3, @task4])
|
273
274
|
end
|
274
275
|
end
|
275
276
|
|
@@ -282,13 +283,13 @@ describe ActsAsTenant do
|
|
282
283
|
end
|
283
284
|
|
284
285
|
it 'should not be possible to create a duplicate within the same tenant' do
|
285
|
-
Project.create(:name => 'existing_name').valid
|
286
|
+
expect(Project.create(:name => 'existing_name').valid?).to eq(false)
|
286
287
|
end
|
287
288
|
|
288
289
|
it 'should be possible to create a duplicate outside the tenant scope' do
|
289
290
|
account = Account.create!(:name => 'baz')
|
290
291
|
ActsAsTenant.current_tenant = account
|
291
|
-
Project.create(:name => 'bar').valid
|
292
|
+
expect(Project.create(:name => 'bar').valid?).to eq(true)
|
292
293
|
end
|
293
294
|
end
|
294
295
|
|
@@ -297,8 +298,8 @@ describe ActsAsTenant do
|
|
297
298
|
UniqueTask.create!(:name => 'foo', :user_defined_scope => 'unique_scope')
|
298
299
|
end
|
299
300
|
|
300
|
-
it { UniqueTask.create(:name => 'foo', :user_defined_scope => 'another_scope').
|
301
|
-
it { UniqueTask.create(:name => 'foo', :user_defined_scope => 'unique_scope').
|
301
|
+
it { expect(UniqueTask.create(:name => 'foo', :user_defined_scope => 'another_scope')).to be_valid }
|
302
|
+
it { expect(UniqueTask.create(:name => 'foo', :user_defined_scope => 'unique_scope')).not_to be_valid }
|
302
303
|
end
|
303
304
|
|
304
305
|
describe 'When using validates_uniqueness_of in a NON-aat model' do
|
@@ -306,7 +307,7 @@ describe ActsAsTenant do
|
|
306
307
|
UnscopedModel.create!(:name => 'foo')
|
307
308
|
end
|
308
309
|
it 'should not be possible to create duplicates' do
|
309
|
-
UnscopedModel.create(:name => 'foo').valid
|
310
|
+
expect(UnscopedModel.create(:name => 'foo').valid?).to eq(false)
|
310
311
|
end
|
311
312
|
end
|
312
313
|
|
@@ -316,7 +317,7 @@ describe ActsAsTenant do
|
|
316
317
|
@account = Account.create!(:name => 'baz')
|
317
318
|
|
318
319
|
ActsAsTenant.with_tenant(@account) do
|
319
|
-
ActsAsTenant.current_tenant.
|
320
|
+
expect(ActsAsTenant.current_tenant).to eq(@account)
|
320
321
|
end
|
321
322
|
end
|
322
323
|
|
@@ -329,7 +330,7 @@ describe ActsAsTenant do
|
|
329
330
|
|
330
331
|
end
|
331
332
|
|
332
|
-
ActsAsTenant.current_tenant.
|
333
|
+
expect(ActsAsTenant.current_tenant).to eq(@account1)
|
333
334
|
end
|
334
335
|
|
335
336
|
it "should return the value of the block" do
|
@@ -341,7 +342,7 @@ describe ActsAsTenant do
|
|
341
342
|
"something"
|
342
343
|
end
|
343
344
|
|
344
|
-
value.
|
345
|
+
expect(value).to eq "something"
|
345
346
|
end
|
346
347
|
|
347
348
|
it "should raise an error when no block is provided" do
|
@@ -355,7 +356,7 @@ describe ActsAsTenant do
|
|
355
356
|
before do
|
356
357
|
@account1 = Account.create!(:name => 'foo')
|
357
358
|
@project1 = @account1.projects.create!(:name => 'foobar')
|
358
|
-
ActsAsTenant.configuration.
|
359
|
+
allow(ActsAsTenant.configuration).to receive_messages(require_tenant: true)
|
359
360
|
end
|
360
361
|
|
361
362
|
it "should raise an error when no tenant is provided" do
|
@@ -14,7 +14,7 @@ describe ActsAsTenant::Sidekiq do
|
|
14
14
|
ActsAsTenant.current_tenant = account
|
15
15
|
|
16
16
|
msg = {}
|
17
|
-
subject.call(nil, msg, nil) { }
|
17
|
+
subject.call(nil, msg, nil, nil) { }
|
18
18
|
expect(msg).to eq message
|
19
19
|
end
|
20
20
|
|
@@ -22,7 +22,7 @@ describe ActsAsTenant::Sidekiq do
|
|
22
22
|
expect(ActsAsTenant.current_tenant).to be_nil
|
23
23
|
|
24
24
|
msg = {}
|
25
|
-
subject.call(nil, msg, nil) { }
|
25
|
+
subject.call(nil, msg, nil, nil) { }
|
26
26
|
expect(msg).not_to eq message
|
27
27
|
end
|
28
28
|
end
|
@@ -54,7 +54,7 @@ describe ActsAsTenant::Sidekiq do
|
|
54
54
|
describe 'Sidekiq configuration' do
|
55
55
|
describe 'client configuration' do
|
56
56
|
it 'includes ActsAsTenant client' do
|
57
|
-
expect(Sidekiq.client_middleware.exists?(ActsAsTenant::Sidekiq::Client)).to
|
57
|
+
expect(Sidekiq.client_middleware.exists?(ActsAsTenant::Sidekiq::Client)).to eq(true)
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
@@ -28,6 +28,6 @@ describe ApplicationController2, :type => :controller do
|
|
28
28
|
|
29
29
|
it 'Finds the correct tenant using the filter command' do
|
30
30
|
get :index
|
31
|
-
ActsAsTenant.current_tenant.name.
|
31
|
+
expect(ActsAsTenant.current_tenant.name).to eq 'account1'
|
32
32
|
end
|
33
33
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
#Setup test specific ApplicationController
|
4
|
+
class Account; end # this is so the spec will work in isolation
|
5
|
+
|
6
|
+
class ApplicationController < ActionController::Base
|
7
|
+
include Rails.application.routes.url_helpers
|
8
|
+
set_current_tenant_by_subdomain_or_domain
|
9
|
+
end
|
10
|
+
|
11
|
+
# Start testing
|
12
|
+
describe ApplicationController, :type => :controller do
|
13
|
+
controller do
|
14
|
+
def index
|
15
|
+
render :text => "custom called"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'Finds the correct tenant with a example1.com' do
|
20
|
+
@request.host = "example1.com"
|
21
|
+
expect(Account).to receive(:where).with({subdomain: nil}) {[]}
|
22
|
+
expect(Account).to receive(:where).with({domain: 'example1.com'}) {['account1']}
|
23
|
+
get :index
|
24
|
+
expect(ActsAsTenant.current_tenant).to eq 'account1'
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'Finds the correct tenant with a subdomain.example.com' do
|
28
|
+
@request.host = "subdomain.example.com"
|
29
|
+
expect(Account).to receive(:where).with({subdomain: 'subdomain'}) {['account1']}
|
30
|
+
get :index
|
31
|
+
expect(ActsAsTenant.current_tenant).to eq "account1"
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'Finds the correct tenant with a www.subdomain.example.com' do
|
35
|
+
@request.host = "subdomain.example.com"
|
36
|
+
expect(Account).to receive(:where).with({subdomain: 'subdomain'}) {['account1']}
|
37
|
+
get :index
|
38
|
+
expect(ActsAsTenant.current_tenant).to eq "account1"
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
end
|
@@ -18,15 +18,15 @@ describe ApplicationController, :type => :controller do
|
|
18
18
|
|
19
19
|
it 'Finds the correct tenant with a subdomain.example.com' do
|
20
20
|
@request.host = "account1.example.com"
|
21
|
-
Account.
|
21
|
+
expect(Account).to receive(:where).with({subdomain: 'account1'}) {['account1']}
|
22
22
|
get :index
|
23
|
-
ActsAsTenant.current_tenant.
|
23
|
+
expect(ActsAsTenant.current_tenant).to eq 'account1'
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'Finds the correct tenant with a www.subdomain.example.com' do
|
27
27
|
@request.host = "www.account1.example.com"
|
28
|
-
Account.
|
28
|
+
expect(Account).to receive(:where).with({subdomain: 'account1'}) {['account1']}
|
29
29
|
get :index
|
30
|
-
ActsAsTenant.current_tenant.
|
30
|
+
expect(ActsAsTenant.current_tenant).to eq 'account1'
|
31
31
|
end
|
32
32
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_tenant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erwin Matthijssen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: request_store
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ! '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
47
|
+
version: '3.0'
|
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: '0'
|
54
|
+
version: '3.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec-rails
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,34 +94,20 @@ dependencies:
|
|
94
94
|
- - ! '>='
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: debugger
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ! '>='
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ! '>='
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
98
|
name: sidekiq
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
101
|
- - ! '>='
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
103
|
+
version: '3.0'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
107
|
requirements:
|
122
108
|
- - ! '>='
|
123
109
|
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
110
|
+
version: '3.0'
|
125
111
|
description: Integrates multi-tenancy into a Rails application in a convenient and
|
126
112
|
out-of-your way manner
|
127
113
|
email:
|
@@ -149,6 +135,7 @@ files:
|
|
149
135
|
- spec/acts_as_tenant/model_extensions_spec.rb
|
150
136
|
- spec/acts_as_tenant/sidekiq_spec.rb
|
151
137
|
- spec/acts_as_tenant/tenant_by_filter_spec.rb
|
138
|
+
- spec/acts_as_tenant/tenant_by_subdomain_or_domain.rb
|
152
139
|
- spec/acts_as_tenant/tenant_by_subdomain_spec.rb
|
153
140
|
- spec/database.yml
|
154
141
|
- spec/spec_helper.rb
|
@@ -180,6 +167,7 @@ test_files:
|
|
180
167
|
- spec/acts_as_tenant/model_extensions_spec.rb
|
181
168
|
- spec/acts_as_tenant/sidekiq_spec.rb
|
182
169
|
- spec/acts_as_tenant/tenant_by_filter_spec.rb
|
170
|
+
- spec/acts_as_tenant/tenant_by_subdomain_or_domain.rb
|
183
171
|
- spec/acts_as_tenant/tenant_by_subdomain_spec.rb
|
184
172
|
- spec/database.yml
|
185
173
|
- spec/spec_helper.rb
|