diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2014-06-04 23:09:33 -0700 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2014-06-04 23:09:33 -0700 |
commit | bebfe63aaa939e63b6b0871df3186be02b028256 (patch) | |
tree | 31a51c52014a5e12c1b773562699b5a129d6a124 /lib | |
parent | 278485ef0f0435163bcc605bd1b953227ae7c870 (diff) | |
download | ffi-yajl-bebfe63aaa939e63b6b0871df3186be02b028256.tar.gz |
use fiddle instead of DL if we find it
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ffi_yajl/ext.rb | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/lib/ffi_yajl/ext.rb b/lib/ffi_yajl/ext.rb index cba294c..01ff176 100644 --- a/lib/ffi_yajl/ext.rb +++ b/lib/ffi_yajl/ext.rb @@ -2,10 +2,13 @@ require 'rubygems' require 'ffi_yajl/encoder' require 'ffi_yajl/parser' -require 'dl' require 'ffi' require 'libyajl2' - +begin + require 'fiddle' +rescue LoadError + require 'dl' +end module FFI_Yajl class Parser @@ -13,7 +16,11 @@ module FFI_Yajl libname = ::FFI.map_library_name("yajl") libpath = File.expand_path(File.join(Libyajl2.opt_path, libname)) libpath.gsub!(/dylib/, 'bundle') - ::DL.dlopen(libpath) + if defined?(Fiddle) + ::Fiddle.dlopen(libpath) + else + ::DL.dlopen(libpath) + end require 'ffi_yajl/ext/parser' include FFI_Yajl::Ext::Parser end @@ -23,7 +30,11 @@ module FFI_Yajl libname = ::FFI.map_library_name("yajl") libpath = File.expand_path(File.join(Libyajl2.opt_path, libname)) libpath.gsub!(/dylib/, 'bundle') - ::DL.dlopen(libpath) + if defined?(Fiddle) + ::Fiddle.dlopen(libpath) + else + ::DL.dlopen(libpath) + end require 'ffi_yajl/ext/encoder' include FFI_Yajl::Ext::Encoder end |