...internal jruby stack elided

Hi,

I am using JRuby to run rails on the GAE for a couple of months now.
Everything has been going fine until recently. Recently I have
started to get a bunch of errors with this as the root cause:

javax.servlet.ServletContext log: Application Error

:2: IO Error (IOError) ...internal jruby stack elided... from (unknown).(unknown)(:1) javax.servlet.ServletContext log: Error: Couldn't handle error :2: IO Error (IOError) ...internal jruby stack elided... from (unknown).(unknown)(:1) Even though this is the root cause it will often lead to some random resulting error being thrown. It looks like most of the time these errors happen when the JVM is being loaded. I have seen where this was a problem with the IBM JVM, but I am pretty sure that GAE using the Sun JVM (I could be wrong here though). I first found this error using JRuby 1.3. So I upgraded to 1.4RC to see if that would fix it. But, I still am getting it. Because it is happening randomly it is really hard for me to track down what is going wrong. Has anybody had any experience like this? Or know where I should start looking to find this type of problem? Thanks, Josh

On Mon, Oct 12, 2009 at 6:29 PM, joshmoore [email protected] wrote:

from (unknown).(unknown)(:1)
Hmm, since it’s on GAE that’s a little trickier. You could put into
your code, somewhere really early in the application load sequence:

$DEBUG=true

Which may produce more information. Is the above really all you’re
getting in logs?

  • Charlie

To unsubscribe from this list, please visit:

http://xircles.codehaus.org/manage_email

I have pasted in two other exceptions that I think are just really
side affects. They all have this

javax.servlet.ServletContext log: Application Error

:2: IO Error (IOError) ...internal jruby stack elided... from (unknown).(unknown)(:1)

as a base exception and that is all there is.

I put the $DEBUG = true at the to of enviroment.rb. That is the most
beginning of execution that I know to put (my knowledge of the
internal works of Rails is limited). But it did not seem to make a
difference (no change in the log output). I can put it somewhere else
that could be executed earlier if somebody could tell me where. Also
I can set Java properties like

so if it can be set as a Java property instead I could do that.

Thanks for the help.

Josh

javax.servlet.ServletContext log: unable to create shared application
instance
org.jruby.rack.RackInitializationException: IO error –
action_controller/caching
from /base/data/home/apps/jsm277/captcha.336946495526632423/WEB-INF/
vendor/rails/actionpack/lib/action_controller/base.rb:1405:in
class_eval' from /base/data/home/apps/jsm277/captcha.336946495526632423/WEB-INF/ vendor/rails/actionpack/lib/action_controller/base.rb:1405 from /base/data/home/apps/jsm277/captcha.336946495526632423/WEB-INF/ vendor/rails/actionpack/lib/action_controller/base.rb:446:ininitialize_framework_caches’
from /base/data/home/apps/jsm277/captcha.336946495526632423/WEB-INF/
vendor/rails/railties/lib/initializer.rb:144:in process' from /base/data/home/apps/jsm277/captcha.336946495526632423/WEB-INF/ vendor/rails/railties/lib/initializer.rb:113:inrun’
from /base/data/home/apps/jsm277/captcha.336946495526632423/WEB-INF/
config/environment.rb:11
from /base/data/home/apps/jsm277/captcha.336946495526632423/WEB-INF/
config/environment.rb:32:in load' from file:/base/data/home/apps/jsm277/captcha.336946495526632423/WEB- INF/lib/jruby-rack-0.9.5.jar!/jruby/rack/rails.rb:32:inload_environment’
from file:/base/data/home/apps/jsm277/captcha.336946495526632423/WEB-
INF/lib/jruby-rack-0.9.5.jar!/jruby/rack/rails.rb:155:in new' from <script>:2 from file:/base/data/home/apps/jsm277/captcha.336946495526632423/WEB- INF/lib/jruby-rack-0.9.5.jar!/vendor/rack-1.0.0/rack/builder.rb:29:ininstance_eval’
from file:/base/data/home/apps/jsm277/captcha.336946495526632423/WEB-
INF/lib/jruby-rack-0.9.5.jar!/vendor/rack-1.0.0/rack/builder.rb:29:in
initialize' from <script>:2:innew’
from :2

