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