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.



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

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

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



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

def config
  @config
end

Instance Method Details

#==(other) ⇒ Object



124
125
126
127
128
129
130
# File 'lib/ardb/adapter/base.rb', line 124

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

#connect_dbObject



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

def connect_db
  ActiveRecord::Base.establish_connection(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



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

def connect_hash
  config.activerecord_connect_hash
end

#create_db(*args) ⇒ Object

Raises:

  • (NotImplementedError)


49
50
51
# File 'lib/ardb/adapter/base.rb', line 49

def create_db(*args)
  raise NotImplementedError
end

#databaseObject



20
21
22
# File 'lib/ardb/adapter/base.rb', line 20

def database
  config.database
end

#drop_db(*args) ⇒ Object

Raises:

  • (NotImplementedError)


53
54
55
# File 'lib/ardb/adapter/base.rb', line 53

def drop_db(*args)
  raise NotImplementedError
end

#drop_tables(*args) ⇒ Object

Raises:

  • (NotImplementedError)


57
58
59
# File 'lib/ardb/adapter/base.rb', line 57

def drop_tables(*args)
  raise NotImplementedError
end

#dump_ruby_schemaObject



112
113
114
115
116
117
118
# File 'lib/ardb/adapter/base.rb', line 112

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

#dump_schemaObject



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

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

#dump_sql_schemaObject

Raises:

  • (NotImplementedError)


120
121
122
# File 'lib/ardb/adapter/base.rb', line 120

def dump_sql_schema
  raise NotImplementedError
end

#escape_like_pattern(pattern, escape_char = nil) ⇒ Object



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

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



96
97
98
# File 'lib/ardb/adapter/base.rb', line 96

def load_ruby_schema
  load ruby_schema_path
end

#load_schemaObject



88
89
90
91
92
93
94
# File 'lib/ardb/adapter/base.rb', line 88

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

#load_sql_schemaObject

Raises:

  • (NotImplementedError)


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

def load_sql_schema
  raise NotImplementedError
end

#migrate_dbObject



68
69
70
# File 'lib/ardb/adapter/base.rb', line 68

def migrate_db
  migrate_db_up
end

#migrate_db_backward(steps = 1) ⇒ Object



84
85
86
# File 'lib/ardb/adapter/base.rb', line 84

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

#migrate_db_down(target_version = nil) ⇒ Object



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

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

#migrate_db_forward(steps = 1) ⇒ Object



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

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

#migrate_db_up(target_version = nil) ⇒ Object



72
73
74
# File 'lib/ardb/adapter/base.rb', line 72

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

#migrations_pathObject



24
25
26
# File 'lib/ardb/adapter/base.rb', line 24

def migrations_path
  config.migrations_path
end

#ruby_schema_pathObject



32
33
34
# File 'lib/ardb/adapter/base.rb', line 32

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

#schema_formatObject



28
29
30
# File 'lib/ardb/adapter/base.rb', line 28

def schema_format
  config.schema_format
end

#sql_schema_pathObject



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

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