Module: Lda::Backends
- Defined in:
- lib/lda-ruby/backends.rb,
lib/lda-ruby/backends/base.rb,
lib/lda-ruby/backends/rust.rb,
lib/lda-ruby/backends/native.rb,
lib/lda-ruby/backends/pure_ruby.rb
Defined Under Namespace
Classes: Base, Native, PureRuby, Rust
Class Method Summary collapse
Class Method Details
.build(host:, requested: nil, random_seed: nil) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/lda-ruby/backends.rb', line 11 def build(host:, requested: nil, random_seed: nil) mode = normalize_mode(requested) case mode when :auto if Rust.available? Rust.new(random_seed: random_seed) elsif Native.available?(host) Native.new(host, random_seed: random_seed) else PureRuby.new(random_seed: random_seed) end when :rust raise LoadError, "Rust backend is unavailable for this environment" unless Rust.available? Rust.new(random_seed: random_seed) when :native raise LoadError, "Native backend is unavailable for this environment" unless Native.available?(host) Native.new(host, random_seed: random_seed) when :pure PureRuby.new(random_seed: random_seed) else raise ArgumentError, "Unknown backend mode: #{requested.inspect}" end end |