RoR Deployment issue - suddenly requiring rack > 1.0

Hi,

I have an app I’m trying to re-deploy on my prod server. I froze rails
when
I started @ 2.3.4. I was using jruby 1.3, and have upgraded to 1.4
during
this headache - in an attempt to fix the issues - but no luck.

The problem: I ran ‘warble’ and put my war into tomcat on my server.
It
won’t load, however, complaining that it needs rack >= 1.0.0. I’m not
sure
why this suddenly happened - a deployment of the same app worked a month
ago
in the same manner.

To try and resolve it, I put a require statement in my warble.config to
include rack 1.0.1. This allowed it to deploy and start, but certain
random-seeming things cause it to crash with errors internal to
rails/rack.
(like 3 into 2 method arguments and such).

Any ideas what’s wrong?

Thanks,
M@

On Wed, Nov 18, 2009 at 4:06 AM, M@ Hunter [email protected]
wrote:

The problem: I ran ‘warble’ and put my war into tomcat on my server. It
won’t load, however, complaining that it needs rack >= 1.0.0. I’m not sure
why this suddenly happened - a deployment of the same app worked a month ago
in the same manner.

But presumably since you’re “redeploying”, you’ve made changes, eh? :slight_smile:

New gems installed/old ones updated? Or just code changes?

To try and resolve it, I put a require statement in my warble.config to
include rack 1.0.1. This allowed it to deploy and start, but certain
random-seeming things cause it to crash with errors internal to rails/rack.
(like 3 into 2 method arguments and such).

Crystal ball is in the shop – a stack trace would be helpful…


Hassan S. ------------------------ [email protected]
twitter: @hassan


To unsubscribe from this list, please visit:

http://xircles.codehaus.org/manage_email

On Wed, Nov 18, 2009 at 6:53 PM, M@ Hunter [email protected]
wrote:

ArgumentError (wrong # of arguments(3 for 2)):
app/controllers/user_controller.rb:55:in register' file:lib/jruby-rack-0.9.5.jar!/rack/adapter/rails.rb:35:in serve_rails’

Get jruby-rack-0.9.6.

If that doesn’t fix it, take two beers and – no, no, kidding, post the
next stacktrace :slight_smile:


Hassan S. ------------------------ [email protected]
twitter: @hassan


To unsubscribe from this list, please visit:

http://xircles.codehaus.org/manage_email

But presumably since you’re “redeploying”, you’ve made changes, eh? :slight_smile:

New gems installed/old ones updated? Or just code changes?

Yes, true - sorry I should have been more clear there. There’s about a
month’s worth of dev that’s done on. I don’t think there are any new
gems
since last deploy. It’s not really using all that many - your typical
jdbcmysql stuff, openssl, and chronic. There has naturally been a lot
code
written.

To try and resolve it, I put a require statement in my warble.config to
include rack 1.0.1. This allowed it to deploy and start, but certain
random-seeming things cause it to crash with errors internal to
rails/rack.
(like 3 into 2 method arguments and such).

Crystal ball is in the shop – a stack trace would be helpful…

True true - I was just hoping that the error was something common and
obvious and that I’d receive a plethora of replies like ‘wow, what a
noob -
you forgot x’ - which would’ve made me happy as I could then simply do
x.
Here’s what I have:

------ Stack trace from first deploy - without changing warbler’s config
to
require rack 1.0.1 -----

Nov 18, 2009 12:09:39 AM org.apache.catalina.core.ApplicationContext log
SEVERE: unable to create shared application instance
org.jruby.rack.RackInitializationException: Could not find RubyGem rack
(~>
1.0.0)

    from

file:/home/thecaptain/apps/apache-tomcat-6.0.20/webapps/ROOT/WEB-INF/lib/jruby-rack-0.9.5.jar!/jruby/rack/rails.rb:49
:in require_frameworks_with_servlet_env' from /home/thecaptain/apps/tomcat/webapps/ROOT/WEB-INF/config/../vendor/rails/railties/lib/initializer.rb:134:inprocess’
from
/home/thecaptain/apps/tomcat/webapps/ROOT/WEB-INF/config/…/vendor/rails/railties/lib/initializer.rb:113:in
run' from /home/thecaptain/apps/tomcat/webapps/ROOT/WEB-INF/config/environment.rb:9 from /home/thecaptain/apps/tomcat/webapps/ROOT/WEB-INF/config/environment.rb:32:inload’
from
file:/home/thecaptain/apps/apache-tomcat-6.0.20/webapps/ROOT/WEB-INF/lib/jruby-rack-0.9.5.jar!/jruby/rack/rails.rb:32
:in load_environment' from file:/home/thecaptain/apps/apache-tomcat-6.0.20/webapps/ROOT/WEB-INF/lib/jruby-rack-0.9.5.jar!/jruby/rack/rails.rb:15 5:innew’
from :2
from
file:/home/thecaptain/apps/apache-tomcat-6.0.20/webapps/ROOT/WEB-INF/lib/jruby-rack-0.9.5.jar!/vendor/rack-1.0.0/rack
/builder.rb:29:in instance_eval' from file:/home/thecaptain/apps/apache-tomcat-6.0.20/webapps/ROOT/WEB-INF/lib/jruby-rack-0.9.5.jar!/vendor/rack-1.0.0/rack /builder.rb:29:ininitialize’
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.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
at
org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:850)
at
org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:724)
at
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:493)
at
org.apache.catalina.startup.HostConfig.start(HostConfig.java:1206)
at
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:314)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at
org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at
org.apache.catalina.core.StandardService.start(StandardService.java:516)
at
org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at
org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: org.jruby.exceptions.RaiseException: Could not find RubyGem
rack
(~> 1.0.0)

    at