at org.jruby.rack.DefaultRackApplicationFactory$4.init
(DefaultRackApplicationFactory.java:153)
at org.jruby.rack.DefaultRackApplicationFactory.getApplication
(DefaultRackApplicationFactory.java:50)
at org.jruby.rack.SharedRackApplicationFactory.init
(SharedRackApplicationFactory.java:26)
at org.jruby.rack.RackServletContextListener.contextInitialized
(RackServletContextListener.java:39)
at org.mortbay.jetty.handler.ContextHandler.startContext
(ContextHandler.java:530)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:135)
at org.mortbay.jetty.webapp.WebAppContext.startContext
(WebAppContext.java:1218)
at org.mortbay.jetty.handler.ContextHandler.doStart
(ContextHandler.java:500)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:
448)
at org.mortbay.component.AbstractLifeCycle.start
(AbstractLifeCycle.java:40)
at
com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler
(AppVersionHandlerMap.java:191)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler
(AppVersionHandlerMap.java:168)
at
com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest
(JettyServletEngineAdapter.java:127)
at com.google.apphosting.runtime.JavaRuntime.handleRequest
(JavaRuntime.java:239)
at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:5135)
at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:5133)
at com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest
(BlockingApplicationHandler.java:24)
at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:
363)
at com.google.net.rpc.impl.Server$2.run(Server.java:814)
at com.google.tracing.LocalTraceSpanRunnable.run
(LocalTraceSpanRunnable.java:56)
at com.google.tracing.LocalTraceSpanBuilder.internalContinueSpan
(LocalTraceSpanBuilder.java:516)
at com.google.net.rpc.impl.Server.startRpc(Server.java:769)
at com.google.net.rpc.impl.Server.processRequest(Server.java:351)
at com.google.net.rpc.impl.ServerConnection.messageReceived
(ServerConnection.java:437)
at com.google.net.rpc.impl.RpcConnection.parseMessages
(RpcConnection.java:319)
at com.google.net.rpc.impl.RpcConnection.dataReceived
(RpcConnection.java:290)
at
com.google.net.async.Connection.handleReadEvent(Connection.java:436)
at com.google.net.async.EventDispatcher.processNetworkEvents
(EventDispatcher.java:762)
at com.google.net.async.EventDispatcher.internalLoop
(EventDispatcher.java:207)
at com.google.net.async.EventDispatcher.loop(EventDispatcher.java:101)
at com.google.net.rpc.RpcService.runUntilServerShutdown
(RpcService.java:251)
at com.google.apphosting.runtime.JavaRuntime$RpcRunnable.run
(JavaRuntime.java:396)
at java.lang.Thread.run(Unknown Source)
Caused by: org.jruby.exceptions.RaiseException: IO error –
action_controller/caching
at (unknown).new(/base/data/home/apps/jsm277/captcha.
336946495526632423/WEB-INF/vendor/rails/actionpack/lib/
action_controller/base.rb:1406)
at (unknown).(unknown)(/base/data/home/apps/jsm277/captcha.
336946495526632423/WEB-INF/vendor/rails/actionpack/lib/
action_controller/base.rb:1405)
at Module.class_eval(/base/data/home/apps/jsm277/captcha.
336946495526632423/WEB-INF/vendor/rails/actionpack/lib/
action_controller/base.rb:1405)
at Module.class_eval(/base/data/home/apps/jsm277/captcha.
336946495526632423/WEB-INF/vendor/rails/actionpack/lib/
action_controller/base.rb:1405)
at (unknown).(unknown)(/base/data/home/apps/jsm277/captcha.
336946495526632423/WEB-INF/vendor/rails/actionpack/lib/
action_controller/base.rb:446)
at (unknown).(unknown)(/base/data/home/apps/jsm277/captcha.
336946495526632423/WEB-INF/vendor/rails/actionpack/lib/
action_controller/base.rb:446)
at Rails::Initializer.initialize_framework_caches(/base/data/home/
apps/jsm277/captcha.336946495526632423/WEB-INF/vendor/rails/railties/
lib/initializer.rb:144)
at Rails::Initializer.process(/base/data/home/apps/jsm277/captcha.
336946495526632423/WEB-INF/vendor/rails/railties/lib/initializer.rb:113)
at #Class:01x12a09d5.run(/base/data/home/apps/jsm277/captcha.
336946495526632423/WEB-INF/config/environment.rb:11)
at (unknown).(unknown)(/base/data/home/apps/jsm277/captcha.
336946495526632423/WEB-INF/config/environment.rb:32)
at Kernel.load(file:/base/data/home/apps/jsm277/captcha.
336946495526632423/WEB-INF/lib/jruby-rack-0.9.5.jar!/jruby/rack/
rails.rb:32)
at JRuby::Rack::RailsBooter.load_environment(file:/base/data/home/
apps/jsm277/captcha.336946495526632423/WEB-INF/lib/jruby-
rack-0.9.5.jar!/jruby/rack/rails.rb:155)
at #Class:01x168af51.new(:2)
at (unknown).(unknown)(file:/base/data/home/apps/jsm277/captcha.
336946495526632423/WEB-INF/lib/jruby-rack-0.9.5.jar!/vendor/rack-1.0.0/
rack/builder.rb:29)
at Kernel.instance_eval(file:/base/data/home/apps/jsm277/captcha.
336946495526632423/WEB-INF/lib/jruby-rack-0.9.5.jar!/vendor/rack-1.0.0/
rack/builder.rb:29)
at Kernel.instance_eval(file:/base/data/home/apps/jsm277/captcha.
336946495526632423/WEB-INF/lib/jruby-rack-0.9.5.jar!/vendor/rack-1.0.0/
rack/builder.rb:29)
at Rack::Builder.initialize(:2)
at (unknown).new(:2)
at (unknown).(unknown)(:1)
Caused by: com.google.apphosting.api.DeadlineExceededException: This
request (7fa6d1a5c3e9dbc3) started at 2009/10/13 11:01:06.645 UTC and
was still executing at 2009/10/13 11:01:35.145 UTC.
at org.jruby.ast.DStrNode.interpret(DStrNode.java:68)
at
org.jruby.ast.FCallThreeArgNode.interpret(FCallThreeArgNode.java:40)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.runtime.InterpretedBlock.evalBlockBody
(InterpretedBlock.java:317)
at org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:268)
at org.jruby.runtime.Block.yield(Block.java:194)
at org.jruby.RubyArray.eachCommon(RubyArray.java:1635)
at org.jruby.RubyArray.each(RubyArray.java:1642)
at org.jruby.RubyArray$i_method_0_0$RUBYFRAMEDINVOKER$each.call(org/
jruby/RubyArray$i_method_0_0$RUBYFRAMEDINVOKER$each.gen)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall
(CachingCallSite.java:300)
at org.jruby.runtime.callsite.CachingCallSite.callBlock
(CachingCallSite.java:118)
at org.jruby.runtime.callsite.CachingCallSite.call
(CachingCallSite.java:123)
at org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:
64)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.evaluator.ASTInterpreter.evalClassDefinitionBody
(ASTInterpret

javax.servlet.ServletContext log: unable to create shared application
instance
com.google.apphosting.api.DeadlineExceededException: This request
(97ba02e7663fd4c7) started at 2009/10/13 11:23:10.230 UTC and was
still executing at 2009/10/13 11:23:38.731 UTC.
at org.jruby.lexer.yacc.HeredocTerm.parseString(HeredocTerm.java:69)
at org.jruby.lexer.yacc.RubyYaccLexer.yylex(RubyYaccLexer.java:818)
at org.jruby.lexer.yacc.RubyYaccLexer.advance(RubyYaccLexer.java:294)
at org.jruby.parser.DefaultRubyParser.yyparse(DefaultRubyParser.java:
1409)
at org.jruby.parser.DefaultRubyParser.yyparse(DefaultRubyParser.java:
1360)
at org.jruby.parser.DefaultRubyParser.parse(DefaultRubyParser.java:
3891)
at org.jruby.parser.Parser.parse(Parser.java:106)
at org.jruby.Ruby.parseFile(Ruby.java:2133)
at org.jruby.Ruby.parseFile(Ruby.java:2137)
at org.jruby.Ruby.loadFile(Ruby.java:2426)
at org.jruby.runtime.load.ExternalScript.load(ExternalScript.java:64)
at org.jruby.runtime.load.LoadService.tryLoadingLibraryOrScript
(LoadService.java:631)
at org.jruby.runtime.load.LoadService.smartLoad(LoadService.java:309)
at org.jruby.runtime.load.LoadService.require(LoadService.java:320)
at org.jruby.RubyKernel$6.load(RubyKernel.java:206)
at org.jruby.runtime.load.LoadService.autoload(LoadService.java:371)
at org.jruby.RubyModule.resolveUndefConstant(RubyModule.java:2686)
at org.jruby.RubyModule.fastGetConstantFromNoConstMissing
(RubyModule.java:2658)
at org.jruby.ast.Colon2ConstNode.reCache(Colon2ConstNode.java:69)
at org.jruby.ast.Colon2ConstNode.getValue(Colon2ConstNode.java:56)
at org.jruby.ast.Colon2ConstNode.interpret(Colon2ConstNode.java:35)
at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.RescueNode.executeBody(RescueNode.java:225)
at org.jruby.ast.RescueNode.interpretWithJavaExceptions
(RescueNode.java:147)
at org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.IfNode.interpret(IfNode.java:119)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.internal.runtime.methods.InterpretedMethod.call
(InterpretedMethod.java:136)
at org.jruby.internal.runtime.methods.DefaultMethod.call
(DefaultMethod.java:153)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall
(CachingCallSite.java:290)
at org.jruby.runtime.callsite.CachingCallSite.call
(CachingCallSite.java:109)
at org.jruby.ast.VCallNode.interpret(VCallNode.java:85)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.internal.runtime.methods.InterpretedMethod.call
(InterpretedMethod.java:155)
at org.jruby.internal.runtime.methods.DefaultMethod.call
(DefaultMethod.java:161)
at org.jruby.RubyClass.finvoke(RubyClass.java:432)
at org.jruby.RubyObject.send(RubyObject.java:1436)
at org.jruby.RubyObject$i_method_multi$RUBYINVOKER$send.call(org/
jruby/RubyObject$i_method_multi$RUBYINVOKER$send.gen)
at org.jruby.internal.runtime.methods.JavaMethod
$JavaMethodZeroOrOneOrNBlock.call(JavaMethod.java:259)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall
(CachingCallSite.java:310)
at org.jruby.runtime.callsite.CachingCallSite.call
(CachingCallSite.java:149)
at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.internal.runtime.methods.InterpretedMethod.call
(InterpretedMethod.java:155)
at org.jruby.internal.runtime.methods.DefaultMethod.call
(DefaultMethod.java:161)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall
(CachingCallSite.java:300)
at org.jruby.runtime.callsite.CachingCallSite.callBlock
(CachingCallSite.java:118)
at org.jruby.runtime.callsite.CachingCallSite.call
(CachingCallSite.java:123)
at org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:
64)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.RootNode.interpret(RootNode.java:129)
at org.jruby.Ruby.loadFile(Ruby.java:2426)
at org.jruby.runtime.load.ExternalScript.load(ExternalScript.java:64)
at org.jruby.runtime.load.LoadService.load(LoadService.java:250)
at org.jruby.RubyKernel.load(RubyKernel.java:932)
at org.jruby.RubyKernel$s_method_0_1$RUBYFRAMEDINVOKER$load.call(org/
jruby/RubyKernel$s_method_0_1$RUBYFRAMEDINVOKER$load.gen)
at org.jruby.internal.runtime.methods.DynamicMethod.call
(DynamicMethod.java:180)
at org.jruby.internal.runtime.methods.DynamicMethod.call
(DynamicMethod.java:176)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall
(CachingCallSite.java:310)
at org.jruby.runtime.callsite.CachingCallSite.call
(CachingCallSite.java:149)
at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.internal.runtime.methods.InterpretedMethod.call
(InterpretedMethod.java:136)
at org.jruby.internal.runtime.methods.DefaultMethod.call
(DefaultMethod.java:153)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall
(CachingCallSite.java:290)
at org.jruby.runtime.callsite.CachingCallSite.call
(CachingCallSite.java:109)
at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:61)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.internal.runtime.methods.InterpretedMethod.call
(InterpretedMethod.java:136)
at org.jruby.internal.runtime.methods.DefaultMethod.call
(DefaultMethod.java:153)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall
(CachingCallSite.java:290)
at org.jruby.runtime.callsite.CachingCallSite.call
(CachingCallSite.java:109)
at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:61)
at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.runtime.InterpretedBlock.evalBlockBody
(InterpretedBlock.java:317)
at org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:305)
at org.jruby.runtime.Block.yield(Block.java:199)
at org.jruby.RubyObject.yieldUnder(RubyObject.java:508)
at org.jruby.RubyObject.specificEval(RubyObject.java:330)
at org.jruby.RubyObject.instance_eval(RubyObject.java:1284)
at org.jruby.RubyObject$i_method_multi$RUBYFRAMEDINVOKER
$instance_eval.call(org/jruby/RubyObject$i_method_multi
$RUBYFRAMEDINVOKER$instance_eval.gen)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall
(CachingCallSite.java:300)
at org.jruby.runtime.callsite.CachingCallSite.callBlock
(CachingCallSite.java:118)
at org.jruby.runtime.callsite.CachingCallSite.call
(CachingCallSite.java:123)
at org.jruby.ast.FCallNoArgBlockPassNode.interpret
(FCallNoArgBlockPassNode.java:27)
at org.jruby.ast.IfNode.interpret(IfNode.java:117)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.internal.runtime.methods.InterpretedMethod.call
(InterpretedMethod.java:155)
at org.jruby.internal.runtime.methods.DefaultMethod.call
(DefaultMethod.java:161)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall
(CachingCallSite.java:300)
at org.jruby.runtime.callsite.CachingCallSite.callBlock
(CachingCallSite.java:118)
at org.jruby.runtime.callsite.CachingCallSite.call
(CachingCallSite.java:123)
at org.jruby.RubyClass$SpecificArityNew.call(RubyClass.java:698)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall
(CachingCallSite.java:300)
at org.jruby.runtime.callsite.CachingCallSite.callBlock
(CachingCallSite.java:118)
at org.jruby.runtime.callsite.CachingCallSite.call
(CachingCallSite.java:123)
at org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:
64

