Module: Jolt::Native::Loader
- Defined in:
- lib/jolt/native.rb
Class Method Summary collapse
- .candidate_directories ⇒ Object
- .installed_extension_directory ⇒ Object
- .libraries_exist?(directory) ⇒ Boolean
- .library_names ⇒ Object
- .library_paths ⇒ Object
- .platform ⇒ Object
- .project_root ⇒ Object
Class Method Details
.candidate_directories ⇒ Object
50 51 52 53 54 55 56 57 58 59 |
# File 'lib/jolt/native.rb', line 50 def candidate_directories [ ENV["JOLT_RUBY_NATIVE_DIR"], File.join(__dir__, "native", platform), installed_extension_directory, File.join(project_root, "tmp", "native", platform, "lib"), File.join(project_root, "tmp", "native", platform, "lib", "Release"), File.join(project_root, "tmp", "native", platform, "Release") ].compact end |
.installed_extension_directory ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'lib/jolt/native.rb', line 61 def installed_extension_directory return unless defined?(Gem) specification = Gem.loaded_specs["jolt-ruby"] return unless specification File.join(specification.extension_dir, "jolt", "native", platform) end |
.libraries_exist?(directory) ⇒ Boolean
89 90 91 |
# File 'lib/jolt/native.rb', line 89 def libraries_exist?(directory) library_names.all? { |name| File.file?(File.join(directory, name)) } end |
.library_names ⇒ Object
78 79 80 81 82 83 84 85 86 87 |
# File 'lib/jolt/native.rb', line 78 def library_names case RbConfig::CONFIG.fetch("host_os") when /darwin/ %w[libjoltc.dylib libjolt_ruby_helper.dylib] when /mswin|mingw/ %w[joltc.dll jolt_ruby_helper.dll] else %w[libjoltc.so libjolt_ruby_helper.so] end end |
.library_paths ⇒ Object
43 44 45 46 47 48 |
# File 'lib/jolt/native.rb', line 43 def library_paths directory = candidate_directories.find { |path| libraries_exist?(path) } return library_names unless directory library_names.map { |name| File.join(directory, name) } end |
.project_root ⇒ Object
74 75 76 |
# File 'lib/jolt/native.rb', line 74 def project_root File.("../..", __dir__) end |