-
Notifications
You must be signed in to change notification settings - Fork 0
Using Drip with JRuby
#Overview drip is a command line tool that can be used to dramatically lower perceived JVM startup time. It does this by preloading an entirely new JVM process\instance in the background and allowing you to simply use the preloaded environment. This can improve startup of JRuby-based applications significantly.
#Install Drip Install drip if you haven't already (see https://github.com/ninjudd/drip)
You can check out drip directly and build it, or use Homebrew on OS X.
brew update && brew install drip#Environment Setup
jruby uses the JAVACMD environment variable (if present) as it's executable (usually which java).
drip uses the DRIP_INIT_CLASS environment variable to determine the main class to load. jruby has a native java class already setup for this purpose: orb.jruby.main.DripMain.
export JAVACMD=`which drip`
export DRIP_INIT_CLASS=org.jruby.main.DripMainOn Drip versions earlier than ninjudd/drip@820f8696187c4ac998e54b1ee4d8a2fdc281d1ed DRIP_INIT must be set.
export DRIP_INIT=""#Project Setup Put any project specific initialization code (ruby code) in CWD/dripmain.rb. This file is automatically called by the special org.jruby.main.DripMain class when intializing the standby JVM process.
Rails Example:
# rails project:
require_relative 'config/application'
# non-rails bundler controlled project
require 'bundler/setup'
Bundler.require#rvm integration If you would like to use drip automatically whenever you switch to jruby with rvm you will need to add a new hook file at $rvm_path/hooks/after_use_jruby_drip with the following content:
#!/usr/bin/env bash
if [[ "${rvm_ruby_string}" =~ "jruby" ]]
then
export JAVACMD=`which drip`
export DRIP_INIT_CLASS=org.jruby.main.DripMain
# settings from: https://github.com/jruby/jruby/wiki/Improving-startup-time
export JRUBY_OPTS="-J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -J-noverify"
fiThen you'll need to make that file executable:
chmod +x $rvm_path/hooks/after_use_jruby_dripSee also: