summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2014-07-20 10:22:45 -0700
committerLamont Granquist <lamont@scriptkiddie.org>2014-07-20 10:22:45 -0700
commit5f6bc8cd60e042ca195816bf59109c71feb15d7b (patch)
tree0e8a6766e9c29329215aac1d2340c10a47f51437
parent3d63d763184980f2423f11070c8b1b4001c2a495 (diff)
downloadffi-yajl-5f6bc8cd60e042ca195816bf59109c71feb15d7b.tar.gz
WIP: fiddle dlopen for rbx
-rw-r--r--lib/ffi_yajl/ext.rb25
1 files changed, 12 insertions, 13 deletions
diff --git a/lib/ffi_yajl/ext.rb b/lib/ffi_yajl/ext.rb
index 504cbe1..1c7486d 100644
--- a/lib/ffi_yajl/ext.rb
+++ b/lib/ffi_yajl/ext.rb
@@ -1,13 +1,8 @@
require 'rubygems'
-
require 'ffi_yajl/encoder'
require 'ffi_yajl/parser'
require 'ffi'
require 'libyajl2'
-begin
- require 'fiddle'
-rescue LoadError
-end
module FFI_Yajl
# FIXME: DRY with ffi_yajl/ffi.rb
@@ -15,16 +10,20 @@ module FFI_Yajl
libpath = File.expand_path(File.join(Libyajl2.opt_path, libname))
libpath.gsub!(/dylib/, 'bundle')
libpath = ::FFI.map_library_name("yajl") unless File.exist?(libpath)
- if defined?(Fiddle) && Fiddle.respond_to?(:dlopen)
+
+ begin
+ # deliberately delayed require
+ require 'fiddle'
::Fiddle.dlopen(libpath)
- else
- # deliberately convoluted delayed require here to avoid deprecation
- # warning from requiring dl
- require 'dl'
- if defined?(DL) && DL.respond_to?(:dlopen)
+ rescue LoadError
+ begin
+ # deliberately delayed require
+ require 'dl'
::DL.dlopen(libpath)
- else
- raise "cannot find dlopen in either DL or Fiddle, cannot proceed"
+ rescue LoadError
+ # deliberately delayed require
+ require 'ffi_yajl/dlopen'
+ FFI_Yajl::Dlopen.dlopen(libpath)
end
end