Hi, instead of deploying war-files I use a little Ruby script which spawns the Jetty server objects including JRuby-Rack. While this worked without any problems with Goldspike there are a few issues with JRuby-Rack:
1) I didn't manage to point "rails.root" to the right place (gets screwed up by some internal processing of the path). Therefore I patched rails.rb to accept a "rails.root_absolute" parameter which is used without any further treatment in case it exists. 2) I added a few lines of Java code to RackServletContextListener to be able to detect if errors happened during startup. In case of an error I simply want to shutdown the whole server/JVM. 3) I also added a config param to disable using the servlet context's logger and keep the default Rails logger. I've attached the diffs. Should I create a Jira issue or are there any other solutions for my problems? Christian
Index: src/main/java/org/jruby/rack/RackServletContextListener.java =================================================================== --- src/main/java/org/jruby/rack/RackServletContextListener.java (revision 235) +++ src/main/java/org/jruby/rack/RackServletContextListener.java (working copy) @@ -17,6 +17,7 @@ public class RackServletContextListener implements ServletContextListener { public static final String FACTORY_KEY = "rack.factory"; private final RackApplicationFactory factory; + private String errorMsg; public RackServletContextListener() { factory = null; @@ -38,6 +39,7 @@ fac.init(ctx); } catch (Exception ex) { ctx.log("Error: application initialization failed", ex); + this.errorMsg = ex.toString(); } } @@ -58,4 +60,8 @@ return new SharedRackApplicationFactory(new DefaultRackApplicationFactory()); } + + public String getErrorMsg() { + return errorMsg; + } } \ No newline at end of file Index: src/main/ruby/jruby/rack/rails.rb =================================================================== --- src/main/ruby/jruby/rack/rails.rb (revision 235) +++ src/main/ruby/jruby/rack/rails.rb (working copy) @@ -16,6 +16,7 @@ @rails_root = @servlet_context.getInitParameter 'rails.root' @rails_root ||= '/WEB-INF' @rails_root = expand_root_path @rails_root + @rails_root = @servlet_context.getInitParameter('rails.root_absolute') unless @servlet_context.getInitParameter('rails.root_absolute').nil? @rails_env = @servlet_context.getInitParameter 'rails.env' @rails_env ||= 'production' ENV['RAILS_ROOT'] = @rails_root @@ -78,6 +79,8 @@ end def setup_logger + return if @servlet_context.getInitParameter('logger.keep_default') == 'true' + if defined?(::RAILS_DEFAULT_LOGGER) class << ::RAILS_DEFAULT_LOGGER # Make these accessible to wire in the log device public :instance_variable_get, :instance_variable_set @@ -157,4 +160,4 @@ end end end -end \ No newline at end of file +end
--------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email