package org.jruby.main;
import org.jruby.Ruby;
import org.jruby.RubyInstanceConfig;
import org.jruby.util.cli.Options;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class DripMain {
public static RubyInstanceConfig DRIP_CONFIG;
public static Ruby DRIP_RUNTIME;
public static final String JRUBY_DRIP_WARMUP_ENV = "JRUBY_DRIP_WARMUP";
public static final String JRUBY_DRIP_WARMUP_DEFAULT = "1 + 1";
public static final String JRUBY_DRIP_PREBOOT_FILE = "./dripmain.rb";
public static void main(String[] args) throws IOException {
// warmup JVM first
Ruby ruby = Ruby.newInstance();
String envWarmup = System.getenv(JRUBY_DRIP_WARMUP_ENV);
if (envWarmup != null && envWarmup.length() > 0) {
ruby.evalScriptlet(envWarmup);
} else {
ruby.evalScriptlet(JRUBY_DRIP_WARMUP_DEFAULT);
}
// preboot actual runtime
Ruby.clearGlobalRuntime();
File dripMain = new File(JRUBY_DRIP_PREBOOT_FILE);
// Disable native stdio when running under Drip (#4942)
Options.NATIVE_STDIO.force("false");
RubyInstanceConfig config = new RubyInstanceConfig();
ruby = Ruby.newInstance(config);
if (dripMain.exists()) {
FileInputStream fis = new FileInputStream(dripMain);
try {
ruby.getLoadService().load(dripMain.getAbsolutePath(), false);
} finally {
fis.close();
}
}
// use config and runtime from preboot process
DRIP_CONFIG = config;
DRIP_RUNTIME = ruby;
}
}