Add a script to read all databases with a prefix from the database server
When passing a value via the FOODSOFT_DB_PREFIX environment variable the FOODSOFT_FOODCOOPS environment variable will be overwritten with a list of databases starting with the given prefix. This can be used to dynamically generate the app_config.yml in a multicoop installation and avoid listing all instances manually.
This commit is contained in:
parent
a40934dd5a
commit
22fd814193
2 changed files with 26 additions and 0 deletions
|
@ -6,6 +6,10 @@ if [ -f tmp/pids/server.pid ]; then
|
||||||
rm tmp/pids/server.pid
|
rm tmp/pids/server.pid
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ ! -z "${FOODSOFT_DB_PREFIX}" ] || [ ! -z "${FOODSOFT_DB_PREFIX_FILE}" ]; then
|
||||||
|
FOODSOFT_FOODCOOPS=`BUNDLE_CONFIG=/dev/null bundle exec ruby script/list_databases`
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -e app_config.defaults.yml ] ; then
|
if [ -e app_config.defaults.yml ] ; then
|
||||||
cat app_config.defaults.yml > config/app_config.yml
|
cat app_config.defaults.yml > config/app_config.yml
|
||||||
|
|
||||||
|
|
22
script/list_databases
Executable file
22
script/list_databases
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
require 'mysql2'
|
||||||
|
|
||||||
|
def get_env_or_file_content(name)
|
||||||
|
ENV.fetch('FOODSOFT_DB_' + name) do |full_name|
|
||||||
|
file_name = ENV.fetch(full_name + '_FILE', nil)
|
||||||
|
file_name ? File.read(file_name).strip : ''
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
prefix = get_env_or_file_content('PREFIX')
|
||||||
|
host = get_env_or_file_content('HOST')
|
||||||
|
database = get_env_or_file_content('NAME')
|
||||||
|
username = get_env_or_file_content('USER')
|
||||||
|
password = get_env_or_file_content('PASSWORD')
|
||||||
|
|
||||||
|
client = Mysql2::Client.new(host: host, database: database, username: username, password: password)
|
||||||
|
escaped_prefix = client.escape(prefix)
|
||||||
|
results = client.query("SELECT schema_name FROM information_schema.schemata WHERE schema_name LIKE '#{escaped_prefix}%'")
|
||||||
|
results.each do |row|
|
||||||
|
puts row["schema_name"][prefix.length..]
|
||||||
|
end
|
||||||
|
client.close
|
Loading…
Reference in a new issue