lib/appengine-tools/boot.rb in appengine-tools-0.0.2 vs lib/appengine-tools/boot.rb in appengine-tools-0.0.3

- old
+ new

@@ -18,23 +18,34 @@ module AppEngine module Development class << self - def boot_jruby(root=nil) + def boot_jruby(root=nil, options={}) unless defined?(JRUBY_VERSION) require 'rubygems' require 'appengine-jruby-jars' jars = [ AppEngine::JRubyJars.jruby_jar, AppEngine::JRubyJars.rubygems_jar, AppEngine::SDK::TOOLS_JAR, ] + args = options[:args] || ARGV + should_exec = options[:exec] + should_exec ||= should_exec.nil? + ENV['GEM_HOME'] = Gem.dir - exec_jruby(root, jars, [$0] + ARGV) + ENV['GEM_PATH'] = Gem.path.compact.join(File::SEPARATOR) + appcfg = [File.expand_path(File.join(File.dirname($0), + 'appcfg.rb'))] + if should_exec + exec_jruby(root, jars, appcfg + args) + else + run_jruby(root, jars, appcfg + args) + end end end def boot_app(root, args) root = File.expand_path(root) @@ -46,18 +57,30 @@ ENV['APPLICATION_ROOT'] = root ENV.delete 'GEM_HOME' exec_jruby(root, jars, jruby_args) end - def exec_jruby(root, jars, args) + def build_command(root, jars, args) app_jars = root ? Dir.glob("#{root}/WEB-INF/lib/*.jar") : [] classpath = (app_jars + jars).join(File::PATH_SEPARATOR) utf = "-Dfile.encoding=UTF-8" - java_command = %W(java #{utf} -cp #{classpath} org.jruby.Main) + args + command = %W(java #{utf} -cp #{classpath} org.jruby.Main) + args if ENV['VERBOSE'] - puts java_command.map {|a| a.inspect}.join(' ') + puts command.map {|a| a.inspect}.join(' ') end + command + end + + def exec_jruby(root, jars, args) + java_command = build_command(root, jars, args) exec *java_command + end + + def run_jruby(root, jars, args) + java_command = build_command(root, jars, args) + if !system(*java_command) + puts 'Error executing jruby' + end end end end end \ No newline at end of file