summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2014-06-04 23:09:33 -0700
committerLamont Granquist <lamont@scriptkiddie.org>2014-06-04 23:09:33 -0700
commitbebfe63aaa939e63b6b0871df3186be02b028256 (patch)
tree31a51c52014a5e12c1b773562699b5a129d6a124 /lib
parent278485ef0f0435163bcc605bd1b953227ae7c870 (diff)
downloadffi-yajl-bebfe63aaa939e63b6b0871df3186be02b028256.tar.gz
use fiddle instead of DL if we find it
Diffstat (limited to 'lib')
-rw-r--r--lib/ffi_yajl/ext.rb19
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