activerecord-multi-tenant 1.0.4 → 1.1.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 +4 -4
- data/.travis.yml +3 -28
- data/Appraisals +6 -49
- data/Gemfile.lock +77 -61
- data/gemfiles/active_record_5.2.gemfile +2 -1
- data/gemfiles/active_record_5.2.gemfile.lock +38 -38
- data/gemfiles/active_record_6.0.gemfile +1 -1
- data/gemfiles/active_record_6.0.gemfile.lock +95 -95
- data/gemfiles/rails_5.2.gemfile +2 -1
- data/gemfiles/rails_5.2.gemfile.lock +38 -38
- data/gemfiles/rails_6.0.gemfile +1 -1
- data/gemfiles/rails_6.0.gemfile.lock +95 -95
- data/lib/activerecord-multi-tenant/controller_extensions.rb +2 -6
- data/lib/activerecord-multi-tenant/copy_from_client.rb +2 -2
- data/lib/activerecord-multi-tenant/migrations.rb +2 -2
- data/lib/activerecord-multi-tenant/model_extensions.rb +3 -9
- data/lib/activerecord-multi-tenant/multi_tenant.rb +1 -0
- data/lib/activerecord-multi-tenant/query_rewriter.rb +22 -73
- data/lib/activerecord-multi-tenant/sidekiq.rb +2 -1
- data/lib/activerecord-multi-tenant/version.rb +1 -1
- data/spec/activerecord-multi-tenant/controller_extensions_spec.rb +19 -24
- data/spec/activerecord-multi-tenant/model_extensions_spec.rb +6 -30
- data/spec/activerecord-multi-tenant/query_rewriter_spec.rb +8 -0
- data/spec/activerecord-multi-tenant/sidekiq_spec.rb +4 -4
- data/spec/schema.rb +1 -4
- data/spec/spec_helper.rb +1 -6
- metadata +6 -14
- data/gemfiles/active_record_5.1.gemfile +0 -15
- data/gemfiles/active_record_5.1.gemfile.lock +0 -180
- data/gemfiles/rails_4.2.gemfile +0 -16
- data/gemfiles/rails_4.2.gemfile.lock +0 -175
- data/gemfiles/rails_5.0.gemfile +0 -15
- data/gemfiles/rails_5.0.gemfile.lock +0 -180
- data/gemfiles/rails_5.1.gemfile +0 -15
- data/gemfiles/rails_5.1.gemfile.lock +0 -180
@@ -18,7 +18,8 @@ module Sidekiq::Middleware::MultiTenant
|
|
18
18
|
class Server
|
19
19
|
def call(worker_class, msg, queue)
|
20
20
|
if msg.has_key?('multi_tenant')
|
21
|
-
|
21
|
+
tenant = msg['multi_tenant']['class'].constantize.find(msg['multi_tenant']['id'])
|
22
|
+
MultiTenant.with(tenant) do
|
22
23
|
yield
|
23
24
|
end
|
24
25
|
else
|
@@ -21,11 +21,7 @@ describe "Controller Extensions", type: :controller do
|
|
21
21
|
describe ApplicationController, type: :controller do
|
22
22
|
controller do
|
23
23
|
def index
|
24
|
-
|
25
|
-
render body: 'custom called'
|
26
|
-
else
|
27
|
-
render text: 'custom called'
|
28
|
-
end
|
24
|
+
render body: 'custom called'
|
29
25
|
end
|
30
26
|
end
|
31
27
|
|
@@ -35,30 +31,29 @@ describe "Controller Extensions", type: :controller do
|
|
35
31
|
end
|
36
32
|
end
|
37
33
|
|
38
|
-
if ActionPack::VERSION::MAJOR >= 5
|
39
|
-
class APIApplicationController < ActionController::API
|
40
|
-
include Rails.application.routes.url_helpers
|
41
|
-
set_current_tenant_through_filter
|
42
|
-
before_action :your_method_that_finds_the_current_tenant
|
43
34
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
35
|
+
class APIApplicationController < ActionController::API
|
36
|
+
include Rails.application.routes.url_helpers
|
37
|
+
set_current_tenant_through_filter
|
38
|
+
before_action :your_method_that_finds_the_current_tenant
|
39
|
+
|
40
|
+
def your_method_that_finds_the_current_tenant
|
41
|
+
current_account = Account.new
|
42
|
+
current_account.name = 'account1'
|
43
|
+
set_current_tenant(current_account)
|
49
44
|
end
|
45
|
+
end
|
50
46
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
end
|
47
|
+
describe APIApplicationController, type: :controller do
|
48
|
+
controller do
|
49
|
+
def index
|
50
|
+
render body: 'custom called'
|
56
51
|
end
|
52
|
+
end
|
57
53
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
end
|
54
|
+
it 'Finds the correct tenant using the filter command' do
|
55
|
+
get :index
|
56
|
+
expect(MultiTenant.current_tenant.name).to eq 'account1'
|
62
57
|
end
|
63
58
|
end
|
64
59
|
end
|
@@ -412,17 +412,13 @@ describe MultiTenant do
|
|
412
412
|
account1 = Account.create! name: 'Account 1'
|
413
413
|
category1 = Category.create! name: 'Category 1'
|
414
414
|
|
415
|
-
expected_sql = if uses_prepared_statements? && ActiveRecord::VERSION::MAJOR == 5
|
415
|
+
expected_sql = if uses_prepared_statements? && ActiveRecord::VERSION::MAJOR == 5
|
416
416
|
<<-sql
|
417
417
|
SELECT "projects"."id" AS t0_r0, "projects"."account_id" AS t0_r1, "projects"."name" AS t0_r2, "categories"."id" AS t1_r0, "categories"."name" AS t1_r1 FROM "projects" LEFT OUTER JOIN "project_categories" ON "project_categories"."project_id" = "projects"."id" AND "project_categories"."account_id" = 1 AND "projects"."account_id" = 1 LEFT OUTER JOIN "categories" ON "categories"."id" = "project_categories"."category_id" AND "project_categories"."account_id" = 1 WHERE "projects"."account_id" = 1
|
418
418
|
sql
|
419
|
-
elsif uses_prepared_statements? && ActiveRecord::VERSION::MAJOR == 6
|
420
|
-
<<-sql
|
421
|
-
SELECT "projects"."id" AS t0_r0, "projects"."account_id" AS t0_r1, "projects"."name" AS t0_r2, "categories"."id" AS t1_r0, "categories"."name" AS t1_r1 FROM "projects" LEFT OUTER JOIN "project_categories" ON "project_categories"."account_id" = 1 AND "project_categories"."project_id" = "projects"."id" AND "projects"."account_id" = 1 LEFT OUTER JOIN "categories" ON "categories"."id" = "project_categories"."category_id" AND "project_categories"."account_id" = 1 WHERE "projects"."account_id" = 1
|
422
|
-
sql
|
423
419
|
else
|
424
420
|
<<-sql
|
425
|
-
SELECT "projects"."id" AS t0_r0, "projects"."account_id" AS t0_r1, "projects"."name" AS t0_r2, "categories"."id" AS t1_r0, "categories"."name" AS t1_r1 FROM "projects" LEFT OUTER JOIN "project_categories" ON "project_categories"."
|
421
|
+
SELECT "projects"."id" AS t0_r0, "projects"."account_id" AS t0_r1, "projects"."name" AS t0_r2, "categories"."id" AS t1_r0, "categories"."name" AS t1_r1 FROM "projects" LEFT OUTER JOIN "project_categories" ON "project_categories"."account_id" = 1 AND "project_categories"."project_id" = "projects"."id" AND "projects"."account_id" = 1 LEFT OUTER JOIN "categories" ON "categories"."id" = "project_categories"."category_id" AND "project_categories"."account_id" = 1 WHERE "projects"."account_id" = 1
|
426
422
|
sql
|
427
423
|
end
|
428
424
|
|
@@ -455,17 +451,13 @@ describe MultiTenant do
|
|
455
451
|
category1 = Category.create! name: 'Category 1'
|
456
452
|
|
457
453
|
MultiTenant.with(account1) do
|
458
|
-
expected_sql = if uses_prepared_statements? && ActiveRecord::VERSION::MAJOR == 5
|
454
|
+
expected_sql = if uses_prepared_statements? && ActiveRecord::VERSION::MAJOR == 5
|
459
455
|
<<-sql
|
460
456
|
SELECT "tasks".* FROM "tasks" INNER JOIN "projects" ON "projects"."id" = "tasks"."project_id" AND "projects"."account_id" = 1 LEFT JOIN project_categories pc ON project.category_id = pc.id WHERE "tasks"."account_id" = 1
|
461
457
|
sql
|
462
|
-
elsif uses_prepared_statements? && ActiveRecord::VERSION::MAJOR == 6
|
463
|
-
<<-sql
|
464
|
-
SELECT "tasks".* FROM "tasks" INNER JOIN "projects" ON "projects"."account_id" = 1 AND "projects"."id" = "tasks"."project_id" LEFT JOIN project_categories pc ON project.category_id = pc.id WHERE "tasks"."account_id" = 1
|
465
|
-
sql
|
466
458
|
else
|
467
459
|
<<-sql
|
468
|
-
SELECT "tasks".* FROM "tasks" INNER JOIN "projects" ON "projects"."
|
460
|
+
SELECT "tasks".* FROM "tasks" INNER JOIN "projects" ON "projects"."account_id" = 1 AND "projects"."id" = "tasks"."project_id" LEFT JOIN project_categories pc ON project.category_id = pc.id WHERE "tasks"."account_id" = 1
|
469
461
|
sql
|
470
462
|
end
|
471
463
|
|
@@ -497,17 +489,9 @@ describe MultiTenant do
|
|
497
489
|
<<-sql.strip
|
498
490
|
SELECT "projects".* FROM "projects" WHERE "projects"."account_id" = #{account.id} AND "projects"."id" = $1 LIMIT $2
|
499
491
|
sql
|
500
|
-
elsif uses_prepared_statements? && ActiveRecord::VERSION::MAJOR > 4
|
501
|
-
<<-sql.strip
|
502
|
-
SELECT "projects".* FROM "projects" WHERE "projects"."account_id" = #{account.id} AND "projects"."id" = $1 LIMIT $2
|
503
|
-
sql
|
504
|
-
elsif uses_prepared_statements? && ActiveRecord::VERSION::MAJOR == 4
|
505
|
-
<<-sql.strip
|
506
|
-
SELECT "projects".* FROM "projects" WHERE "projects"."account_id" = #{account.id} AND "projects"."id" = $1 LIMIT 1
|
507
|
-
sql
|
508
492
|
else
|
509
493
|
<<-sql.strip
|
510
|
-
SELECT "projects".* FROM "projects" WHERE "projects"."account_id" = #{account.id} AND "projects"."id" =
|
494
|
+
SELECT "projects".* FROM "projects" WHERE "projects"."account_id" = #{account.id} AND "projects"."id" = $1 LIMIT $2
|
511
495
|
sql
|
512
496
|
end
|
513
497
|
|
@@ -520,17 +504,9 @@ describe MultiTenant do
|
|
520
504
|
<<-sql.strip
|
521
505
|
SELECT "projects".* FROM "projects" WHERE "projects"."id" = $1 LIMIT $2
|
522
506
|
sql
|
523
|
-
elsif uses_prepared_statements? && ActiveRecord::VERSION::MAJOR > 4
|
524
|
-
<<-sql.strip
|
525
|
-
SELECT "projects".* FROM "projects" WHERE "projects"."id" = $1 LIMIT $2
|
526
|
-
sql
|
527
|
-
elsif uses_prepared_statements? && ActiveRecord::VERSION::MAJOR == 4
|
528
|
-
<<-sql.strip
|
529
|
-
SELECT "projects".* FROM "projects" WHERE "projects"."id" = $1 LIMIT 1
|
530
|
-
sql
|
531
507
|
else
|
532
508
|
<<-sql.strip
|
533
|
-
SELECT "projects".* FROM "projects" WHERE "projects"."id" =
|
509
|
+
SELECT "projects".* FROM "projects" WHERE "projects"."id" = $1 LIMIT $2
|
534
510
|
sql
|
535
511
|
end
|
536
512
|
|
@@ -90,4 +90,12 @@ describe "Query Rewriter" do
|
|
90
90
|
}.to change { Project.count }.from(3).to(1)
|
91
91
|
end
|
92
92
|
end
|
93
|
+
|
94
|
+
context "when update without arel" do
|
95
|
+
it "can call method" do
|
96
|
+
expect {
|
97
|
+
ActiveRecord::Base.connection.update("SELECT 1")
|
98
|
+
}.not_to raise_error
|
99
|
+
end
|
100
|
+
end
|
93
101
|
end
|
@@ -4,14 +4,14 @@ require 'activerecord-multi-tenant/sidekiq'
|
|
4
4
|
|
5
5
|
describe MultiTenant, 'Sidekiq' do
|
6
6
|
let(:server) { Sidekiq::Middleware::MultiTenant::Server.new }
|
7
|
+
let(:account) { Account.create(name: 'test') }
|
7
8
|
|
8
9
|
describe 'server middleware' do
|
9
10
|
it 'sets the multitenant context when provided in message' do
|
10
|
-
|
11
|
-
|
12
|
-
'multi_tenant' => { 'class' => MultiTenant.current_tenant_class, 'id' => tenant_id}},
|
11
|
+
server.call(double,{'bogus' => 'message',
|
12
|
+
'multi_tenant' => { 'class' => account.class.name, 'id' => account.id}},
|
13
13
|
'bogus_queue') do
|
14
|
-
expect(MultiTenant.current_tenant).to eq(
|
14
|
+
expect(MultiTenant.current_tenant).to eq(account)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
data/spec/schema.rb
CHANGED
@@ -181,10 +181,7 @@ end
|
|
181
181
|
class Comment < ActiveRecord::Base
|
182
182
|
multi_tenant :account
|
183
183
|
belongs_to :commentable, polymorphic: true
|
184
|
-
|
185
|
-
if ActiveRecord::VERSION::MAJOR >= 4
|
186
|
-
belongs_to :task, -> { where(comments: { commentable_type: 'Task' }) }, foreign_key: 'commentable_id'
|
187
|
-
end
|
184
|
+
belongs_to :task, -> { where(comments: { commentable_type: 'Task' }) }, foreign_key: 'commentable_id'
|
188
185
|
end
|
189
186
|
|
190
187
|
class Organization < ActiveRecord::Base
|
data/spec/spec_helper.rb
CHANGED
@@ -43,12 +43,7 @@ MultiTenantTest::Application.config.secret_token = 'x' * 40
|
|
43
43
|
MultiTenantTest::Application.config.secret_key_base = 'y' * 40
|
44
44
|
|
45
45
|
def uses_prepared_statements?
|
46
|
-
|
47
|
-
config = ActiveRecord::Base.connection.instance_variable_get(:@config)
|
48
|
-
config.fetch(:prepared_statements, true)
|
49
|
-
else
|
50
|
-
ActiveRecord::Base.connection.prepared_statements
|
51
|
-
end
|
46
|
+
ActiveRecord::Base.connection.prepared_statements
|
52
47
|
end
|
53
48
|
|
54
49
|
require 'schema'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-multi-tenant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Citus Data
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-08-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: request_store
|
@@ -168,18 +168,10 @@ files:
|
|
168
168
|
- activerecord-multi-tenant.gemspec
|
169
169
|
- docker-compose.yml
|
170
170
|
- gemfiles/.bundle/config
|
171
|
-
- gemfiles/active_record_5.1.gemfile
|
172
|
-
- gemfiles/active_record_5.1.gemfile.lock
|
173
171
|
- gemfiles/active_record_5.2.gemfile
|
174
172
|
- gemfiles/active_record_5.2.gemfile.lock
|
175
173
|
- gemfiles/active_record_6.0.gemfile
|
176
174
|
- gemfiles/active_record_6.0.gemfile.lock
|
177
|
-
- gemfiles/rails_4.2.gemfile
|
178
|
-
- gemfiles/rails_4.2.gemfile.lock
|
179
|
-
- gemfiles/rails_5.0.gemfile
|
180
|
-
- gemfiles/rails_5.0.gemfile.lock
|
181
|
-
- gemfiles/rails_5.1.gemfile
|
182
|
-
- gemfiles/rails_5.1.gemfile.lock
|
183
175
|
- gemfiles/rails_5.2.gemfile
|
184
176
|
- gemfiles/rails_5.2.gemfile.lock
|
185
177
|
- gemfiles/rails_6.0.gemfile
|
@@ -214,7 +206,7 @@ homepage: https://github.com/citusdata/activerecord-multi-tenant
|
|
214
206
|
licenses:
|
215
207
|
- MIT
|
216
208
|
metadata: {}
|
217
|
-
post_install_message:
|
209
|
+
post_install_message:
|
218
210
|
rdoc_options: []
|
219
211
|
require_paths:
|
220
212
|
- lib
|
@@ -229,8 +221,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
229
221
|
- !ruby/object:Gem::Version
|
230
222
|
version: '0'
|
231
223
|
requirements: []
|
232
|
-
rubygems_version: 3.
|
233
|
-
signing_key:
|
224
|
+
rubygems_version: 3.1.2
|
225
|
+
signing_key:
|
234
226
|
specification_version: 4
|
235
227
|
summary: ActiveRecord/Rails integration for multi-tenant databases, in particular
|
236
228
|
the Citus extension for PostgreSQL
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# This file was generated by Appraisal
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
gem "appraisal"
|
6
|
-
gem "activerecord", "~> 5.1.0"
|
7
|
-
gem "i18n", "~> 0.9.5"
|
8
|
-
gem "nokogiri", "~> 1.7.1"
|
9
|
-
gem "nio4r", "~> 2.3.1"
|
10
|
-
gem "sprockets", "~> 3.7.1"
|
11
|
-
gem "byebug", "~> 9.0.6"
|
12
|
-
gem "rake", "12.0.0"
|
13
|
-
gem "redis", "3.3.3"
|
14
|
-
|
15
|
-
gemspec path: "../"
|
@@ -1,180 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: ..
|
3
|
-
specs:
|
4
|
-
activerecord-multi-tenant (1.0.4)
|
5
|
-
rails (>= 4.2)
|
6
|
-
request_store (>= 1.0.5)
|
7
|
-
|
8
|
-
GEM
|
9
|
-
remote: https://rubygems.org/
|
10
|
-
specs:
|
11
|
-
actioncable (5.1.7)
|
12
|
-
actionpack (= 5.1.7)
|
13
|
-
nio4r (~> 2.0)
|
14
|
-
websocket-driver (~> 0.6.1)
|
15
|
-
actionmailer (5.1.7)
|
16
|
-
actionpack (= 5.1.7)
|
17
|
-
actionview (= 5.1.7)
|
18
|
-
activejob (= 5.1.7)
|
19
|
-
mail (~> 2.5, >= 2.5.4)
|
20
|
-
rails-dom-testing (~> 2.0)
|
21
|
-
actionpack (5.1.7)
|
22
|
-
actionview (= 5.1.7)
|
23
|
-
activesupport (= 5.1.7)
|
24
|
-
rack (~> 2.0)
|
25
|
-
rack-test (>= 0.6.3)
|
26
|
-
rails-dom-testing (~> 2.0)
|
27
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
28
|
-
actionview (5.1.7)
|
29
|
-
activesupport (= 5.1.7)
|
30
|
-
builder (~> 3.1)
|
31
|
-
erubi (~> 1.4)
|
32
|
-
rails-dom-testing (~> 2.0)
|
33
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
34
|
-
activejob (5.1.7)
|
35
|
-
activesupport (= 5.1.7)
|
36
|
-
globalid (>= 0.3.6)
|
37
|
-
activemodel (5.1.7)
|
38
|
-
activesupport (= 5.1.7)
|
39
|
-
activerecord (5.1.7)
|
40
|
-
activemodel (= 5.1.7)
|
41
|
-
activesupport (= 5.1.7)
|
42
|
-
arel (~> 8.0)
|
43
|
-
activesupport (5.1.7)
|
44
|
-
concurrent-ruby (~> 1.0, >= 1.0.2)
|
45
|
-
i18n (>= 0.7, < 2)
|
46
|
-
minitest (~> 5.1)
|
47
|
-
tzinfo (~> 1.1)
|
48
|
-
appraisal (2.2.0)
|
49
|
-
bundler
|
50
|
-
rake
|
51
|
-
thor (>= 0.14.0)
|
52
|
-
arel (8.0.0)
|
53
|
-
builder (3.2.3)
|
54
|
-
byebug (9.0.6)
|
55
|
-
coderay (1.1.2)
|
56
|
-
concurrent-ruby (1.1.5)
|
57
|
-
connection_pool (2.2.2)
|
58
|
-
crass (1.0.4)
|
59
|
-
diff-lcs (1.3)
|
60
|
-
erubi (1.9.0)
|
61
|
-
globalid (0.4.2)
|
62
|
-
activesupport (>= 4.2.0)
|
63
|
-
i18n (0.9.5)
|
64
|
-
concurrent-ruby (~> 1.0)
|
65
|
-
loofah (2.3.0)
|
66
|
-
crass (~> 1.0.2)
|
67
|
-
nokogiri (>= 1.5.9)
|
68
|
-
mail (2.7.1)
|
69
|
-
mini_mime (>= 0.1.1)
|
70
|
-
method_source (0.9.2)
|
71
|
-
mini_mime (1.0.2)
|
72
|
-
mini_portile2 (2.1.0)
|
73
|
-
minitest (5.12.2)
|
74
|
-
nio4r (2.3.1)
|
75
|
-
nokogiri (1.7.2)
|
76
|
-
mini_portile2 (~> 2.1.0)
|
77
|
-
pg (1.1.4)
|
78
|
-
pry (0.12.2)
|
79
|
-
coderay (~> 1.1.0)
|
80
|
-
method_source (~> 0.9.0)
|
81
|
-
pry-byebug (3.4.3)
|
82
|
-
byebug (>= 9.0, < 9.1)
|
83
|
-
pry (~> 0.10)
|
84
|
-
rack (2.0.7)
|
85
|
-
rack-protection (2.0.7)
|
86
|
-
rack
|
87
|
-
rack-test (1.1.0)
|
88
|
-
rack (>= 1.0, < 3)
|
89
|
-
rails (5.1.7)
|
90
|
-
actioncable (= 5.1.7)
|
91
|
-
actionmailer (= 5.1.7)
|
92
|
-
actionpack (= 5.1.7)
|
93
|
-
actionview (= 5.1.7)
|
94
|
-
activejob (= 5.1.7)
|
95
|
-
activemodel (= 5.1.7)
|
96
|
-
activerecord (= 5.1.7)
|
97
|
-
activesupport (= 5.1.7)
|
98
|
-
bundler (>= 1.3.0)
|
99
|
-
railties (= 5.1.7)
|
100
|
-
sprockets-rails (>= 2.0.0)
|
101
|
-
rails-dom-testing (2.0.3)
|
102
|
-
activesupport (>= 4.2.0)
|
103
|
-
nokogiri (>= 1.6)
|
104
|
-
rails-html-sanitizer (1.3.0)
|
105
|
-
loofah (~> 2.3)
|
106
|
-
railties (5.1.7)
|
107
|
-
actionpack (= 5.1.7)
|
108
|
-
activesupport (= 5.1.7)
|
109
|
-
method_source
|
110
|
-
rake (>= 0.8.7)
|
111
|
-
thor (>= 0.18.1, < 2.0)
|
112
|
-
rake (12.0.0)
|
113
|
-
redis (3.3.3)
|
114
|
-
request_store (1.4.1)
|
115
|
-
rack (>= 1.4)
|
116
|
-
rspec (3.9.0)
|
117
|
-
rspec-core (~> 3.9.0)
|
118
|
-
rspec-expectations (~> 3.9.0)
|
119
|
-
rspec-mocks (~> 3.9.0)
|
120
|
-
rspec-core (3.9.0)
|
121
|
-
rspec-support (~> 3.9.0)
|
122
|
-
rspec-expectations (3.9.0)
|
123
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
124
|
-
rspec-support (~> 3.9.0)
|
125
|
-
rspec-mocks (3.9.0)
|
126
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
127
|
-
rspec-support (~> 3.9.0)
|
128
|
-
rspec-rails (3.9.0)
|
129
|
-
actionpack (>= 3.0)
|
130
|
-
activesupport (>= 3.0)
|
131
|
-
railties (>= 3.0)
|
132
|
-
rspec-core (~> 3.9.0)
|
133
|
-
rspec-expectations (~> 3.9.0)
|
134
|
-
rspec-mocks (~> 3.9.0)
|
135
|
-
rspec-support (~> 3.9.0)
|
136
|
-
rspec-support (3.9.0)
|
137
|
-
sidekiq (5.0.4)
|
138
|
-
concurrent-ruby (~> 1.0)
|
139
|
-
connection_pool (~> 2.2, >= 2.2.0)
|
140
|
-
rack-protection (>= 1.5.0)
|
141
|
-
redis (~> 3.3, >= 3.3.3)
|
142
|
-
sprockets (3.7.2)
|
143
|
-
concurrent-ruby (~> 1.0)
|
144
|
-
rack (> 1, < 3)
|
145
|
-
sprockets-rails (3.2.1)
|
146
|
-
actionpack (>= 4.0)
|
147
|
-
activesupport (>= 4.0)
|
148
|
-
sprockets (>= 3.0.0)
|
149
|
-
thor (0.20.3)
|
150
|
-
thread_safe (0.3.6)
|
151
|
-
tzinfo (1.2.5)
|
152
|
-
thread_safe (~> 0.1)
|
153
|
-
websocket-driver (0.6.5)
|
154
|
-
websocket-extensions (>= 0.1.0)
|
155
|
-
websocket-extensions (0.1.4)
|
156
|
-
|
157
|
-
PLATFORMS
|
158
|
-
ruby
|
159
|
-
|
160
|
-
DEPENDENCIES
|
161
|
-
activerecord (~> 5.1.0)
|
162
|
-
activerecord-multi-tenant!
|
163
|
-
appraisal
|
164
|
-
byebug (~> 9.0.6)
|
165
|
-
i18n (~> 0.9.5)
|
166
|
-
nio4r (~> 2.3.1)
|
167
|
-
nokogiri (~> 1.7.1)
|
168
|
-
pg
|
169
|
-
pry
|
170
|
-
pry-byebug
|
171
|
-
rake (= 12.0.0)
|
172
|
-
redis (= 3.3.3)
|
173
|
-
rspec (>= 3.0)
|
174
|
-
rspec-rails
|
175
|
-
sidekiq
|
176
|
-
sprockets (~> 3.7.1)
|
177
|
-
thor
|
178
|
-
|
179
|
-
BUNDLED WITH
|
180
|
-
1.17.3
|