Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
  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;
  }