summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2014-05-07 12:18:34 -0700
committerLamont Granquist <lamont@scriptkiddie.org>2014-05-07 12:18:34 -0700
commit34d1d82e2814b90246f38959384bcac3496a974f (patch)
treeb7008841149806a770c085d681980bb00f15ec6e /lib
parent2aca1db542d2b48eeb28326419f73ba36f4f7850 (diff)
downloadffi-yajl-34d1d82e2814b90246f38959384bcac3496a974f.tar.gz
dynamically link against libyajl2-gem at runtime
- avoids all the RPATH bullshit at link time
Diffstat (limited to 'lib')
-rw-r--r--lib/ffi_yajl/ext.rb15
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/ffi_yajl/ext.rb b/lib/ffi_yajl/ext.rb
index 7b6d3de..2bbfcb8 100644
--- a/lib/ffi_yajl/ext.rb
+++ b/lib/ffi_yajl/ext.rb
@@ -2,19 +2,26 @@ require 'rubygems'
require 'ffi_yajl/encoder'
require 'ffi_yajl/parser'
+require 'dl'
+require 'ffi'
+require 'libyajl2'
-#unless RUBY_VERSION.to_f >= 1.9
-# # segfaults on ruby 1.8 and this is an exceedingly low priority to fix, use ffi instead
-# raise NotImplementedError, "The C-extension is disabled on Ruby 1.8"
-#end
module FFI_Yajl
class Parser
+ # FIXME: DRY with ffi_yajl/ffi.rb
+ libname = ::FFI.map_library_name("yajl")
+ libpath = File.expand_path(File.join(Libyajl2.opt_path, libname))
+ ::DL.dlopen(libpath)
require 'ffi_yajl/ext/parser'
include FFI_Yajl::Ext::Parser
end
class Encoder
+ # FIXME: DRY with ffi_yajl/ffi.rb
+ libname = ::FFI.map_library_name("yajl")
+ libpath = File.expand_path(File.join(Libyajl2.opt_path, libname))
+ ::DL.dlopen(libpath)
require 'ffi_yajl/ext/encoder'
include FFI_Yajl::Ext::Encoder
end