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 26  
27 27 Each "hosted" environment must have an entry like this:
28 28  
29   - env1_production:
  29 + env1_production: &DEFAULT
30 30 adapter: postgresql
31 31 encoding: unicode
32 32 database: noosfero
... ... @@ -61,7 +61,7 @@ The "hosted" environments define, besides the `schema_search_path`, a list of do
61 61 You must also tell the application which is the default environment.
62 62  
63 63 production:
64   - env1_production
  64 + <<: *DEFAULT
65 65  
66 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 1 # Refer to INSTALL.multitenancy for more information on Multitenancy support
2   -env1_production:
  2 +env1_production: &DEFAULT
3 3 adapter: postgresql
4 4 encoding: unicode
5 5 database: noosfero
... ... @@ -30,4 +30,4 @@ env3_production:
30 30 - env3.net
31 31  
32 32 production:
33   - env1_production
  33 + <<: *DEFAULT
... ...
lib/tasks/multitenancy.rake
1 1 namespace :multitenancy do
2 2  
3   - task :create do
  3 + task :create => :environment do
4 4 db_envs = ActiveRecord::Base.configurations.keys.select{ |k| k.match(/_development$|_production$|_test$/) }
5 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 7 (db_envs.map{ |e| e + '.rb' } - file_envs).each { |env| ln_s env.split('_').last, env }
8 8 end
9 9  
10   - task :remove do
  10 + task :remove => :environment do
11 11 db_envs = ActiveRecord::Base.configurations.keys.select{ |k| k.match(/_development$|_production$|_test$/) }
12 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 14 (file_envs - db_envs.map{ |e| e + '.rb' }).each { |env| safe_unlink env }
15 15 end
16 16  
... ...