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