blob: 5e02a5cb77de7bcdb9fd20bb3e0015c1c7b59cd2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
if !defined?(RUBY_ENGINE) || RUBY_ENGINE == 'ruby' || RUBY_ENGINE == 'rbx'
Object.send(:remove_const, :FFI) if defined?(::FFI)
begin
if RUBY_VERSION =~ /1\.8/
require '1.8/ffi_c'
elsif RUBY_VERSION =~ /1\.9/
require '1.9/ffi_c'
elsif RUBY_VERSION =~ /2\.0/
require '2.0/ffi_c'
elsif RUBY_VERSION =~ /2\.1/
require '2.1/ffi_c'
elsif RUBY_VERSION =~ /2\.2/
require '2.2/ffi_c'
else
require 'ffi_c'
end
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
|