class ApplicationSeeds::Database
Public Class Methods
connection()
click to toggle source
# File lib/application_seeds/database.rb, line 5 def connection return @connection unless @connection.nil? database_config = YAML.load(ERB.new(File.read("config/database.yml")).result)[Rails.env] pg_config = {} pg_config[:dbname] = database_config['database'] pg_config[:host] = database_config['host'] if database_config['host'] pg_config[:port] = database_config['port'] if database_config['port'] pg_config[:user] = database_config['username'] if database_config['username'] pg_config[:password] = database_config['password'] if database_config['password'] @connection = PG.connect(pg_config) end
without_foreign_keys() { || ... }
click to toggle source
# File lib/application_seeds/database.rb, line 20 def without_foreign_keys drop_foreign_keys_sql = generate_drop_foreign_keys_sql create_foreign_keys_sql = generate_create_foreign_keys_sql connection.exec(drop_foreign_keys_sql) yield connection.exec(create_foreign_keys_sql) end
Private Class Methods
generate_create_foreign_keys_sql()
click to toggle source
# File lib/application_seeds/database.rb, line 43 def generate_create_foreign_keys_sql result = connection.exec <<-SQL SELECT 'ALTER TABLE '||nspname||'.'||relname||' ADD CONSTRAINT '||conname||' '|| pg_get_constraintdef(pg_constraint.oid)||';' FROM pg_constraint INNER JOIN pg_class ON conrelid=pg_class.oid INNER JOIN pg_namespace ON pg_namespace.oid=pg_class.relnamespace WHERE contype='f' ORDER BY CASE WHEN contype='f' THEN 0 ELSE 1 END DESC,contype DESC,nspname DESC,relname DESC,conname DESC; SQL result.values.join end
generate_drop_foreign_keys_sql()
click to toggle source
# File lib/application_seeds/database.rb, line 31 def generate_drop_foreign_keys_sql result = connection.exec <<-SQL SELECT 'ALTER TABLE '||nspname||'.'||relname||' DROP CONSTRAINT '||conname||';' FROM pg_constraint INNER JOIN pg_class ON conrelid=pg_class.oid INNER JOIN pg_namespace ON pg_namespace.oid=pg_class.relnamespace WHERE contype='f' ORDER BY CASE WHEN contype='f' THEN 0 ELSE 1 END,contype,nspname,relname,conname SQL result.values.join end