我正在尝试加载 gem 以从本地目录执行 ruby 代码。我不希望 ScriptingContainer(JRuby) 对象使用系统的默认 gem集。
使用 清空环境变量
container.setEnvironment(env);
一个空的地图来更改GEM_HOME和GEM_PATH但它仍然占用系统的宝石集。
如何避免这种情况?
我们在构建 Puck 时遇到了类似的问题,Puck 是一种将 JRuby 应用程序捆绑为自包含 Jar 文件的工具。为了获得一个干净的环境,不受RubyGems和Bundler设置的所有东西的污染,你真的需要付出一些努力。这是对 Puck 的拉取请求,可以解决问题:https://github.com/iconara/puck/pull/7,重要的部分都在DependencyResolver
类中,它涉及启动一个单独的ScriptingContainer
并跳过一些箍。
我希望你不需要所有这些来解决你的问题,但根据你想做什么,重置环境是非常困难的。
尝试将GEM_HOME/GEM_PATH设置为本地目录路径