apartment 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY.md +5 -0
- data/lib/apartment/adapters/abstract_adapter.rb +5 -4
- data/lib/apartment/database.rb +1 -1
- data/lib/apartment/version.rb +1 -1
- data/lib/tasks/apartment.rake +31 -6
- data/spec/integration/apartment_rake_integration_spec.rb +8 -1
- data/spec/tasks/apartment_rake_spec.rb +2 -0
- metadata +3 -3
data/HISTORY.md
CHANGED
@@ -55,6 +55,11 @@ module Apartment
|
|
55
55
|
|
56
56
|
connect_to_new(database)
|
57
57
|
end
|
58
|
+
|
59
|
+
def seed_data
|
60
|
+
load_or_abort("#{Rails.root}/db/seeds.rb")
|
61
|
+
end
|
62
|
+
alias_method :seed, :seed_data
|
58
63
|
|
59
64
|
protected
|
60
65
|
|
@@ -70,10 +75,6 @@ module Apartment
|
|
70
75
|
load_or_abort("#{Rails.root}/db/schema.rb")
|
71
76
|
end
|
72
77
|
|
73
|
-
def seed_data
|
74
|
-
load_or_abort("#{Rails.root}/db/seeds.rb")
|
75
|
-
end
|
76
|
-
|
77
78
|
# Return a new config that is multi-tenanted
|
78
79
|
def multi_tenantify(database)
|
79
80
|
@config.clone.tap do |config|
|
data/lib/apartment/database.rb
CHANGED
@@ -3,7 +3,7 @@ require 'active_support/core_ext/string/inflections' # for `constantize`
|
|
3
3
|
module Apartment
|
4
4
|
module Database
|
5
5
|
|
6
|
-
MULTI_TENANT_METHODS = [:create, :switch, :reset, :connect_and_reset, :process]
|
6
|
+
MULTI_TENANT_METHODS = [:create, :switch, :reset, :connect_and_reset, :process, :seed]
|
7
7
|
|
8
8
|
class << self
|
9
9
|
|
data/lib/apartment/version.rb
CHANGED
data/lib/tasks/apartment.rake
CHANGED
@@ -4,15 +4,34 @@ apartment_namespace = namespace :apartment do
|
|
4
4
|
task :migrate => :environment do
|
5
5
|
ActiveRecord::Migrator.migrate(ActiveRecord::Migrator.migrations_path)
|
6
6
|
|
7
|
-
Apartment.database_names.each
|
7
|
+
Apartment.database_names.each do |db|
|
8
|
+
# Note sure I should use puts here, but Rails.logger doesn't work, how do I log in migrations?
|
9
|
+
puts("Migrating #{db} database")
|
10
|
+
Apartment::Migrator.migrate db
|
11
|
+
end
|
8
12
|
end
|
9
13
|
|
14
|
+
desc "Seed all multi-tenant databases"
|
15
|
+
task :seed => :environment do
|
16
|
+
Apartment::Database.seed
|
17
|
+
|
18
|
+
Apartment.database_names.each do |db|
|
19
|
+
puts("Seeding #{db} database")
|
20
|
+
Apartment::Database.process(db) do
|
21
|
+
Apartment::Database.seed
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
10
26
|
desc "Rolls the schema back to the previous version (specify steps w/ STEP=n) across all multi-tenant dbs."
|
11
27
|
task :rollback => :environment do
|
12
28
|
step = ENV['STEP'] ? ENV['STEP'].to_i : 1
|
13
29
|
ActiveRecord::Migrator.rollback(ActiveRecord::Migrator.migrations_path, step)
|
14
30
|
|
15
|
-
Apartment.database_names.each
|
31
|
+
Apartment.database_names.each do |db|
|
32
|
+
puts("Rolling back #{db} database")
|
33
|
+
Apartment::Migrator.rollback db, step
|
34
|
+
end
|
16
35
|
end
|
17
36
|
|
18
37
|
namespace :migrate do
|
@@ -21,18 +40,24 @@ apartment_namespace = namespace :apartment do
|
|
21
40
|
task :up => :environment do
|
22
41
|
version = ENV['VERSION'] ? ENV['VERSION'].to_i : nil
|
23
42
|
raise 'VERSION is required' unless version
|
24
|
-
|
25
43
|
ActiveRecord::Migrator.run(:up, ActiveRecord::Migrator.migrations_path, version)
|
26
|
-
|
44
|
+
|
45
|
+
Apartment.database_names.each do |db|
|
46
|
+
puts("Migrating #{db} database up")
|
47
|
+
Apartment::Migrator.run :up, db, version
|
48
|
+
end
|
27
49
|
end
|
28
50
|
|
29
51
|
desc 'Runs the "down" for a given migration VERSION across all multi-tenant dbs.'
|
30
52
|
task :down => :environment do
|
31
53
|
version = ENV['VERSION'] ? ENV['VERSION'].to_i : nil
|
32
54
|
raise 'VERSION is required' unless version
|
33
|
-
|
34
55
|
ActiveRecord::Migrator.run(:down, ActiveRecord::Migrator.migrations_path, version)
|
35
|
-
|
56
|
+
|
57
|
+
Apartment.database_names.each do |db|
|
58
|
+
puts("Migrating #{db} database down")
|
59
|
+
Apartment::Migrator.run :down, db, version
|
60
|
+
end
|
36
61
|
end
|
37
62
|
|
38
63
|
desc 'Rollbacks the database one migration and re migrate up (options: STEP=x, VERSION=x).'
|
@@ -40,7 +40,6 @@ describe "apartment rake tasks" do
|
|
40
40
|
end
|
41
41
|
|
42
42
|
describe "#migrate" do
|
43
|
-
|
44
43
|
it "should migrate all databases" do
|
45
44
|
Apartment::Migrator.should_receive(:migrate).exactly(@db_names.length).times
|
46
45
|
|
@@ -58,5 +57,13 @@ describe "apartment rake tasks" do
|
|
58
57
|
end
|
59
58
|
end
|
60
59
|
|
60
|
+
describe "apartment:seed" do
|
61
|
+
it "should seed all databases" do
|
62
|
+
Apartment::Database.should_receive(:seed).exactly(@db_names.length + 1).times # +1 for the public db
|
63
|
+
|
64
|
+
@rake['apartment:seed'].invoke
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
61
68
|
end
|
62
69
|
end
|
@@ -104,11 +104,13 @@ describe "apartment rake tasks" do
|
|
104
104
|
end
|
105
105
|
|
106
106
|
it "should rollback dbs STEP amt" do
|
107
|
+
ActiveRecord::Migrator.should_receive(:rollback).once
|
107
108
|
Apartment::Migrator.should_receive(:rollback).with(anything, step.to_i).exactly(db_count).times
|
108
109
|
ENV['STEP'] = step
|
109
110
|
@rake['apartment:rollback'].invoke
|
110
111
|
end
|
111
112
|
end
|
113
|
+
|
112
114
|
end
|
113
115
|
|
114
116
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: apartment
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.7.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Ryan Brunner
|
@@ -185,7 +185,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
185
185
|
requirements:
|
186
186
|
- - ">="
|
187
187
|
- !ruby/object:Gem::Version
|
188
|
-
hash:
|
188
|
+
hash: 1175145384606930711
|
189
189
|
segments:
|
190
190
|
- 0
|
191
191
|
version: "0"
|
@@ -194,7 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
194
194
|
requirements:
|
195
195
|
- - ">="
|
196
196
|
- !ruby/object:Gem::Version
|
197
|
-
hash:
|
197
|
+
hash: 1175145384606930711
|
198
198
|
segments:
|
199
199
|
- 0
|
200
200
|
version: "0"
|