/** * Make and initialize a new ruby Servlet within the ScriptingContainer. The ruby class and other * options are taken from {@code servletConfig}. */ public Servlet makeServlet(ServletConfig servletConfig) throws ServletException { final RubyConfig config = new RubyConfig(servletConfig); final Servlet servlet = newInstance(config.getServletClass(), Servlet.class); servlet.init(servletConfig); logger.info("initialized servlet: {}", servlet); return servlet; }
public static ScriptingContainer makeContainer(RubyConfig config) { // Required global setting for when JRuby fakes up Kernel.system('ruby') // calls. // Since this is global, other JRuby servlets in this servlet container // are affected... // // TODO: move to a better location in the code? remove? if (config.getJrubyHome() != null) { System.setProperty("jruby.home", config.getJrubyHome()); } final ScriptingContainer container = new ScriptingContainer(config.getScope()); container.setCompileMode(config.getCompileMode()); if (config.getJrubyHome() != null) { container.setHomeDirectory(config.getJrubyHome()); } container.setCompatVersion(config.getCompatVersion()); container.setCurrentDirectory(config.getAppRoot()); // don't propagate ENV to global JVM level container.getProvider().getRubyInstanceConfig().setUpdateNativeENVEnabled(false); logger.info( "new ScriptingContainer scope={} compileMode={} jrubyHome={} compatVersion={}, pwd={}", new Object[] { config.getScope(), config.getCompileMode(), config.getJrubyHome(), config.getCompatVersion(), config.getAppRoot() }); return container; }