package org.stokesdrift.container.jruby; import org.jruby.Ruby; import org.jruby.exceptions.RaiseException; import org.jruby.rack.DefaultRackApplication; public class JrubyRackApplicationImpl extends DefaultRackApplication { protected final Ruby runtime; final ApplicationObjectFactory appFactory; final RubyUtil utils; JrubyRackApplicationImpl(ApplicationObjectFactory appFactory, RubyRuntimeManager manager) { this.runtime = manager.newRuntime(); this.appFactory = appFactory; this.utils = new RubyUtil(manager.getContext()); } @Override public void init() { try { setApplication(appFactory.create(runtime)); } catch (RaiseException e) { utils.captureMessage(e); throw e; } } @Override public void destroy() { runtime.tearDown(false); } }