有效地,我想知道如果我可以,純粹通過使用Ruby的C庫,追加到$ LOAD_PATH。 這樣做的理由是我有一個書面的擴展名(使用Rice,但這不是非常重要的),我希望它可以與其他幾個人在自己的目錄中自成一體。
現在,我已經有兩個工作解決方案,我很好。首先,我只是使用由Rice生成的Makefile將共享對象自動安裝到已經在$ LOAD_PATH上的標準目錄中。超級簡單沒有麻煩。另一個是我在運行之前導出$ RUBY_LIB作爲我想要的目錄,Ruby運行時就像冠軍一樣挑選出來。但我想知道的是,如果我可以只在C做到這一點 - 參考我要尋找功能,可以模擬ruby -I./somedir
現在我初始化紅寶石在C以下的方式,這正常工作與前面提到的工作解決方案,但我想要的是在運行時乾淨地添加一個目錄到Ruby的$ LOAD_PATH的方法。
ruby_sysinit(&argc, &argv);
RUBY_INIT_STACK;
ruby_init();
ruby_init_loadpath();
....
rb_load_protect(...)
rb_funcall(...)
我無法弄清楚如何與ruby_options
工作,它只是給了我一個節點,然後阻塞主線程,所以我不能做任何事情;是我用它錯了嗎?
謝謝!
我認爲這是最好的解決方案,謝謝。我希望有一個頂級的方法來做到這一點,但這完全按照需要工作。 – cleversoap
@cleversoap在內部,'$ LOAD_PATH'常量使用'rb_define_hooked_variable'函數進行註冊,該函數註冊一個getter方法。當你使用'rb_gv_get'時,你已經在使用適當的getter函數。 –