Commit e1755d7e645dcdc40bc5f4ff1eeff97c6d0e67ff

Authored by Antonio Terceiro
2 parents beee8706 472a65c0

Merge branch 'allow_erb_template_in_database_yml' into 'master'

allows erb templates in_database.yml

This MR will allows us to do use erb templating syntax inside config/database.yml

Example:


<code>
<%
  # http://mislav.uniqpath.com/rails/branching-the-database-along-with-your-code/
  app = "noosfero"
  branch = `git symbolic-ref HEAD 2>/dev/null`.chomp.sub('refs/heads/', '')
  user = (`whoami`).gsub(/\W/, '')
%>
development:
  adapter: postgresql
  encoding: unicode
  database: <%= "#{app}_#{branch}_development" %>
  template: template0
  username: <%= user %>
  password:
</code>

Did not break any test that was passing before:

Before: https://travis-ci.org/noosfero/noosfero/builds/99440879

After: https://travis-ci.org/evandrojr/noosferogov/jobs/99462155


See merge request !755
lib/noosfero/multi_tenancy.rb
@@ -26,7 +26,7 @@ module Noosfero @@ -26,7 +26,7 @@ module Noosfero
26 26
27 def self.load_map 27 def self.load_map
28 db_file = Rails.root.join('config', 'database.yml') 28 db_file = Rails.root.join('config', 'database.yml')
29 - db_config = YAML.load_file(db_file) 29 + db_config = YAML.load(ERB.new(File.read(db_file)).result)
30 map = { } 30 map = { }
31 db_config.each do |env, attr| 31 db_config.each do |env, attr|
32 next unless env.match(/_#{Rails.env}$/) and attr['adapter'] =~ /^postgresql$/i 32 next unless env.match(/_#{Rails.env}$/) and attr['adapter'] =~ /^postgresql$/i
@@ -37,7 +37,7 @@ module Noosfero @@ -37,7 +37,7 @@ module Noosfero
37 37
38 def self.is_hosted_environment? 38 def self.is_hosted_environment?
39 db_file = Rails.root.join('config', 'database.yml') 39 db_file = Rails.root.join('config', 'database.yml')
40 - db_config = YAML.load_file(db_file) 40 + db_config = YAML.load(ERB.new(File.read(db_file)).result)
41 db_config.select{ |env, attr| Rails.env.to_s.match(/_#{env}$/) }.any? 41 db_config.select{ |env, attr| Rails.env.to_s.match(/_#{env}$/) }.any?
42 end 42 end
43 43
lib/tasks/backup.rake
1 task :load_backup_config do 1 task :load_backup_config do
2 - $config = YAML.load_file('config/database.yml') 2 + db_file = Rails.root.join('config', 'database.yml')
  3 + $config = YAML.load(ERB.new(File.read(db_file)).result)
3 end 4 end
4 5
5 task :check_backup_support => :load_backup_config do 6 task :check_backup_support => :load_backup_config do
script/odbcconf
1 #!/usr/bin/env ruby 1 #!/usr/bin/env ruby
2 2
3 require 'yaml' 3 require 'yaml'
4 -config = YAML.load_file(File.dirname(__FILE__) + '/../config/database.yml')['production'] 4 +require 'erb'
5 5
  6 +config = YAML.load(ERB.new(File.read(File.dirname(__FILE__) + '/../config/database.yml')).result)['production']
6 7
7 puts "[PostgreSQLEjabberdNoosfero]" 8 puts "[PostgreSQLEjabberdNoosfero]"
8 puts "Description = PostgreSQL Noosfero ejabberd database" 9 puts "Description = PostgreSQL Noosfero ejabberd database"