Sha256: 944e856499a92efac617e5fb54337ab3a2aff606a4fcce7a3fbbb6ae7a612f63
Contents?: true
Size: 1.43 KB
Versions: 3
Compression:
Stored size: 1.43 KB
Contents
if RUBY_PLATFORM =~ /darwin/i || RbConfig::CONFIG['target_os'] == 'darwin' raise RuntimeError, "Sunscraper/embed does not work on OS X. Use Sunscraper/standalone." end require 'ffi' require 'rbconfig' # @private module Sunscraper module Library extend FFI::Library if Gem.win_platform? extension = 'dll' else extension = 'so' end ffi_lib File.join(Gem.loaded_specs['sunscraper'].full_gem_path, 'ext', 'embed', "libsunscraper.#{extension}") attach_function 'create', :sunscraper_create, [], :pointer attach_function 'load_html', :sunscraper_load_html, [:pointer, :string], :void attach_function 'load_url', :sunscraper_load_url, [:pointer, :string], :void attach_function 'fetch', :sunscraper_fetch, [:pointer], :string attach_function 'discard', :sunscraper_discard, [:pointer], :void if RUBY_ENGINE == 'ruby' # MRI uses ffi gem and has GVL. Hence, it needs a rb_thread_blocking_region call. attach_function 'wait', :sunscraper_wait, [:pointer, :uint], :void, :blocking => true else # Rubinius does not have GVL neither it has options in attach_function. # Same for JRuby. attach_function 'wait', :sunscraper_wait, [:pointer, :uint], :void end attach_function 'finalize', :sunscraper_finalize, [], :void at_exit { finalize } end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
sunscraper-1.1.0.beta3 | lib/sunscraper/library.rb |
sunscraper-1.1.0.beta2 | lib/sunscraper/library.rb |
sunscraper-1.1.0.beta1 | lib/sunscraper/library.rb |