21 lines
628 B
Ruby
21 lines
628 B
Ruby
if !defined?(RUBY_ENGINE) || RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx'
|
|
Object.send(:remove_const, :FFI) if defined?(::FFI)
|
|
begin
|
|
require RUBY_VERSION.split('.')[0, 2].join('.') + '/ffi_c'
|
|
rescue Exception
|
|
require 'ffi_c'
|
|
end
|
|
|
|
require 'ffi/ffi'
|
|
|
|
elsif defined?(RUBY_ENGINE)
|
|
# Remove the ffi gem dir from the load path, then reload the internal ffi implementation
|
|
$LOAD_PATH.delete(File.dirname(__FILE__))
|
|
$LOAD_PATH.delete(File.join(File.dirname(__FILE__), 'ffi'))
|
|
unless $LOADED_FEATURES.nil?
|
|
$LOADED_FEATURES.delete(__FILE__)
|
|
$LOADED_FEATURES.delete('ffi.rb')
|
|
end
|
|
require 'ffi.rb'
|
|
end
|