summaryrefslogtreecommitdiff
path: root/lib/ffi_yajl/ffi.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ffi_yajl/ffi.rb')
-rw-r--r--lib/ffi_yajl/ffi.rb17
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/ffi_yajl/ffi.rb b/lib/ffi_yajl/ffi.rb
index 4e685a6..e291ba5 100644
--- a/lib/ffi_yajl/ffi.rb
+++ b/lib/ffi_yajl/ffi.rb
@@ -1,16 +1,23 @@
require 'rubygems'
require 'libyajl2'
-require 'ffi'
+begin
+ require 'ffi'
+rescue LoadError
+ puts "FATAL: to use the ffi extension instead of the compiled C extension, the ffi gem must be installed"
+ puts " (it is optional, so you must include it in your bundle manually)"
+ exit 1
+end
+
+require 'ffi_yajl/map_library_name'
module FFI_Yajl
extend ::FFI::Library
- libname = ::FFI.map_library_name("yajl")
- # XXX: need to replace ::FFI.map_library_name here as well
- libname = "libyajl.so" if libname == "yajl.dll"
+ extend FFI_Yajl::MapLibraryName
+
+ libname = map_library_name
libpath = File.expand_path(File.join(Libyajl2.opt_path, libname))
- libpath.gsub!(/dylib/, 'bundle')
if File.file?(libpath)
# use our vendored version of libyajl2 if we find it installed