require 'inifile'
namespace :uberspace do
namespace :mysql do task :setup_database_and_config do on roles fetch(:uberspace_roles) do my_cnf = capture('cat ~/.my.cnf') my_sql_config = IniFile.new(content: my_cnf)['client'] config = {} stages.each do |env| config[env] = { 'adapter' => 'mysql2', 'encoding' => 'utf8', 'database' => "#{fetch :user}_rails_#{fetch :application}_#{env}", 'host' => 'localhost' } config[env]['username'] = my_sql_config['user'] config[env]['password'] = my_sql_config['password'] config[env]['port'] = my_sql_config['port'].to_i execute "mysql -e 'CREATE DATABASE IF NOT EXISTS #{config[env]['database']} CHARACTER SET utf8 COLLATE utf8_general_ci;'" end execute "mkdir -p #{shared_path}/config" upload! StringIO.new(config.to_yaml), "#{shared_path}/config/database.yml" end end after :'uberspace:check', :'uberspace:mysql:setup_database_and_config' end
end