Title: [676] trunk/rails-integration/src/main/java/org/jruby/webapp: Avoid evalScript to be more compatible with JRuby trunk
Revision
676
Author
tantalon
Date
2007-07-21 01:28:47 -0400 (Sat, 21 Jul 2007)

Log Message

Avoid evalScript to be more compatible with JRuby trunk

Modified Paths


Diff

Modified: trunk/rails-integration/src/main/java/org/jruby/webapp/RailsFactory.java (675 => 676)


--- trunk/rails-integration/src/main/java/org/jruby/webapp/RailsFactory.java	2007-07-21 04:55:57 UTC (rev 675)
+++ trunk/rails-integration/src/main/java/org/jruby/webapp/RailsFactory.java	2007-07-21 05:28:47 UTC (rev 676)
@@ -92,14 +92,15 @@
 
 		// set the initial environment
 		if (environment == null) {
+			RubyHash rubyEnv = (RubyHash)runtime.getObject().getConstant("ENV");
 			Iterator envIt = environmentOverrides.entrySet().iterator();
 			while (envIt.hasNext()) {
 				Map.Entry override = (Map.Entry)envIt.next();
 				String value = (String)override.getValue();
 				if (value != null && value.length() != 0) {
-					runtime.evalScript("ENV['" + override.getKey() + "'] = '" + override.getValue() + "'");
+					rubyEnv.put(override.getKey(), override.getValue());
 				} else {
-					runtime.evalScript("ENV.delete '" + override.getKey() + "'");
+					rubyEnv.remove(override.getKey());
 				}
 			}
 		} else {
@@ -107,7 +108,10 @@
 		}
 
 		// 9419 - ensure that ARGV is set
-		runtime.evalScript("ARGV ||= []");
+		if (runtime.getObject().getInstanceVariable("ARGV") == null) {
+			RubyArray argv = runtime.newArray();
+			runtime.getObject().setConstant("ARGV", argv);
+		}
 
 		// make servlet context accessible
 		runtime.defineReadonlyVariable("$servlet_context", JavaEmbedUtils.javaToRuby(runtime, context));

Modified: trunk/rails-integration/src/main/java/org/jruby/webapp/RailsServlet.java (675 => 676)


--- trunk/rails-integration/src/main/java/org/jruby/webapp/RailsServlet.java	2007-07-21 04:55:57 UTC (rev 675)
+++ trunk/rails-integration/src/main/java/org/jruby/webapp/RailsServlet.java	2007-07-21 05:28:47 UTC (rev 676)
@@ -207,11 +207,8 @@
 	}
 
 	protected void setEnv(RubyHash env, String name, String value) {
-		Ruby runtime = env.getRuntime();
 		if (value != null) {
-			IRubyObject rubyName = JavaEmbedUtils.javaToRuby(runtime, name);
-			IRubyObject rubyValue = JavaEmbedUtils.javaToRuby(runtime, value);
-			env.aset(rubyName, rubyValue);
+			env.put(name, value);
 		}
 	}
 

Modified: trunk/rails-integration/src/main/java/org/jruby/webapp/RailsTaskServlet.java (675 => 676)


--- trunk/rails-integration/src/main/java/org/jruby/webapp/RailsTaskServlet.java	2007-07-21 04:55:57 UTC (rev 675)
+++ trunk/rails-integration/src/main/java/org/jruby/webapp/RailsTaskServlet.java	2007-07-21 05:28:47 UTC (rev 676)
@@ -9,50 +9,52 @@
 import java.io.IOException;
 
 public class RailsTaskServlet extends RailsServlet {
-    private String script;
-    private int waitBeforeStartSeconds = 30; // wait 30 seconds
-    
-    public void init(final ServletConfig servletConfig) throws ServletException {
-        super.init(servletConfig);
-        
-        script = servletConfig.getInitParameter("script");
-        String waitBeforeStartSecondsString = servletConfig.getInitParameter("waitBeforeStartSeconds");
-        if(waitBeforeStartSecondsString != null) {
-            waitBeforeStartSeconds = Integer.parseInt(waitBeforeStartSecondsString);
-        }
-        
-        new Thread(new Runnable() {
-            public void run() {
-                try {
-                    // wait for a little while before starting the task
-                    // this allow the app server to start serving requests before initializing all tasks
-                    try {
-                        Thread.sleep(waitBeforeStartSeconds * 1000);
-                    } catch (InterruptedException ignore) {
-                    }
+	private String script;
+	private int waitBeforeStartSeconds = 30; // wait 30 seconds
 
-                    while (true) {
-                        Ruby runtime = (Ruby) getRuntimePool().borrowObject();
-                        servletConfig.getServletContext().log("Starting " + script);
-                        try {
-                            runtime.evalScript("load(File.join(RAILS_ROOT, '" + script + "'))");
-                        } catch (Exception e) {
-                            getRuntimePool().invalidateObject(runtime);
-                            try {
-                                Thread.sleep(10 * 1000); // wait for 10s
-                            } catch (InterruptedException ignore) {
-                            }
-                            servletConfig.getServletContext().log("Script died, restarting: " + script, e);
-                        }
-                    }
-                } catch (Exception e) {
-                    servletConfig.getServletContext().log("Could not start " + script, e);
-                }
-            }
-        }).start();
-    }
+	public void init(final ServletConfig servletConfig) throws ServletException {
+		super.init(servletConfig);
 
-    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-        throw new ServletException("Not supported");
-    }
+		script = servletConfig.getInitParameter("script");
+		String waitBeforeStartSecondsString = servletConfig.getInitParameter("waitBeforeStartSeconds");
+		if(waitBeforeStartSecondsString != null) {
+			waitBeforeStartSeconds = Integer.parseInt(waitBeforeStartSecondsString);
+		}
+
+		new Thread(new Runnable() {
+			public void run() {
+				try {
+					// wait for a little while before starting the task
+					// this allow the app server to start serving requests before initializing all tasks
+					try {
+						Thread.sleep(waitBeforeStartSeconds * 1000);
+					} catch (InterruptedException ignore) {
+					}
+
+					while (true) {
+						Ruby runtime = (Ruby) getRuntimePool().borrowObject();
+						servletConfig.getServletContext().log("Starting " + script);
+						try {
+							// can this be used instead?
+							// runtime.getLoadService().load(script);
+							runtime.evalScript("load(File.join(RAILS_ROOT, '" + script + "'))");
+						} catch (Exception e) {
+							getRuntimePool().invalidateObject(runtime);
+							try {
+								Thread.sleep(10 * 1000); // wait for 10s
+							} catch (InterruptedException ignore) {
+							}
+							servletConfig.getServletContext().log("Script died, restarting: " + script, e);
+						}
+					}
+				} catch (Exception e) {
+					servletConfig.getServletContext().log("Could not start " + script, e);
+				}
+			}
+		}).start();
+	}
+
+	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+		throw new ServletException("Not supported");
+	}
 }
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel

Reply via email to