[Git][noosfero/noosfero][master] 2 commits: allows erb templates in_database.yml

Antonio Terceiro gitlab at mg.gitlab.com
Mon Jan 4 13:21:05 BRST 2016


Antonio Terceiro pushed to branch master at Noosfero / noosfero


Commits:
472a65c0 by Evandro Jr at 2015-12-30T13:40:54Z
allows erb templates in_database.yml

- - - - -
e1755d7e by Antonio Terceiro at 2016-01-04T15:20:48Z
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
- - - - -


3 changed files:

- lib/noosfero/multi_tenancy.rb
- lib/tasks/backup.rake
- script/odbcconf


Changes:

=====================================
lib/noosfero/multi_tenancy.rb
=====================================
--- a/lib/noosfero/multi_tenancy.rb
+++ b/lib/noosfero/multi_tenancy.rb
@@ -26,7 +26,7 @@ module Noosfero
 
     def self.load_map
       db_file = Rails.root.join('config', 'database.yml')
-      db_config = YAML.load_file(db_file)
+      db_config = YAML.load(ERB.new(File.read(db_file)).result)
       map = { }
       db_config.each do |env, attr|
         next unless env.match(/_#{Rails.env}$/) and attr['adapter'] =~ /^postgresql$/i
@@ -37,7 +37,7 @@ module Noosfero
 
     def self.is_hosted_environment?
       db_file = Rails.root.join('config', 'database.yml')
-      db_config = YAML.load_file(db_file)
+      db_config = YAML.load(ERB.new(File.read(db_file)).result)
       db_config.select{ |env, attr| Rails.env.to_s.match(/_#{env}$/) }.any?
     end
 


=====================================
lib/tasks/backup.rake
=====================================
--- a/lib/tasks/backup.rake
+++ b/lib/tasks/backup.rake
@@ -1,5 +1,6 @@
 task :load_backup_config do
-  $config = YAML.load_file('config/database.yml')
+  db_file = Rails.root.join('config', 'database.yml')
+  $config = YAML.load(ERB.new(File.read(db_file)).result)
 end
 
 task :check_backup_support => :load_backup_config do


=====================================
script/odbcconf
=====================================
--- a/script/odbcconf
+++ b/script/odbcconf
@@ -1,8 +1,9 @@
 #!/usr/bin/env ruby
 
 require 'yaml'
-config = YAML.load_file(File.dirname(__FILE__) + '/../config/database.yml')['production']
+require 'erb'
 
+config = YAML.load(ERB.new(File.read(File.dirname(__FILE__) + '/../config/database.yml')).result)['production']
 
 puts "[PostgreSQLEjabberdNoosfero]"
 puts "Description      = PostgreSQL Noosfero ejabberd database"



View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/beee8706035adc8ff38f8b25baeab936bbc389a6...e1755d7e645dcdc40bc5f4ff1eeff97c6d0e67ff
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20160104/5980a91c/attachment-0001.html>


More information about the Noosfero-dev mailing list