18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/app-database.rb', line 18
def init
raise ArgumentError.new("Cfg not found!") if ! defined?( ::Cfg ) || ! Cfg.db || Cfg.db.empty?
if (! defined? @db ) || ( @db.nil? ) || ( ! @db ) || ( ! @db.test_connection )
Log.debug{ "БД #{ Cfg.db.database }." }
Sequel.extension :pg_array, :pg_inet, :pg_json, :pg_json_ops, :pg_array, :pg_array_ops, :pg_row, :pg_hstore, :pg_json_ops
Sequel::Model.raise_on_save_failure = false
Sequel::Model.plugin :validation_helpers
Sequel::Database.extension :pg_inet, :pg_json, :pg_array, :pg_range, :pg_row, :pg_enum
counter = Cfg.app.tmout.database_start
begin
@db = Sequel.connect Cfg.db.to_hash
rescue Sequel::DatabaseConnectionError => e
Log.error{"Шо-то с базой: #{ ( e.message.dup ).force_encoding('UTF-8') }"}
( counter -= 1 ) > 0 ? ( sleep(1); retry ) : raise
end
Sequel::Model.db = @db
@db.tables.each{ |t| @db.reset_primary_key_sequence t } @db.freeze if Cfg.env == :production
end
Kernel.const_set('Db', @db) unless defined?( ::Db )
return @db
end
|