module Concurrent::Utility::NativeExtensionLoader
@!visibility private
Public Instance Methods
allow_c_extensions?()
click to toggle source
# File lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb, line 10 def allow_c_extensions? Concurrent.on_cruby? end
c_extensions_loaded?()
click to toggle source
# File lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb, line 14 def c_extensions_loaded? defined?(@c_extensions_loaded) && @c_extensions_loaded end
java_extensions_loaded?()
click to toggle source
# File lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb, line 18 def java_extensions_loaded? defined?(@java_extensions_loaded) && @java_extensions_loaded end
load_native_extensions()
click to toggle source
# File lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb, line 22 def load_native_extensions unless defined? Synchronization::AbstractObject raise 'native_extension_loader loaded before Synchronization::AbstractObject' end if Concurrent.on_cruby? && !c_extensions_loaded? ['concurrent/concurrent_ruby_ext', "concurrent/#{RUBY_VERSION[0..2]}/concurrent_ruby_ext" ].each { |p| try_load_c_extension p } end if Concurrent.on_jruby? && !java_extensions_loaded? begin require 'concurrent/concurrent_ruby.jar' set_java_extensions_loaded rescue LoadError => e raise e, "Java extensions are required for JRuby.\n" + e.message, e.backtrace end end end
Private Instance Methods
load_error_path(error)
click to toggle source
# File lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb, line 45 def load_error_path(error) if error.respond_to? :path error.path else error.message.split(' -- ').last end end
set_c_extensions_loaded()
click to toggle source
# File lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb, line 53 def set_c_extensions_loaded @c_extensions_loaded = true end
set_java_extensions_loaded()
click to toggle source
# File lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb, line 57 def set_java_extensions_loaded @java_extensions_loaded = true end
try_load_c_extension(path)
click to toggle source
# File lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb, line 61 def try_load_c_extension(path) require path set_c_extensions_loaded rescue LoadError => e if load_error_path(e) == path # move on with pure-Ruby implementations # TODO (pitr-ch 12-Jul-2018): warning on verbose? else raise e end end