module ActiveFixtures::StateDumper

Constants

CLEAN_STATE_NAME
DB_NAME
FIXTURES_PATH

Public Class Methods

cleanup!() click to toggle source
# File lib/active-fixtures/state_dumper.rb, line 13
def cleanup!
  FileUtils.rm_rf(FIXTURES_PATH) if File.exist?(FIXTURES_PATH)
end
dump(state) click to toggle source
# File lib/active-fixtures/state_dumper.rb, line 33
def dump(state)
  dump_db(state.name)
  File.write(
    dump_entities_file(state.name),
    Hash[*state.entities.flat_map{ |name, entity|
      [name, entity.attributes]
    }].to_json
  )
end
exists?(state_name) click to toggle source
# File lib/active-fixtures/state_dumper.rb, line 17
def exists?(state_name)
  File.exists?(dump_db_file(state_name))
end
init!() click to toggle source
# File lib/active-fixtures/state_dumper.rb, line 8
def init!
  FileUtils.mkdir_p(FIXTURES_PATH)
  dump_db(CLEAN_STATE_NAME)
end
load(state_name) click to toggle source
# File lib/active-fixtures/state_dumper.rb, line 25
def load(state_name)
  load_db(state_name)

  Hash[*JSON.parse(File.read(dump_entities_file(state_name))).flat_map{ |name, attrs|
    [name, name.gsub(/::[^:]*\z/, '').constantize.new(attrs)]
  }]
end
load_clean!() click to toggle source
# File lib/active-fixtures/state_dumper.rb, line 21
def load_clean!
  load_db(CLEAN_STATE_NAME)
end

Private Class Methods

dump_db(state_name) click to toggle source
# File lib/active-fixtures/state_dumper.rb, line 53
def dump_db(state_name)
  args = ['-x', '-O', '-c', '-Fc', '-f', dump_db_file(state_name), DB_NAME]
  Kernel.system('pg_dump', *args)
end
dump_db_file(state_name) click to toggle source
# File lib/active-fixtures/state_dumper.rb, line 45
def dump_db_file(state_name)
  File.join(FIXTURES_PATH, "#{state_name}.db.dump")
end
dump_entities_file(state_name) click to toggle source
# File lib/active-fixtures/state_dumper.rb, line 49
def dump_entities_file(state_name)
  File.join(FIXTURES_PATH, "#{state_name}.entities.json")
end
load_db(state_name) click to toggle source
# File lib/active-fixtures/state_dumper.rb, line 58
def load_db(state_name)
  args = ['-c', '-d', DB_NAME, dump_db_file(state_name)]
  Kernel.system('pg_restore', *args)
end