module FFI_Yajl::MapLibraryName

def dlopen_yajl_library

Other tags:
    Api: - private
def dlopen_yajl_library
  found = false
  ( expanded_library_names + library_names ).each do |libname|
    begin
      dlopen(libname)
      found = true
      break
    rescue ArgumentError
    end
  end
  raise "cannot find yajl library for platform" unless found
end

def expanded_library_names

Returns:
  • (Array) - Array of full paths to libyajl2 gem libraries

Other tags:
    Api: - private
def expanded_library_names
  library_names.map do |libname|
    pathname = File.expand_path(File.join(Libyajl2.opt_path, libname))
    pathname if File.file?(pathname)
  end.compact
end

def ffi_open_yajl_library

Other tags:
    Api: - private
def ffi_open_yajl_library
  found = false
  expanded_library_names.each do |libname|
    begin
      ffi_lib libname
      found = true
    rescue LoadError
    end
  end
  ffi_lib "yajl" unless found
end

def host_os

Returns:
  • (Array) - lower case ruby host_os string

Other tags:
    Api: - private
def host_os
  RbConfig::CONFIG["host_os"].downcase
end

def library_names

Returns:
  • (Array) - Array of yajl library names for platform

Other tags:
    Api: - private
def library_names
  case host_os
  when /mingw|mswin/
    [ "libyajl.so", "yajl.dll" ]
  when /cygwin/
    [ "libyajl.so", "cygyajl.dll" ]
  when /darwin/
    [ "libyajl.bundle", "libyajl.dylib" ]
  else
    [ "libyajl.so" ]
  end
end