synerma-apartment 3.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 +7 -0
- data/.gitignore +15 -0
- data/.pryrc +5 -0
- data/.rspec +4 -0
- data/.rubocop.yml +79 -0
- data/.ruby-version +1 -0
- data/Appraisals +182 -0
- data/CODE_OF_CONDUCT.md +71 -0
- data/Gemfile +20 -0
- data/Guardfile +11 -0
- data/README.md +671 -0
- data/Rakefile +157 -0
- data/legacy_CHANGELOG.md +965 -0
- data/lib/apartment/active_record/connection_handling.rb +31 -0
- data/lib/apartment/active_record/internal_metadata.rb +9 -0
- data/lib/apartment/active_record/postgres/schema_dumper.rb +20 -0
- data/lib/apartment/active_record/postgresql_adapter.rb +58 -0
- data/lib/apartment/active_record/schema_migration.rb +11 -0
- data/lib/apartment/adapters/abstract_adapter.rb +275 -0
- data/lib/apartment/adapters/abstract_jdbc_adapter.rb +20 -0
- data/lib/apartment/adapters/jdbc_mysql_adapter.rb +19 -0
- data/lib/apartment/adapters/jdbc_postgresql_adapter.rb +62 -0
- data/lib/apartment/adapters/mysql2_adapter.rb +77 -0
- data/lib/apartment/adapters/postgis_adapter.rb +13 -0
- data/lib/apartment/adapters/postgresql_adapter.rb +280 -0
- data/lib/apartment/adapters/sqlite3_adapter.rb +66 -0
- data/lib/apartment/adapters/trilogy_adapter.rb +29 -0
- data/lib/apartment/console.rb +24 -0
- data/lib/apartment/custom_console.rb +42 -0
- data/lib/apartment/deprecation.rb +8 -0
- data/lib/apartment/elevators/domain.rb +23 -0
- data/lib/apartment/elevators/first_subdomain.rb +18 -0
- data/lib/apartment/elevators/generic.rb +33 -0
- data/lib/apartment/elevators/host.rb +35 -0
- data/lib/apartment/elevators/host_hash.rb +26 -0
- data/lib/apartment/elevators/subdomain.rb +66 -0
- data/lib/apartment/log_subscriber.rb +45 -0
- data/lib/apartment/migrator.rb +46 -0
- data/lib/apartment/model.rb +29 -0
- data/lib/apartment/railtie.rb +68 -0
- data/lib/apartment/tasks/enhancements.rb +55 -0
- data/lib/apartment/tasks/task_helper.rb +54 -0
- data/lib/apartment/tenant.rb +63 -0
- data/lib/apartment/version.rb +5 -0
- data/lib/apartment.rb +155 -0
- data/lib/generators/apartment/install/USAGE +5 -0
- data/lib/generators/apartment/install/install_generator.rb +11 -0
- data/lib/generators/apartment/install/templates/apartment.rb +116 -0
- data/lib/tasks/apartment.rake +106 -0
- data/synerma-apartment.gemspec +40 -0
- metadata +198 -0
@@ -0,0 +1,106 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'apartment/migrator'
|
4
|
+
require 'apartment/tasks/task_helper'
|
5
|
+
require 'parallel'
|
6
|
+
|
7
|
+
apartment_namespace = namespace :apartment do
|
8
|
+
desc 'Create all tenants'
|
9
|
+
task :create do
|
10
|
+
Apartment::TaskHelper.warn_if_tenants_empty
|
11
|
+
|
12
|
+
Apartment::TaskHelper.tenants.each do |tenant|
|
13
|
+
Apartment::TaskHelper.create_tenant(tenant)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
desc 'Drop all tenants'
|
18
|
+
task :drop do
|
19
|
+
Apartment::TaskHelper.tenants.each do |tenant|
|
20
|
+
puts("Dropping #{tenant} tenant")
|
21
|
+
Apartment::Tenant.drop(tenant)
|
22
|
+
rescue Apartment::TenantNotFound, ActiveRecord::NoDatabaseError => e
|
23
|
+
puts e.message
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
desc 'Migrate all tenants'
|
28
|
+
task :migrate do
|
29
|
+
Apartment::TaskHelper.warn_if_tenants_empty
|
30
|
+
Apartment::TaskHelper.each_tenant do |tenant|
|
31
|
+
Apartment::TaskHelper.migrate_tenant(tenant)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
desc 'Seed all tenants'
|
36
|
+
task :seed do
|
37
|
+
Apartment::TaskHelper.warn_if_tenants_empty
|
38
|
+
|
39
|
+
Apartment::TaskHelper.each_tenant do |tenant|
|
40
|
+
Apartment::TaskHelper.create_tenant(tenant)
|
41
|
+
puts("Seeding #{tenant} tenant")
|
42
|
+
Apartment::Tenant.switch(tenant) do
|
43
|
+
Apartment::Tenant.seed
|
44
|
+
end
|
45
|
+
rescue Apartment::TenantNotFound => e
|
46
|
+
puts e.message
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
desc 'Rolls the migration back to the previous version (specify steps w/ STEP=n) across all tenants.'
|
51
|
+
task :rollback do
|
52
|
+
Apartment::TaskHelper.warn_if_tenants_empty
|
53
|
+
|
54
|
+
step = ENV['STEP'] ? ENV['STEP'].to_i : 1
|
55
|
+
|
56
|
+
Apartment::TaskHelper.each_tenant do |tenant|
|
57
|
+
puts("Rolling back #{tenant} tenant")
|
58
|
+
Apartment::Migrator.rollback tenant, step
|
59
|
+
rescue Apartment::TenantNotFound => e
|
60
|
+
puts e.message
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
namespace :migrate do
|
65
|
+
desc 'Runs the "up" for a given migration VERSION across all tenants.'
|
66
|
+
task :up do
|
67
|
+
Apartment::TaskHelper.warn_if_tenants_empty
|
68
|
+
|
69
|
+
version = ENV['VERSION'] ? ENV['VERSION'].to_i : nil
|
70
|
+
raise 'VERSION is required' unless version
|
71
|
+
|
72
|
+
Apartment::TaskHelper.each_tenant do |tenant|
|
73
|
+
puts("Migrating #{tenant} tenant up")
|
74
|
+
Apartment::Migrator.run :up, tenant, version
|
75
|
+
rescue Apartment::TenantNotFound => e
|
76
|
+
puts e.message
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
desc 'Runs the "down" for a given migration VERSION across all tenants.'
|
81
|
+
task :down do
|
82
|
+
Apartment::TaskHelper.warn_if_tenants_empty
|
83
|
+
|
84
|
+
version = ENV['VERSION'] ? ENV['VERSION'].to_i : nil
|
85
|
+
raise 'VERSION is required' unless version
|
86
|
+
|
87
|
+
Apartment::TaskHelper.each_tenant do |tenant|
|
88
|
+
puts("Migrating #{tenant} tenant down")
|
89
|
+
Apartment::Migrator.run :down, tenant, version
|
90
|
+
rescue Apartment::TenantNotFound => e
|
91
|
+
puts e.message
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
desc 'Rolls back the tenant one migration and re migrate up (options: STEP=x, VERSION=x).'
|
96
|
+
task :redo do
|
97
|
+
if ENV['VERSION']
|
98
|
+
apartment_namespace['migrate:down'].invoke
|
99
|
+
apartment_namespace['migrate:up'].invoke
|
100
|
+
else
|
101
|
+
apartment_namespace['rollback'].invoke
|
102
|
+
apartment_namespace['migrate'].invoke
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH << File.expand_path('lib', __dir__)
|
4
|
+
require 'apartment/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = 'synerma-apartment'
|
8
|
+
s.version = Apartment::VERSION
|
9
|
+
|
10
|
+
s.authors = ['Ryan Brunner', 'Brad Robertson', 'Rui Baltazar', 'Mauricio Novelo']
|
11
|
+
s.summary = 'A Ruby gem for managing database multitenancy. Apartment Gem drop in replacement'
|
12
|
+
s.description = 'Apartment allows Rack applications to deal with database multitenancy through ActiveRecord'
|
13
|
+
s.email = ['ryan@influitive.com', 'brad@influitive.com', 'rui.p.baltazar@gmail.com', 'mauricio@campusesp.com']
|
14
|
+
# Specify which files should be added to the gem when it is released.
|
15
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been
|
16
|
+
# added into git.
|
17
|
+
s.files = Dir.chdir(File.expand_path(__dir__)) do
|
18
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
19
|
+
# NOTE: ignore all test related
|
20
|
+
f.match(%r{^(test|spec|features|documentation|gemfiles|.github)/})
|
21
|
+
end
|
22
|
+
end
|
23
|
+
s.executables = s.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
24
|
+
s.require_paths = ['lib']
|
25
|
+
|
26
|
+
s.homepage = 'https://github.com/rails-on-services/apartment'
|
27
|
+
s.licenses = ['MIT']
|
28
|
+
s.metadata = {
|
29
|
+
'github_repo' => 'ssh://github.com/rails-on-services/apartment',
|
30
|
+
'rubygems_mfa_required' => 'true',
|
31
|
+
}
|
32
|
+
|
33
|
+
s.required_ruby_version = '>= 3.1', '<= 3.4'
|
34
|
+
|
35
|
+
s.add_dependency('activerecord', '>= 6.1.0', '< 8.1')
|
36
|
+
s.add_dependency('activesupport', '>= 6.1.0', '< 8.1')
|
37
|
+
s.add_dependency('parallel', '< 2.0')
|
38
|
+
s.add_dependency('public_suffix', '>= 2.0.5', '<= 6.0.1')
|
39
|
+
s.add_dependency('rack', '>= 1.3.6', '< 4.0')
|
40
|
+
end
|
metadata
ADDED
@@ -0,0 +1,198 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: synerma-apartment
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 3.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ryan Brunner
|
8
|
+
- Brad Robertson
|
9
|
+
- Rui Baltazar
|
10
|
+
- Mauricio Novelo
|
11
|
+
autorequire:
|
12
|
+
bindir: bin
|
13
|
+
cert_chain: []
|
14
|
+
date: 2024-12-31 00:00:00.000000000 Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: activerecord
|
18
|
+
requirement: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 6.1.0
|
23
|
+
- - "<"
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '8.1'
|
26
|
+
type: :runtime
|
27
|
+
prerelease: false
|
28
|
+
version_requirements: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 6.1.0
|
33
|
+
- - "<"
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '8.1'
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: activesupport
|
38
|
+
requirement: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 6.1.0
|
43
|
+
- - "<"
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '8.1'
|
46
|
+
type: :runtime
|
47
|
+
prerelease: false
|
48
|
+
version_requirements: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 6.1.0
|
53
|
+
- - "<"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '8.1'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: parallel
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "<"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '2.0'
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "<"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '2.0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: public_suffix
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 2.0.5
|
77
|
+
- - "<="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 6.0.1
|
80
|
+
type: :runtime
|
81
|
+
prerelease: false
|
82
|
+
version_requirements: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: 2.0.5
|
87
|
+
- - "<="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 6.0.1
|
90
|
+
- !ruby/object:Gem::Dependency
|
91
|
+
name: rack
|
92
|
+
requirement: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.3.6
|
97
|
+
- - "<"
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '4.0'
|
100
|
+
type: :runtime
|
101
|
+
prerelease: false
|
102
|
+
version_requirements: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: 1.3.6
|
107
|
+
- - "<"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '4.0'
|
110
|
+
description: Apartment allows Rack applications to deal with database multitenancy
|
111
|
+
through ActiveRecord
|
112
|
+
email:
|
113
|
+
- ryan@influitive.com
|
114
|
+
- brad@influitive.com
|
115
|
+
- rui.p.baltazar@gmail.com
|
116
|
+
- mauricio@campusesp.com
|
117
|
+
executables: []
|
118
|
+
extensions: []
|
119
|
+
extra_rdoc_files: []
|
120
|
+
files:
|
121
|
+
- ".gitignore"
|
122
|
+
- ".pryrc"
|
123
|
+
- ".rspec"
|
124
|
+
- ".rubocop.yml"
|
125
|
+
- ".ruby-version"
|
126
|
+
- Appraisals
|
127
|
+
- CODE_OF_CONDUCT.md
|
128
|
+
- Gemfile
|
129
|
+
- Guardfile
|
130
|
+
- README.md
|
131
|
+
- Rakefile
|
132
|
+
- legacy_CHANGELOG.md
|
133
|
+
- lib/apartment.rb
|
134
|
+
- lib/apartment/active_record/connection_handling.rb
|
135
|
+
- lib/apartment/active_record/internal_metadata.rb
|
136
|
+
- lib/apartment/active_record/postgres/schema_dumper.rb
|
137
|
+
- lib/apartment/active_record/postgresql_adapter.rb
|
138
|
+
- lib/apartment/active_record/schema_migration.rb
|
139
|
+
- lib/apartment/adapters/abstract_adapter.rb
|
140
|
+
- lib/apartment/adapters/abstract_jdbc_adapter.rb
|
141
|
+
- lib/apartment/adapters/jdbc_mysql_adapter.rb
|
142
|
+
- lib/apartment/adapters/jdbc_postgresql_adapter.rb
|
143
|
+
- lib/apartment/adapters/mysql2_adapter.rb
|
144
|
+
- lib/apartment/adapters/postgis_adapter.rb
|
145
|
+
- lib/apartment/adapters/postgresql_adapter.rb
|
146
|
+
- lib/apartment/adapters/sqlite3_adapter.rb
|
147
|
+
- lib/apartment/adapters/trilogy_adapter.rb
|
148
|
+
- lib/apartment/console.rb
|
149
|
+
- lib/apartment/custom_console.rb
|
150
|
+
- lib/apartment/deprecation.rb
|
151
|
+
- lib/apartment/elevators/domain.rb
|
152
|
+
- lib/apartment/elevators/first_subdomain.rb
|
153
|
+
- lib/apartment/elevators/generic.rb
|
154
|
+
- lib/apartment/elevators/host.rb
|
155
|
+
- lib/apartment/elevators/host_hash.rb
|
156
|
+
- lib/apartment/elevators/subdomain.rb
|
157
|
+
- lib/apartment/log_subscriber.rb
|
158
|
+
- lib/apartment/migrator.rb
|
159
|
+
- lib/apartment/model.rb
|
160
|
+
- lib/apartment/railtie.rb
|
161
|
+
- lib/apartment/tasks/enhancements.rb
|
162
|
+
- lib/apartment/tasks/task_helper.rb
|
163
|
+
- lib/apartment/tenant.rb
|
164
|
+
- lib/apartment/version.rb
|
165
|
+
- lib/generators/apartment/install/USAGE
|
166
|
+
- lib/generators/apartment/install/install_generator.rb
|
167
|
+
- lib/generators/apartment/install/templates/apartment.rb
|
168
|
+
- lib/tasks/apartment.rake
|
169
|
+
- synerma-apartment.gemspec
|
170
|
+
homepage: https://github.com/rails-on-services/apartment
|
171
|
+
licenses:
|
172
|
+
- MIT
|
173
|
+
metadata:
|
174
|
+
github_repo: ssh://github.com/rails-on-services/apartment
|
175
|
+
rubygems_mfa_required: 'true'
|
176
|
+
post_install_message:
|
177
|
+
rdoc_options: []
|
178
|
+
require_paths:
|
179
|
+
- lib
|
180
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
181
|
+
requirements:
|
182
|
+
- - ">="
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '3.1'
|
185
|
+
- - "<="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '3.4'
|
188
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
189
|
+
requirements:
|
190
|
+
- - ">="
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
version: '0'
|
193
|
+
requirements: []
|
194
|
+
rubygems_version: 3.3.7
|
195
|
+
signing_key:
|
196
|
+
specification_version: 4
|
197
|
+
summary: A Ruby gem for managing database multitenancy. Apartment Gem drop in replacement
|
198
|
+
test_files: []
|