Class: Ardb::Adapter::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/ardb/adapter/base.rb

Direct Known Subclasses

Mysql, Postgresql, Sqlite, Ardb::AdapterSpy

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Base

Returns a new instance of Base.



8
9
10
11
# File 'lib/ardb/adapter/base.rb', line 8

def initialize(config)
  @config = config
  validate!
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



6
7
8
# File 'lib/ardb/adapter/base.rb', line 6

def config
  @config
end

Instance Method Details

#==(other) ⇒ Object



103
104
105
106
107
108
109
# File 'lib/ardb/adapter/base.rb', line 103

def ==(other)
  if other.kind_of?(self.class)
    self.config == other.config
  else
    super
  end
end

#connect_dbObject



40
41
42
43
44
45
# File 'lib/ardb/adapter/base.rb', line 40

def connect_db
  ActiveRecord::Base.establish_connection(self.connect_hash)
  # checkout a connection to ensure we can connect to the DB, we don"t do
  # anything with the connection and immediately check it back in
  ActiveRecord::Base.connection_pool.with_connection{ }
end

#connect_hashObject



13
# File 'lib/ardb/adapter/base.rb', line 13

def connect_hash;    self.config.activerecord_connect_hash; end

#create_db(*args) ⇒ Object

Raises:

  • (NotImplementedError)


35
# File 'lib/ardb/adapter/base.rb', line 35

def create_db(*args); raise NotImplementedError; end

#databaseObject



14
# File 'lib/ardb/adapter/base.rb', line 14

def database;        self.config.database;                  end

#drop_db(*args) ⇒ Object

Raises:

  • (NotImplementedError)


36
# File 'lib/ardb/adapter/base.rb', line 36

def drop_db(*args);   raise NotImplementedError; end

#drop_tables(*args) ⇒ Object

Raises:

  • (NotImplementedError)


38
# File 'lib/ardb/adapter/base.rb', line 38

def drop_tables(*args); raise NotImplementedError; end

#dump_ruby_schemaObject



91
92
93
94
95
96
97
# File 'lib/ardb/adapter/base.rb', line 91

def dump_ruby_schema
  require "active_record/schema_dumper"
  FileUtils.mkdir_p File.dirname(self.ruby_schema_path)
  File.open(self.ruby_schema_path, "w:utf-8") do |file|
    ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
  end
end

#dump_schemaObject



83
84
85
86
87
88
89
# File 'lib/ardb/adapter/base.rb', line 83

def dump_schema
  current_stdout = $stdout.dup # silence STDOUT
  $stdout = File.new("/dev/null", "w")
  dump_ruby_schema
  dump_sql_schema if self.schema_format == Ardb::Config::SQL_SCHEMA_FORMAT
  $stdout = current_stdout
end

#dump_sql_schemaObject

Raises:

  • (NotImplementedError)


99
100
101
# File 'lib/ardb/adapter/base.rb', line 99

def dump_sql_schema
  raise NotImplementedError
end

#escape_like_pattern(pattern, escape_char = nil) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/ardb/adapter/base.rb', line 26

def escape_like_pattern(pattern, escape_char = nil)
  escape_char ||= "\\"
  pattern = pattern.to_s.dup
  pattern.gsub!(escape_char){ escape_char * 2 }
  # don't allow custom wildcards
  pattern.gsub!(/%|_/){ |wildcard_char| "#{escape_char}#{wildcard_char}" }
  pattern
end

#load_ruby_schemaObject



75
76
77
# File 'lib/ardb/adapter/base.rb', line 75

def load_ruby_schema
  load self.ruby_schema_path
end

#load_schemaObject



67
68
69
70
71
72
73
# File 'lib/ardb/adapter/base.rb', line 67

def load_schema
  current_stdout = $stdout.dup # silence STDOUT
  $stdout = File.new("/dev/null", "w")
  load_ruby_schema if self.schema_format == Ardb::Config::RUBY_SCHEMA_FORMAT
  load_sql_schema  if self.schema_format == Ardb::Config::SQL_SCHEMA_FORMAT
  $stdout = current_stdout
end

#load_sql_schemaObject

Raises:

  • (NotImplementedError)


79
80
81
# File 'lib/ardb/adapter/base.rb', line 79

def load_sql_schema
  raise NotImplementedError
end

#migrate_dbObject



47
48
49
# File 'lib/ardb/adapter/base.rb', line 47

def migrate_db
  migrate_db_up
end

#migrate_db_backward(steps = 1) ⇒ Object



63
64
65
# File 'lib/ardb/adapter/base.rb', line 63

def migrate_db_backward(steps = 1)
  migration_context.rollback(steps)
end

#migrate_db_down(target_version = nil) ⇒ Object



55
56
57
# File 'lib/ardb/adapter/base.rb', line 55

def migrate_db_down(target_version = nil)
  migration_context.down(target_version)
end

#migrate_db_forward(steps = 1) ⇒ Object



59
60
61
# File 'lib/ardb/adapter/base.rb', line 59

def migrate_db_forward(steps = 1)
  migration_context.forward(steps)
end

#migrate_db_up(target_version = nil) ⇒ Object



51
52
53
# File 'lib/ardb/adapter/base.rb', line 51

def migrate_db_up(target_version = nil)
  migration_context.up(target_version)
end

#migrations_pathObject



15
# File 'lib/ardb/adapter/base.rb', line 15

def migrations_path; self.config.migrations_path;           end

#ruby_schema_pathObject



18
19
20
# File 'lib/ardb/adapter/base.rb', line 18

def ruby_schema_path
  @ruby_schema_path ||= "#{self.config.schema_path}.rb"
end

#schema_formatObject



16
# File 'lib/ardb/adapter/base.rb', line 16

def schema_format;   self.config.schema_format;             end

#sql_schema_pathObject



22
23
24
# File 'lib/ardb/adapter/base.rb', line 22

def sql_schema_path
  @sql_schema_path ||= "#{self.config.schema_path}.sql"
end