From 450937566652edf25eb132f0fc5563e32ae3170c Mon Sep 17 00:00:00 2001 From: Jaroslaw Konik Date: Mon, 19 May 2025 07:00:00 +0200 Subject: [PATCH] fix --- src/runtimes/ruby.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/runtimes/ruby.rs b/src/runtimes/ruby.rs index 3d557a3..609c68b 100644 --- a/src/runtimes/ruby.rs +++ b/src/runtimes/ruby.rs @@ -1,5 +1,6 @@ use std::{ collections::HashMap, + ffi::CString, sync::{Arc, Condvar, LazyLock, Mutex}, thread::{self, JoinHandle}, }; @@ -18,7 +19,9 @@ use magnus::{ DataType, DataTypeFunctions, IntoValue, Object, RClass, RModule, Ruby, TryConvert, TypedData, }; use magnus::{method, prelude::*}; -use rb_sys::{ruby_finalize, ruby_init_stack, VALUE}; +use rb_sys::{ + ruby_exec_node, ruby_finalize, ruby_init_stack, ruby_options, ruby_process_options, VALUE, +}; use serde::Deserialize; use crate::{ @@ -72,7 +75,15 @@ impl RubyThread { unsafe { let mut variable_in_this_stack_frame: VALUE = 0; ruby_init_stack(&mut variable_in_this_stack_frame as *mut VALUE as *mut _); - rb_sys::ruby_init() + rb_sys::ruby_init(); + let opts = ["-e", ""]; + let mut argv = vec![]; + argv.extend(opts.iter().map(|s| CString::new(*s).unwrap())); + let mut argv = argv + .iter() + .map(|cs| cs.as_ptr() as *mut _) + .collect::>(); + ruby_options(argv.len() as i32, argv.as_mut_ptr()); }; while let Ok(f) = receiver.recv() { let ruby = Ruby::get().expect("Failed to get a handle to Ruby API");