On Tue, Oct 13, 2009 at 5:58 AM, joshmoore [email protected] wrote:

Caused by: com.google.apphosting.api.DeadlineExceededException: This request
(7fa6d1a5c3e9dbc3) started at 2009/10/13 11:01:06.645 UTC and was still
executing at 2009/10/13 11:01:35.145 UTC.

Well I have some bad news…this looks like the GAE 30-second request
timeout in action. Rails apps on GAE often take more than 30 seconds
to boot, due to various reasons. When that happens, GAE kills the
request early, making the now-partially-initialized runtime useless
(though it doesn’t get saved into the application pool anyway). So if
you’re never able to do that first boot, you’re never able to serve
any requests.

The GAE guys will have suggestions for how to reduce this, like
avoiding rubygems. Perhaps they or someone else who has deployed Rails
apps to GAE can chime in here?

  • Charlie

To unsubscribe from this list, please visit:

http://xircles.codehaus.org/manage_email

Hi, I just went through the log files more. I am getting more output
from the $DEBUG=true, but it is all after the …internal jruby stack
elided… so it must be working. But, maybe it is not being loaded
soon enough to help with the the root cause.

Josh

Begin forwarded message:

Hi Charlie,

I saw the DeadlineExceededException. But, I thought it would was a
result of the …internal jruby stack elided… But, if I understand
correctly from your email. You think that the
DeadlineExceededException is actually the root cause? Thanks for all
of your help.

