Skip to content

Instantly share code, notes, and snippets.

@yamaaki
Created July 21, 2015 15:27
Show Gist options
  • Save yamaaki/fd0375a2e516e4b9483c to your computer and use it in GitHub Desktop.
Save yamaaki/fd0375a2e516e4b9483c to your computer and use it in GitHub Desktop.
namespace :shards do
def databases
databases = []
hash = YAML::load(File.read("#{Rails.root}/config/shards.yml"))
data = hash['octopus'][Rails.env]
data.each do |key, val|
val.each do |key2, val2|
if key2 == 'database'
databases << val2
elsif val2.is_a?(Hash)
val2.each do |key3, val3|
if val3.is_a?(Hash)
val3.each do |key4, val4|
if key4 == 'database'
databases << val4
end
end
end
end
end
end
end
return databases
end
desc 'Create databases from shards.yml'
task :create do
databases().each do |database|
sql = "create database #{database}"
system "mysql -uroot -e '#{sql}'"
end
end
desc 'Drop databases from shards.yml'
task :drop do
databases().each do |database|
sql = "drop database #{database}"
system "mysql -uroot -e '#{sql}'"
end
end
desc 'List databases from shards.yml'
task :list do
databases().each do |database|
puts database
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment