Module: Qt::Bridge
- Extended by:
- FFI::Library
- Defined in:
- lib/qt/bridge.rb
Overview
Bridge helpers for registering and disposing wrapped native objects.
Class Method Summary collapse
- .gem_extension_library_candidates(ext) ⇒ Object
- .library_candidates ⇒ Object
- .load! ⇒ Object
- .load_error ⇒ Object
- .load_path_library_candidates(ext) ⇒ Object
- .loaded? ⇒ Boolean
Class Method Details
.gem_extension_library_candidates(ext) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/qt/bridge.rb', line 59 def gem_extension_library_candidates(ext) spec = Gem::Specification.find_by_name('qt') extension_dir = spec&.extension_dir return [] if extension_dir.nil? || extension_dir.empty? [ File.join(extension_dir, 'qt', "qt_ruby_bridge.#{ext}"), File.join(extension_dir, "qt_ruby_bridge.#{ext}") ] rescue Gem::LoadError [] end |
.library_candidates ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/qt/bridge.rb', line 33 def library_candidates @library_candidates ||= begin ext = RbConfig::CONFIG['DLEXT'] root = File.('../..', __dir__) load_path_candidates = load_path_library_candidates(ext) gem_extension_candidates = gem_extension_library_candidates(ext) [ File.join(root, 'build', 'qt', "qt_ruby_bridge.#{ext}"), File.join(root, 'lib', 'qt', "qt_ruby_bridge.#{ext}"), *gem_extension_candidates, *load_path_candidates, 'qt_ruby_bridge' ].uniq end end |
.load! ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/qt/bridge.rb', line 13 def load! return true if @loaded ffi_lib(library_candidates) attach_api @loaded = true rescue LoadError, FFI::NotFoundError => e @loaded = false @load_error = e false end |
.load_error ⇒ Object
29 30 31 |
# File 'lib/qt/bridge.rb', line 29 def load_error @load_error end |
.load_path_library_candidates(ext) ⇒ Object
50 51 52 53 54 55 56 57 |
# File 'lib/qt/bridge.rb', line 50 def load_path_library_candidates(ext) $LOAD_PATH.flat_map do |entry| [ File.join(entry, 'qt', "qt_ruby_bridge.#{ext}"), File.join(entry, "qt_ruby_bridge.#{ext}") ] end end |
.loaded? ⇒ Boolean
25 26 27 |
# File 'lib/qt/bridge.rb', line 25 def loaded? !!@loaded end |