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