Josh

On Oct 13, 2009, at 8:56 PM, Charles Oliver N. wrote:

to boot, due to various reasons. When that happens, GAE kills the


To unsubscribe from this list, please visit:

http://xircles.codehaus.org/manage_email


To unsubscribe from this list, please visit:

http://xircles.codehaus.org/manage_email

On Tue, Oct 13, 2009 at 6:37 PM, joshmoore [email protected] wrote:

I saw the DeadlineExceededException. Â But, I thought it would was a result
of the …internal jruby stack elided… Â But, if I understand correctly
from your email. Â You think that the DeadlineExceededException is actually
the root cause? Â Thanks for all of your help.

Yes, I’m almost sure it is. There are improvements coming in GAE,
JRuby, Rails and RubyGems that should help improve startup on GAE, so
hopefully it will be able to init a Rails app in under the 30s request
limit. It probably won’t be fast for that first request for some
time, but at least that will let it run.

Hopefully Woodie can jump in here…I’ll try to tap him on it.

  • Charlie

To unsubscribe from this list, please visit:

http://xircles.codehaus.org/manage_email

OK, Thanks so much for your help! In the mean time I will see if I
can slim the time down on my end.

Thanks,

Josh

On Oct 15, 2009, at 1:37 PM, Charles Oliver N. wrote:

Yes, I’m almost sure it is. There are improvements coming in GAE,
To unsubscribe from this list, please visit:

http://xircles.codehaus.org/manage_email


To unsubscribe from this list, please visit:

http://xircles.codehaus.org/manage_email

You need to get some version of Rails to run without rubygems,
and everything packed in a jar file (lots of files is just as bad)

  1. start with 2.3.3 and use bundler to vendor everything (links below)
  2. jar up the vendor dir as vendor.jar and drop it in WEB-INF/lib
  3. remove all the files in the vendor dir (you must do this, sorry)
  4. remove WEB-INF/lib/appengine-jruby-rubygems-0.0.4.jar
  5. run “dev_appserver.rb .” at get ready for some stack traces
  6. hack up the files in config dir until it works

OK, so step 6 is horrible, but it may figure it out,
and yes, step 4 removed rubygems completely.

Rails 2.3.3 instructions:
http://docs.google.com/View?id=d656rh6_36f7j9qzc3

Bundler instructions:
http://litanyagainstfear.com/blog/2009/10/14/gem-bundler-is-the-future/

HI John,

Thanks for the ideas! I am going to start working on them over the
weekend.

Thanks,

Josh