Module: Gemite::SQLite3FFI
- Defined in:
- lib/gemite/sqlite3_ffi.rb
Overview
libsqlite3 (システムに標準で入っている共有ライブラリ) を Fiddle 経由で直接呼び出す
低レベル層。sqlite3 gem のようなネイティブ拡張のビルド(コンパイラやヘッダが必要)を
一切必要とせず、gem install gemite が即座に完了することを狙う。
Defined Under Namespace
Modules: Lib Classes: Handle, LoadError
Constant Summary collapse
- SQLITE_OK =
0- SQLITE_ROW =
100- SQLITE_DONE =
101- SQLITE_TRANSIENT =
-1
- SQLITE_INTEGER =
1- SQLITE_FLOAT =
2- SQLITE_TEXT =
3- SQLITE_BLOB =
4- SQLITE_NULL =
5- CANDIDATE_LIBS =
OS ごとの共有ライブラリ名の候補。最初に見つかったものを使う。
[ "libsqlite3.so.0", "libsqlite3.so", "sqlite3.so", "libsqlite3.dylib", "sqlite3.dll" ].freeze
Class Method Summary collapse
Class Method Details
.ensure_loaded! ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/gemite/sqlite3_ffi.rb', line 38 def self.ensure_loaded! return if @loaded last_error = nil CANDIDATE_LIBS.each do |name| begin Lib.dlload(name) @loaded = name break rescue Fiddle::DLError => e last_error = e end end unless @loaded raise LoadError, "libsqlite3 が見つかりませんでした。システムに SQLite3 のランタイムライブラリ " \ "(libsqlite3-0 等) がインストールされているか確認してください。(#{last_error&.})" end define_externs! end |