module GeoIP::FFIGeoIP

Constants

FFI_LAYOUT

Public Class Methods

find_lib(lib) click to toggle source
# File lib/ffi-geoip.rb, line 51
def self.find_lib(lib)
  if ENV['GEOIP_LIBRARY_PATH'] && File.file?(ENV['GEOIP_LIBRARY_PATH'])
    ENV['GEOIP_LIBRARY_PATH']
  else
    Dir.glob(search_paths.map { |path|
      File.expand_path(File.join(path, "#{lib}.#{FFI::Platform::LIBSUFFIX}"))
    }).first
  end
end
geoip_library_path() click to toggle source
# File lib/ffi-geoip.rb, line 61
def self.geoip_library_path
  @geoip_library_path ||= begin
    # On MingW the libraries have version numbers
    find_lib('{lib,}GeoIP{,-?}')
  end
end
search_paths() click to toggle source
# File lib/ffi-geoip.rb, line 38
def self.search_paths
  @search_paths ||= begin
    if ENV['GEOIP_LIBRARY_PATH']
      [ ENV['GEOIP_LIBRARY_PATH'] ]
    elsif FFI::Platform::IS_WINDOWS
      ENV['PATH'].split(File::PATH_SEPARATOR)
    else
      [ '/usr/local/{lib64,lib}', '/opt/local/{lib64,lib}', '/usr/{lib64,lib}' ]
      [ '/usr/local/{lib64,lib}', '/opt/local/{lib64,lib}', '/usr/{lib64,lib}', '/usr/lib/{x86_64,i386}-linux-gnu' ]
    end
  end
end