Skip to content

Commit ac0fbb2

Browse files
authored
Merge pull request #146 from rails-on-services/development
Prepare Release - 2.9.0 **Implemented enhancements:** - Add config for handling tenant creation on db:migrate - #140 **Fixed bugs:** **Closed issues:** - Tenant exists errors on migrate task on 2.8.0 [#136](#136) - Add Rails 6.1 to build matrix #144
2 parents d97d55b + 6ce4113 commit ac0fbb2

File tree

7 files changed

+69
-13
lines changed

7 files changed

+69
-13
lines changed

.circleci/config.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ workflows:
7070
matrix:
7171
parameters:
7272
ruby_version: ["ruby:2.6-buster", "ruby:2.7-buster"]
73-
gemfile: ["gemfiles/rails_5_2.gemfile", "gemfiles/rails_6_0.gemfile"]
73+
gemfile: ["gemfiles/rails_5_2.gemfile", "gemfiles/rails_6_0.gemfile", "gemfiles/rails_6_1.gemfile"]
7474

7575
rubocop:
7676
jobs:

Appraisals

+15-3
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,26 @@ appraise 'rails-6-0' do
4545
end
4646
end
4747

48+
appraise 'rails-6-1' do
49+
gem 'rails', '~> 6.1.0'
50+
platforms :ruby do
51+
gem 'sqlite3', '~> 1.4'
52+
end
53+
platforms :jruby do
54+
gem 'activerecord-jdbc-adapter', '~> 61.0'
55+
gem 'activerecord-jdbcpostgresql-adapter', '~> 61.0'
56+
gem 'activerecord-jdbcmysql-adapter', '~> 61.0'
57+
end
58+
end
59+
4860
appraise 'rails-master' do
4961
gem 'rails', git: 'https://github.com/rails/rails.git'
5062
platforms :ruby do
5163
gem 'sqlite3', '~> 1.4'
5264
end
5365
platforms :jruby do
54-
gem 'activerecord-jdbc-adapter', '~> 52.0'
55-
gem 'activerecord-jdbcpostgresql-adapter', '~> 52.0'
56-
gem 'activerecord-jdbcmysql-adapter', '~> 52.0'
66+
gem 'activerecord-jdbc-adapter', '~> 61.0'
67+
gem 'activerecord-jdbcpostgresql-adapter', '~> 61.0'
68+
gem 'activerecord-jdbcmysql-adapter', '~> 61.0'
5769
end
5870
end

gemfiles/rails_6_1.gemfile

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# This file was generated by Appraisal
2+
3+
source "http://rubygems.org"
4+
5+
gem "rails", "~> 6.1.0"
6+
gem "rubocop"
7+
8+
group :local do
9+
gem "guard-rspec", "~> 4.2"
10+
gem "pry"
11+
end
12+
13+
platforms :ruby do
14+
gem "sqlite3", "~> 1.4"
15+
end
16+
17+
platforms :jruby do
18+
gem "activerecord-jdbc-adapter", "~> 61.0"
19+
gem "activerecord-jdbcpostgresql-adapter", "~> 61.0"
20+
gem "activerecord-jdbcmysql-adapter", "~> 61.0"
21+
end
22+
23+
gemspec path: "../"

lib/apartment.rb

+16-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class << self
2727

2828
WRITER_METHODS = %i[tenant_names database_schema_file excluded_models
2929
persistent_schemas connection_class
30-
db_migrate_tenants seed_data_file
30+
db_migrate_tenants db_migrate_tenant_missing_strategy seed_data_file
3131
parallel_migration_threads pg_excluded_names].freeze
3232

3333
attr_accessor(*ACCESSOR_METHODS)
@@ -72,6 +72,21 @@ def db_migrate_tenants
7272
@db_migrate_tenants = true
7373
end
7474

75+
# How to handle tenant missing on db:migrate
76+
# defaults to :rescue_exception
77+
# available options: rescue_exception, raise_exception, create_tenant
78+
def db_migrate_tenant_missing_strategy
79+
valid = %i[rescue_exception raise_exception create_tenant]
80+
value = @db_migrate_tenant_missing_strategy || :rescue_exception
81+
82+
return value if valid.include?(value)
83+
84+
key_name = 'config.db_migrate_tenant_missing_strategy'
85+
opt_names = valid.join(', ')
86+
87+
raise ApartmentError, "Option #{value} not valid for `#{key_name}`. Use one of #{opt_names}"
88+
end
89+
7590
# Default to empty array
7691
def excluded_models
7792
@excluded_models || []

lib/apartment/tasks/task_helper.rb

+12
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,17 @@ def self.create_tenant(tenant_name)
3636
rescue Apartment::TenantExists => e
3737
puts "Tried to create already existing tenant: #{e}"
3838
end
39+
40+
def self.migrate_tenant(tenant_name)
41+
strategy = Apartment.db_migrate_tenant_missing_strategy
42+
create_tenant(tenant_name) if strategy == :create_tenant
43+
44+
puts("Migrating #{tenant_name} tenant")
45+
Apartment::Migrator.migrate tenant_name
46+
rescue Apartment::TenantNotFound => e
47+
raise e if strategy == :raise_exception
48+
49+
puts e.message
50+
end
3951
end
4052
end

lib/apartment/version.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# frozen_string_literal: true
22

33
module Apartment
4-
VERSION = '2.8.1'
4+
VERSION = '2.9.0'
55
end

lib/tasks/apartment.rake

+1-7
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,7 @@ apartment_namespace = namespace :apartment do
3030
task :migrate do
3131
Apartment::TaskHelper.warn_if_tenants_empty
3232
Apartment::TaskHelper.each_tenant do |tenant|
33-
begin
34-
Apartment::TaskHelper.create_tenant(tenant)
35-
puts("Migrating #{tenant} tenant")
36-
Apartment::Migrator.migrate tenant
37-
rescue Apartment::TenantNotFound => e
38-
puts e.message
39-
end
33+
Apartment::TaskHelper.migrate_tenant(tenant)
4034
end
4135
end
4236

0 commit comments

Comments
 (0)