Class: AlRdbw

Inherits:
Object
  • Object
show all
Defined in:
lib/al_rdbw.rb

Overview

リレーショナルデータベースラッパー スーパクラス

Direct Known Subclasses

AlRdbwMysql, AlRdbwPostgres, AlRdbwSqlite

Constant Summary

@@rdbw_objects =

Returns Rdbwオブジェクトのハッシュ

Returns:

  • (Hash<AlRdbw>)

    Rdbwオブジェクトのハッシュ

{}
@@default_rdbw_object =

Returns デフォルトRdbwオブジェクト

Returns:

  • (Object)

    デフォルトRdbwオブジェクト

nil
@@suitable_dbms =

Returns connectメソッドが生成するオブジェクトのためのクラス

Returns:

  • (Object)

    connectメソッドが生成するオブジェクトのためのクラス

self

Instance Attribute Summary (collapse)

Class Method Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (AlRdbw) initialize(conn_info)

Note:

constractor

ユーザプログラムからは直接使わない。 オブジェクトの生成は、connect()メソッドを使って行う。



64
65
66
67
68
69
70
71
72
# File 'lib/al_rdbw.rb', line 64

def initialize( conn_info )
  # AlRdbwは、バーチャルクラス扱いなので生成をランタイムエラーにしておく。
  raise "Need connect by subclass." if self.class == AlRdbw
  raise "Connection is missing. (No argument.)"  if ! conn_info

  @conn_info = conn_info
  @handle = nil
  @flag_transaction = false
end

Instance Attribute Details

- (String) conn_info (readonly)

Returns 接続情報

Returns:

  • (String)

    接続情報



25
26
27
# File 'lib/al_rdbw.rb', line 25

def conn_info
  @conn_info
end

- (Boolean) flag_transaction (readonly)

Returns トランザクション中かを示すフラグ

Returns:

  • (Boolean)

    トランザクション中かを示すフラグ



31
32
33
# File 'lib/al_rdbw.rb', line 31

def flag_transaction
  @flag_transaction
end

- (Object) handle (readonly)

Returns データベースハンドル

Returns:

  • (Object)

    データベースハンドル



28
29
30
# File 'lib/al_rdbw.rb', line 28

def handle
  @handle
end

Class Method Details

+ (AlRdbw) connect(conn_info = nil)

Note:

DB wrapper オブジェクトを得る。

名前とは裏腹に、DBSとの接続は開始しない。 接続は、オブジェクトに対しopen_connection()メソッドで意識的に行うか、 あるいは、ヘルパーメソッドを使ったときに自動的に行われる。

Parameters:

  • conn_info (String) (defaults to: nil)

    接続情報

Returns:

  • (AlRdbw)

    DBWrapperオブジェクト



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/al_rdbw.rb', line 44

def self.connect( conn_info = nil )
  # 既に対象の接続オブジェクトがあれば、それを返す。
  obj = conn_info ? @@rdbw_objects[ conn_info.hash ] : @@default_rdbw_object
  return obj  if obj

  # オブジェクトの生成と保存
  obj = ((self == AlRdbw) ? @@suitable_dbms : self).new( conn_info )
  @@default_rdbw_object ||= obj
  @@rdbw_objects[ conn_info.hash ] = obj
  return obj
end

Instance Method Details

- (Object) close

コネクションクローズ



78
79
80
81
82
# File 'lib/al_rdbw.rb', line 78

def close()
  @handle.close() if @handle
  @handle = nil
  @flag_transaction = false
end

- (Object) get_handle

Note:

RDBSとの接続ハンドルを得る

接続がまだ行われていなければ、自動的に接続を開始する。

Returns:

  • (Object)

    handle



106
107
108
109
110
111
# File 'lib/al_rdbw.rb', line 106

def get_handle()
  if ! @handle
    open_connection()
  end
  return @handle
end

- (Object) purge

Note:

オブジェクト破棄 コネクションをクローズし、オブジェクト配列から削除を行う。



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

def purge()
  if @@default_rdbw_object == self
    @@default_rdbw_object = nil
  end
  @@rdbw_objects.delete_if { |k,v| v == self }
  close()
end

- (Boolean) transaction_active?

トランザクション中か?

Returns:

  • (Boolean)

    はい/いいえ



119
120
121
# File 'lib/al_rdbw.rb', line 119

def transaction_active?()
  return @flag_transaction
end