Module: YDD

Defined in:
lib/ydd.rb,
lib/ydd/yaml_db.rb,
lib/ydd/application.rb,
lib/ydd/data_manager.rb,
lib/ydd/schema_manager.rb,
lib/ydd/serialization_helper.rb

Defined Under Namespace

Modules: SerializationHelper, YamlDB Classes: Application, DataManager, Error, SchemaManager

Class Method Summary collapse

Class Method Details

.check_files!(dir, *files) ⇒ Object



91
92
93
94
95
96
# File 'lib/ydd.rb', line 91

def self.check_files!(dir, *files)
  files.each do |file|
    path = File.join(dir, file)
    raise Error, "#{file} doesn't exist in #{dir}" if !File.readable?(path)
  end
end

.configuration_from(file) ⇒ Object



54
55
56
57
58
# File 'lib/ydd.rb', line 54

def self.configuration_from(file)
  require 'erb'
  parsed = ERB.new(File.read(file)).result
  YAML.load(parsed)[env]
end

.connect(specification) ⇒ Object



65
66
67
# File 'lib/ydd.rb', line 65

def self.connect(specification)
  ActiveRecord::Base.establish_connection(specification)
end

.connect_from(path) ⇒ Object

Raises:



60
61
62
63
# File 'lib/ydd.rb', line 60

def self.connect_from(path)
  raise Error, "Invalid database config at #{path}" if !File.exists?(path)
  connect configuration_from(path)
end

.connectionObject



50
51
52
# File 'lib/ydd.rb', line 50

def self.connection
  ActiveRecord::Base.connection
end

.dump(directory) ⇒ Object



69
70
71
72
73
# File 'lib/ydd.rb', line 69

def self.dump(directory)
  FileUtils.mkdir_p directory
  SchemaManager.dump File.join(directory, "schema.rb") unless skip_schema?
  DataManager.dump   File.join(directory, "data.yml")  unless skip_data?
end

.envObject



46
47
48
# File 'lib/ydd.rb', line 46

def self.env
  @@env ||= (ENV['YDD_ENV'] || ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development')
end

.env=(value) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/ydd.rb', line 38

def self.env=(value)
  if value.blank?
    @@env = nil
  else
    @@env = value
  end
end

.load(directory) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/ydd.rb', line 75

def self.load(directory)
  if !File.directory?(directory)
    raise Error, "Please provide a valid directory - #{directory} doesn't exist."
  end
  
  unless skip_schema?
    check_files! directory, "schema.rb"
    SchemaManager.load File.join(directory, "schema.rb") 
  end
  
  unless skip_data?
    check_files! directory, "data.yml"
    DataManager.load   File.join(directory, "data.yml")
  end
end

.schema_tablesObject



22
23
24
# File 'lib/ydd.rb', line 22

def self.schema_tables
  [ 'schema_info', 'schema_migrations' ]
end

.skip_data?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/ydd.rb', line 26

def self.skip_data?
  !!skip_data
end

.skip_schema?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/ydd.rb', line 18

def self.skip_schema?
  !!skip_schema
end

.tablesObject



34
35
36
# File 'lib/ydd.rb', line 34

def self.tables
  @@tables ||= nil
end

.tables=(value) ⇒ Object



30
31
32
# File 'lib/ydd.rb', line 30

def self.tables=(value)
  @@tables = value.blank? ? nil : Array(value).join(",").split(",")
end