Kernel.raise(/home/thecaptain/apps/tomcat/webapps/ROOT/WEB-INF/config/…/vendor/rails/railties/lib/initializer.rb:271)
at
Rails::Initializer.require_frameworks(file:/home/thecaptain/apps/apache-tomcat-6.0.20/webapps/ROOT/WEB-INF/lib/jruby-rack-0.9.5.jar!/jruby/rack/rails.rb:49)
at
Rails::Initializer.require_frameworks_with_servlet_env(/home/thecaptain/apps/tomcat/webapps/ROOT/WEB-INF/config/…/vendor/rails/railties/lib/initializer.rb:134)
at
Rails::Initializer.process(/home/thecaptain/apps/tomcat/webapps/ROOT/WEB-INF/config/…/vendor/rails/railties/lib/initializer.rb:113)
at
#Class:01x14d55de.run(/home/thecaptain/apps/tomcat/webapps/ROOT/WEB-INF/config/environment.rb:9)
at
(unknown).(unknown)(/home/thecaptain/apps/tomcat/webapps/ROOT/WEB-INF/config/environment.rb:32)
at
Kernel.load(file:/home/thecaptain/apps/apache-tomcat-6.0.20/webapps/ROOT/WEB-INF/lib/jruby-rack-0.9.5.jar!/jruby/rack/rails.rb:32)
at
JRuby::Rack::RailsBooter.load_environment(file:/home/thecaptain/apps/apache-tomcat-6.0.20/webapps/ROOT/WEB-INF/lib/jruby-rack-0.9.5.jar!/jruby/rack/rails.rb:155)
at #Class:01x2982d8.new(:2)
at
(unknown).(unknown)(file:/home/thecaptain/apps/apache-tomcat-6.0.20/webapps/ROOT/WEB-INF/lib/jruby-rack-0.9.5.jar!/vendor/rack-1.0.0/rack/builder.rb:29)
at
Kernel.instance_eval(file:/home/thecaptain/apps/apache-tomcat-6.0.20/webapps/ROOT/WEB-INF/lib/jruby-rack-0.9.5.jar!/vendor/rack-1.0.0/rack/builder.rb:29)
at
Kernel.instance_eval(file:/home/thecaptain/apps/apache-tomcat-6.0.20/webapps/ROOT/WEB-INF/lib/jruby-rack-0.9.5.jar!/vendor/rack-1.0.0/rack/builder.rb:29)
at
Kernel.instance_eval(file:/home/thecaptain/apps/apache-tomcat-6.0.20/webapps/ROOT/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).(unknown)(:1)
----------------------------------END--------------------

Then, if I require rack 1.0.1, it deploys and lost of it works just
fine.
Occasionally, however, I get these:

-------------------start-----------
ArgumentError (wrong # of arguments(3 for 2)):
app/controllers/user_controller.rb:55:in register' file:lib/jruby-rack-0.9.5.jar!/rack/adapter/rails.rb:35:inserve_rails’
file:lib/jruby-rack-0.9.5.jar!/rack/adapter/rails.rb:40:in call' file:lib/jruby-rack-0.9.5.jar!/jruby/rack/rails.rb:148:incall’
file:lib/jruby-rack-0.9.5.jar!/rack/handler/servlet.rb:18:in `call’
:1
--------------------end-------------------------

Any ideas would be appreciated!

Thanks,
M@

Hassan,

Thanks for trying to help :slight_smile:

As it turns out - I found my answer after adding a lot of logging and
googling frantically… This app sends email in places, and it does so
via
gmail, which it connects to thanks to lib that adds tls to net::smtp.

It appears that this lib has a method call that works in 1.8.6 but not
1.8.7. On my local system, I was starting up the jruby in my path - 1.3

and on the server, warbler was packaging 1.4. I fixed the line in the
library, and all appears to be good now. Only wish the stack trace had
been
a tad more useful :slight_smile:

Think it’s time for those two beers :wink:
M@

On Wed, Nov 18, 2009 at 11:12 PM, Hassan S. <