Module: Ignis::Shared::FFILoader

Defined in:
lib/nnw/shared/ffi_loader.rb

Constant Summary collapse

PROJECT_ROOT =

Returns the project root directory.

Returns:

  • (String)

    the project root directory

File.expand_path(File.join(__dir__, '..', '..', '..')).freeze
VENDOR_FFI_PATH =

Returns vendored FFI gem path.

Returns:

  • (String)

    vendored FFI gem path

File.join(PROJECT_ROOT, 'vendor', 'ffi', 'gems').freeze

Class Method Summary collapse

Class Method Details

.load!void

This method returns an undefined value.

Load the FFI gem, preferring vendored copy if available.

Raises:

  • (LoadError)

    if FFI cannot be loaded from any source



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/nnw/shared/ffi_loader.rb', line 30

def load!
  return if @loaded

  vendored_path = detect_vendored_ffi
  if vendored_path
    $LOAD_PATH.unshift(vendored_path) unless $LOAD_PATH.include?(vendored_path)
  end

  require 'ffi'
  @loaded = true
end

.loaded?Boolean

Returns whether FFI has been loaded.

Returns:

  • (Boolean)

    whether FFI has been loaded



43
44
45
# File 'lib/nnw/shared/ffi_loader.rb', line 43

def loaded?
  @loaded
end