ros-apartment 3.2.0 → 3.3.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/.gitignore +1 -0
- data/.rubocop.yml +93 -2
- data/.ruby-version +1 -1
- data/Appraisals +15 -0
- data/CLAUDE.md +210 -0
- data/README.md +1 -1
- data/Rakefile +6 -5
- data/docs/adapters.md +177 -0
- data/docs/architecture.md +274 -0
- data/docs/elevators.md +226 -0
- data/docs/images/log_example.png +0 -0
- data/lib/apartment/CLAUDE.md +300 -0
- data/lib/apartment/adapters/CLAUDE.md +314 -0
- data/lib/apartment/adapters/abstract_adapter.rb +24 -15
- data/lib/apartment/adapters/jdbc_mysql_adapter.rb +1 -1
- data/lib/apartment/adapters/jdbc_postgresql_adapter.rb +3 -3
- data/lib/apartment/adapters/mysql2_adapter.rb +2 -2
- data/lib/apartment/adapters/postgresql_adapter.rb +42 -19
- data/lib/apartment/adapters/sqlite3_adapter.rb +7 -7
- data/lib/apartment/console.rb +1 -1
- data/lib/apartment/custom_console.rb +7 -7
- data/lib/apartment/elevators/CLAUDE.md +292 -0
- data/lib/apartment/elevators/domain.rb +1 -1
- data/lib/apartment/elevators/generic.rb +1 -1
- data/lib/apartment/elevators/host_hash.rb +3 -3
- data/lib/apartment/elevators/subdomain.rb +9 -5
- data/lib/apartment/log_subscriber.rb +1 -1
- data/lib/apartment/migrator.rb +2 -2
- data/lib/apartment/model.rb +1 -1
- data/lib/apartment/railtie.rb +3 -3
- data/lib/apartment/tasks/enhancements.rb +1 -1
- data/lib/apartment/tasks/task_helper.rb +4 -4
- data/lib/apartment/tenant.rb +3 -3
- data/lib/apartment/version.rb +1 -1
- data/lib/apartment.rb +15 -9
- data/lib/generators/apartment/install/install_generator.rb +1 -1
- data/lib/generators/apartment/install/templates/apartment.rb +2 -2
- data/lib/tasks/apartment.rake +25 -25
- data/ros-apartment.gemspec +3 -3
- metadata +22 -11
data/lib/tasks/apartment.rake
CHANGED
|
@@ -4,9 +4,9 @@ require 'apartment/migrator'
|
|
|
4
4
|
require 'apartment/tasks/task_helper'
|
|
5
5
|
require 'parallel'
|
|
6
6
|
|
|
7
|
-
apartment_namespace = namespace
|
|
8
|
-
desc
|
|
9
|
-
task :
|
|
7
|
+
apartment_namespace = namespace(:apartment) do
|
|
8
|
+
desc('Create all tenants')
|
|
9
|
+
task(create: :environment) do
|
|
10
10
|
Apartment::TaskHelper.warn_if_tenants_empty
|
|
11
11
|
|
|
12
12
|
Apartment::TaskHelper.tenants.each do |tenant|
|
|
@@ -14,8 +14,8 @@ apartment_namespace = namespace :apartment do
|
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
desc
|
|
18
|
-
task :
|
|
17
|
+
desc('Drop all tenants')
|
|
18
|
+
task(drop: :environment) do
|
|
19
19
|
Apartment::TaskHelper.tenants.each do |tenant|
|
|
20
20
|
puts("Dropping #{tenant} tenant")
|
|
21
21
|
Apartment::Tenant.drop(tenant)
|
|
@@ -24,16 +24,16 @@ apartment_namespace = namespace :apartment do
|
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
desc
|
|
28
|
-
task :
|
|
27
|
+
desc('Migrate all tenants')
|
|
28
|
+
task(migrate: :environment) do
|
|
29
29
|
Apartment::TaskHelper.warn_if_tenants_empty
|
|
30
30
|
Apartment::TaskHelper.each_tenant do |tenant|
|
|
31
31
|
Apartment::TaskHelper.migrate_tenant(tenant)
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
desc
|
|
36
|
-
task :
|
|
35
|
+
desc('Seed all tenants')
|
|
36
|
+
task(seed: :environment) do
|
|
37
37
|
Apartment::TaskHelper.warn_if_tenants_empty
|
|
38
38
|
|
|
39
39
|
Apartment::TaskHelper.each_tenant do |tenant|
|
|
@@ -47,53 +47,53 @@ apartment_namespace = namespace :apartment do
|
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
-
desc
|
|
51
|
-
task :
|
|
50
|
+
desc('Rolls the migration back to the previous version (specify steps w/ STEP=n) across all tenants.')
|
|
51
|
+
task(rollback: :environment) do
|
|
52
52
|
Apartment::TaskHelper.warn_if_tenants_empty
|
|
53
53
|
|
|
54
54
|
step = ENV['STEP'] ? ENV['STEP'].to_i : 1
|
|
55
55
|
|
|
56
56
|
Apartment::TaskHelper.each_tenant do |tenant|
|
|
57
57
|
puts("Rolling back #{tenant} tenant")
|
|
58
|
-
Apartment::Migrator.rollback
|
|
58
|
+
Apartment::Migrator.rollback(tenant, step)
|
|
59
59
|
rescue Apartment::TenantNotFound => e
|
|
60
60
|
puts e.message
|
|
61
61
|
end
|
|
62
62
|
end
|
|
63
63
|
|
|
64
|
-
namespace
|
|
65
|
-
desc
|
|
66
|
-
task :
|
|
64
|
+
namespace(:migrate) do
|
|
65
|
+
desc('Runs the "up" for a given migration VERSION across all tenants.')
|
|
66
|
+
task(up: :environment) do
|
|
67
67
|
Apartment::TaskHelper.warn_if_tenants_empty
|
|
68
68
|
|
|
69
|
-
version = ENV['VERSION']
|
|
70
|
-
raise
|
|
69
|
+
version = ENV['VERSION']&.to_i
|
|
70
|
+
raise('VERSION is required') unless version
|
|
71
71
|
|
|
72
72
|
Apartment::TaskHelper.each_tenant do |tenant|
|
|
73
73
|
puts("Migrating #{tenant} tenant up")
|
|
74
|
-
Apartment::Migrator.run
|
|
74
|
+
Apartment::Migrator.run(:up, tenant, version)
|
|
75
75
|
rescue Apartment::TenantNotFound => e
|
|
76
76
|
puts e.message
|
|
77
77
|
end
|
|
78
78
|
end
|
|
79
79
|
|
|
80
|
-
desc
|
|
81
|
-
task :
|
|
80
|
+
desc('Runs the "down" for a given migration VERSION across all tenants.')
|
|
81
|
+
task(down: :environment) do
|
|
82
82
|
Apartment::TaskHelper.warn_if_tenants_empty
|
|
83
83
|
|
|
84
|
-
version = ENV['VERSION']
|
|
85
|
-
raise
|
|
84
|
+
version = ENV['VERSION']&.to_i
|
|
85
|
+
raise('VERSION is required') unless version
|
|
86
86
|
|
|
87
87
|
Apartment::TaskHelper.each_tenant do |tenant|
|
|
88
88
|
puts("Migrating #{tenant} tenant down")
|
|
89
|
-
Apartment::Migrator.run
|
|
89
|
+
Apartment::Migrator.run(:down, tenant, version)
|
|
90
90
|
rescue Apartment::TenantNotFound => e
|
|
91
91
|
puts e.message
|
|
92
92
|
end
|
|
93
93
|
end
|
|
94
94
|
|
|
95
|
-
desc
|
|
96
|
-
task
|
|
95
|
+
desc('Rolls back the tenant one migration and re migrate up (options: STEP=x, VERSION=x).')
|
|
96
|
+
task(:redo) do
|
|
97
97
|
if ENV['VERSION']
|
|
98
98
|
apartment_namespace['migrate:down'].invoke
|
|
99
99
|
apartment_namespace['migrate:up'].invoke
|
data/ros-apartment.gemspec
CHANGED
|
@@ -32,9 +32,9 @@ Gem::Specification.new do |s|
|
|
|
32
32
|
|
|
33
33
|
s.required_ruby_version = '>= 3.1'
|
|
34
34
|
|
|
35
|
-
s.add_dependency('activerecord', '>= 6.1.0', '< 8.
|
|
36
|
-
s.add_dependency('activesupport', '>= 6.1.0', '< 8.
|
|
35
|
+
s.add_dependency('activerecord', '>= 6.1.0', '< 8.2')
|
|
36
|
+
s.add_dependency('activesupport', '>= 6.1.0', '< 8.2')
|
|
37
37
|
s.add_dependency('parallel', '< 2.0')
|
|
38
|
-
s.add_dependency('public_suffix', '>= 2.0.5', '
|
|
38
|
+
s.add_dependency('public_suffix', '>= 2.0.5', '< 7')
|
|
39
39
|
s.add_dependency('rack', '>= 1.3.6', '< 4.0')
|
|
40
40
|
end
|
metadata
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ros-apartment
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ryan Brunner
|
|
8
8
|
- Brad Robertson
|
|
9
9
|
- Rui Baltazar
|
|
10
10
|
- Mauricio Novelo
|
|
11
|
+
autorequire:
|
|
11
12
|
bindir: bin
|
|
12
13
|
cert_chain: []
|
|
13
|
-
date: 2025-
|
|
14
|
+
date: 2025-11-24 00:00:00.000000000 Z
|
|
14
15
|
dependencies:
|
|
15
16
|
- !ruby/object:Gem::Dependency
|
|
16
17
|
name: activerecord
|
|
@@ -21,7 +22,7 @@ dependencies:
|
|
|
21
22
|
version: 6.1.0
|
|
22
23
|
- - "<"
|
|
23
24
|
- !ruby/object:Gem::Version
|
|
24
|
-
version: '8.
|
|
25
|
+
version: '8.2'
|
|
25
26
|
type: :runtime
|
|
26
27
|
prerelease: false
|
|
27
28
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -31,7 +32,7 @@ dependencies:
|
|
|
31
32
|
version: 6.1.0
|
|
32
33
|
- - "<"
|
|
33
34
|
- !ruby/object:Gem::Version
|
|
34
|
-
version: '8.
|
|
35
|
+
version: '8.2'
|
|
35
36
|
- !ruby/object:Gem::Dependency
|
|
36
37
|
name: activesupport
|
|
37
38
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -41,7 +42,7 @@ dependencies:
|
|
|
41
42
|
version: 6.1.0
|
|
42
43
|
- - "<"
|
|
43
44
|
- !ruby/object:Gem::Version
|
|
44
|
-
version: '8.
|
|
45
|
+
version: '8.2'
|
|
45
46
|
type: :runtime
|
|
46
47
|
prerelease: false
|
|
47
48
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -51,7 +52,7 @@ dependencies:
|
|
|
51
52
|
version: 6.1.0
|
|
52
53
|
- - "<"
|
|
53
54
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '8.
|
|
55
|
+
version: '8.2'
|
|
55
56
|
- !ruby/object:Gem::Dependency
|
|
56
57
|
name: parallel
|
|
57
58
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -73,9 +74,9 @@ dependencies:
|
|
|
73
74
|
- - ">="
|
|
74
75
|
- !ruby/object:Gem::Version
|
|
75
76
|
version: 2.0.5
|
|
76
|
-
- - "
|
|
77
|
+
- - "<"
|
|
77
78
|
- !ruby/object:Gem::Version
|
|
78
|
-
version:
|
|
79
|
+
version: '7'
|
|
79
80
|
type: :runtime
|
|
80
81
|
prerelease: false
|
|
81
82
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -83,9 +84,9 @@ dependencies:
|
|
|
83
84
|
- - ">="
|
|
84
85
|
- !ruby/object:Gem::Version
|
|
85
86
|
version: 2.0.5
|
|
86
|
-
- - "
|
|
87
|
+
- - "<"
|
|
87
88
|
- !ruby/object:Gem::Version
|
|
88
|
-
version:
|
|
89
|
+
version: '7'
|
|
89
90
|
- !ruby/object:Gem::Dependency
|
|
90
91
|
name: rack
|
|
91
92
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -123,18 +124,25 @@ files:
|
|
|
123
124
|
- ".rubocop.yml"
|
|
124
125
|
- ".ruby-version"
|
|
125
126
|
- Appraisals
|
|
127
|
+
- CLAUDE.md
|
|
126
128
|
- CODE_OF_CONDUCT.md
|
|
127
129
|
- Gemfile
|
|
128
130
|
- Guardfile
|
|
129
131
|
- README.md
|
|
130
132
|
- Rakefile
|
|
133
|
+
- docs/adapters.md
|
|
134
|
+
- docs/architecture.md
|
|
135
|
+
- docs/elevators.md
|
|
136
|
+
- docs/images/log_example.png
|
|
131
137
|
- legacy_CHANGELOG.md
|
|
132
138
|
- lib/apartment.rb
|
|
139
|
+
- lib/apartment/CLAUDE.md
|
|
133
140
|
- lib/apartment/active_record/connection_handling.rb
|
|
134
141
|
- lib/apartment/active_record/internal_metadata.rb
|
|
135
142
|
- lib/apartment/active_record/postgres/schema_dumper.rb
|
|
136
143
|
- lib/apartment/active_record/postgresql_adapter.rb
|
|
137
144
|
- lib/apartment/active_record/schema_migration.rb
|
|
145
|
+
- lib/apartment/adapters/CLAUDE.md
|
|
138
146
|
- lib/apartment/adapters/abstract_adapter.rb
|
|
139
147
|
- lib/apartment/adapters/abstract_jdbc_adapter.rb
|
|
140
148
|
- lib/apartment/adapters/jdbc_mysql_adapter.rb
|
|
@@ -147,6 +155,7 @@ files:
|
|
|
147
155
|
- lib/apartment/console.rb
|
|
148
156
|
- lib/apartment/custom_console.rb
|
|
149
157
|
- lib/apartment/deprecation.rb
|
|
158
|
+
- lib/apartment/elevators/CLAUDE.md
|
|
150
159
|
- lib/apartment/elevators/domain.rb
|
|
151
160
|
- lib/apartment/elevators/first_subdomain.rb
|
|
152
161
|
- lib/apartment/elevators/generic.rb
|
|
@@ -172,6 +181,7 @@ licenses:
|
|
|
172
181
|
metadata:
|
|
173
182
|
github_repo: ssh://github.com/rails-on-services/apartment
|
|
174
183
|
rubygems_mfa_required: 'true'
|
|
184
|
+
post_install_message:
|
|
175
185
|
rdoc_options: []
|
|
176
186
|
require_paths:
|
|
177
187
|
- lib
|
|
@@ -186,7 +196,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
186
196
|
- !ruby/object:Gem::Version
|
|
187
197
|
version: '0'
|
|
188
198
|
requirements: []
|
|
189
|
-
rubygems_version: 3.
|
|
199
|
+
rubygems_version: 3.5.22
|
|
200
|
+
signing_key:
|
|
190
201
|
specification_version: 4
|
|
191
202
|
summary: A Ruby gem for managing database multitenancy. Apartment Gem drop in replacement
|
|
192
203
|
test_files: []
|