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.



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

def initialize(config)
  @config = config
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



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

def config
  @config
end

Instance Method Details

#==(other) ⇒ Object



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

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

#connect_dbObject



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

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



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

def connect_hash;    self.config.activerecord_connect_hash; end

#create_db(*args) ⇒ Object

Raises:

  • (NotImplementedError)


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

def create_db(*args); raise NotImplementedError; end

#databaseObject



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

def database;        self.config.database;                  end

#drop_db(*args) ⇒ Object

Raises:

  • (NotImplementedError)


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

def drop_db(*args);   raise NotImplementedError; end

#drop_tables(*args) ⇒ Object

Raises:

  • (NotImplementedError)


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

def drop_tables(*args); raise NotImplementedError; end

#dump_ruby_schemaObject



94
95
96
97
98
99
100
# File 'lib/ardb/adapter/base.rb', line 94

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



85
86
87
88
89
90
91
92
# File 'lib/ardb/adapter/base.rb', line 85

def dump_schema
  # silence STDOUT
  current_stdout = $stdout.dup
  $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)


102
103
104
# File 'lib/ardb/adapter/base.rb', line 102

def dump_sql_schema
  raise NotImplementedError
end

#escape_like_pattern(pattern, escape_char = nil) ⇒ Object



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

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}" }
end

#foreign_key_add_sql(*args) ⇒ Object

Raises:

  • (NotImplementedError)


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

def foreign_key_add_sql(*args);  raise NotImplementedError; end

#foreign_key_drop_sql(*args) ⇒ Object

Raises:

  • (NotImplementedError)


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

def foreign_key_drop_sql(*args); raise NotImplementedError; end

#load_ruby_schemaObject



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

def load_ruby_schema
  load self.ruby_schema_path
end

#load_schemaObject



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

def load_schema
  # silence STDOUT
  current_stdout = $stdout.dup
  $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)


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

def load_sql_schema
  raise NotImplementedError
end

#migrate_dbObject



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/ardb/adapter/base.rb', line 50

def migrate_db
  verbose = ENV["MIGRATE_QUIET"].nil?
  version = ENV["MIGRATE_VERSION"] ? ENV["MIGRATE_VERSION"].to_i : nil

  if defined?(ActiveRecord::Migration::CommandRecorder)
    require 'ardb/migration_helpers'
    ActiveRecord::Migration::CommandRecorder.class_eval do
      include Ardb::MigrationHelpers::RecorderMixin
    end
  end

  ActiveRecord::Migrator.migrations_path = self.migrations_path
  ActiveRecord::Migration.verbose = verbose
  ActiveRecord::Migrator.migrate(self.migrations_path, version) do |migration|
    ENV["MIGRATE_SCOPE"].blank? || (ENV["MIGRATE_SCOPE"] == migration.scope)
  end
end

#migrations_pathObject



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

def migrations_path; self.config.migrations_path;           end

#ruby_schema_pathObject



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

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

#schema_formatObject



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

def schema_format;   self.config.schema_format;             end

#sql_schema_pathObject



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

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