class SandboxManager

Public Class Methods

default_sandboxes_base_dir() click to toggle source
# File lib/db_helper/sandbox_manager.rb, line 12
def self.default_sandboxes_base_dir
  configuration = Rails.configuration.database_configuration[Rails.env]
  suffixes = Rails.configuration.database_configuration.keys
  current_db = configuration['database']

  while suffix = suffixes.pop
    current_db = current_db.gsub("_#{suffix}",'')
  end

  sandbox_proc = Sys::ProcTable.ps.find { |p| p.comm == 'mysqld' && p.cwd.to_s.include?(current_db) }

  if sandbox_proc
    sandbox_proc.cwd.gsub(File.join('', current_db, 'data'), '')
  else
    File.join('', 'db')
  end
end
new(dir) click to toggle source
# File lib/db_helper/sandbox_manager.rb, line 7
def initialize(dir)
  @dir = dir
end

Public Instance Methods

configurations() click to toggle source
# File lib/db_helper/sandbox_manager.rb, line 31
def configurations
  Dir[File.join(@dir,'**','my.sandbox.cnf')].map.with_object({}) do |config_file, hash|
    config = ParseConfig.new(config_file)
    sandbox_name = Pathname.new(config_file).split.first.split.last.to_s
    hash[sandbox_name] = config
  end
end
ports() click to toggle source
# File lib/db_helper/sandbox_manager.rb, line 40
def ports
  configurations.map.with_object({}) { |(sandbox, conf), hash| hash[sandbox] = conf['client']['port']}
end