Commit 2baa37a91d14773c42ab2ed68c2d560d8ab5e84a

Authored by Braulio Bhavamitra
2 parents 44bfba0a 79477411

Merge branch 'multitenancy' into 'master'

Fixes multitenancy documentation and task

Multitenancy installation is not currently working as described on documentation.
This patch fixes the create task and updates the documentation.

See merge request !377
INSTALL.multitenancy.md
@@ -26,7 +26,7 @@ The file config/database.yml must follow a structure in order to achieve multite @@ -26,7 +26,7 @@ The file config/database.yml must follow a structure in order to achieve multite
26 26
27 Each "hosted" environment must have an entry like this: 27 Each "hosted" environment must have an entry like this:
28 28
29 - env1_production: 29 + env1_production: &DEFAULT
30 adapter: postgresql 30 adapter: postgresql
31 encoding: unicode 31 encoding: unicode
32 database: noosfero 32 database: noosfero
@@ -61,7 +61,7 @@ The "hosted" environments define, besides the `schema_search_path`, a list of do @@ -61,7 +61,7 @@ The "hosted" environments define, besides the `schema_search_path`, a list of do
61 You must also tell the application which is the default environment. 61 You must also tell the application which is the default environment.
62 62
63 production: 63 production:
64 - env1_production 64 + <<: *DEFAULT
65 65
66 On the example above there are only three hosted environments, but it can be more than three. The schemas `env2` and `env3` must already exist in the same database of the hosting environment. As postgres user, you can create them typing: 66 On the example above there are only three hosted environments, but it can be more than three. The schemas `env2` and `env3` must already exist in the same database of the hosting environment. As postgres user, you can create them typing:
67 67
config/database.yml.multitenancy
1 # Refer to INSTALL.multitenancy for more information on Multitenancy support 1 # Refer to INSTALL.multitenancy for more information on Multitenancy support
2 -env1_production: 2 +env1_production: &DEFAULT
3 adapter: postgresql 3 adapter: postgresql
4 encoding: unicode 4 encoding: unicode
5 database: noosfero 5 database: noosfero
@@ -30,4 +30,4 @@ env3_production: @@ -30,4 +30,4 @@ env3_production:
30 - env3.net 30 - env3.net
31 31
32 production: 32 production:
33 - env1_production 33 + <<: *DEFAULT
lib/tasks/multitenancy.rake
1 namespace :multitenancy do 1 namespace :multitenancy do
2 2
3 - task :create do 3 + task :create => :environment do
4 db_envs = ActiveRecord::Base.configurations.keys.select{ |k| k.match(/_development$|_production$|_test$/) } 4 db_envs = ActiveRecord::Base.configurations.keys.select{ |k| k.match(/_development$|_production$|_test$/) }
5 cd Rails.root.join('config', 'environments'), :verbose => true 5 cd Rails.root.join('config', 'environments'), :verbose => true
6 - file_envs = Dir.glob "{*_development.rb,*_prodution.rb,*_test.rb}" 6 + file_envs = Dir.glob "{*_development.rb,*_production.rb,*_test.rb}"
7 (db_envs.map{ |e| e + '.rb' } - file_envs).each { |env| ln_s env.split('_').last, env } 7 (db_envs.map{ |e| e + '.rb' } - file_envs).each { |env| ln_s env.split('_').last, env }
8 end 8 end
9 9
10 - task :remove do 10 + task :remove => :environment do
11 db_envs = ActiveRecord::Base.configurations.keys.select{ |k| k.match(/_development$|_production$|_test$/) } 11 db_envs = ActiveRecord::Base.configurations.keys.select{ |k| k.match(/_development$|_production$|_test$/) }
12 cd Rails.root.join('config', 'environments'), :verbose => true 12 cd Rails.root.join('config', 'environments'), :verbose => true
13 - file_envs = Dir.glob "{*_development.rb,*_prodution.rb,*_test.rb}" 13 + file_envs = Dir.glob "{*_development.rb,*_production.rb,*_test.rb}"
14 (file_envs - db_envs.map{ |e| e + '.rb' }).each { |env| safe_unlink env } 14 (file_envs - db_envs.map{ |e| e + '.rb' }).each { |env| safe_unlink env }
15 end 15 end
16 16