Skip to content

Instantly share code, notes, and snippets.

@takeru
Created June 5, 2010 05:23
Show Gist options
  • Select an option

  • Save takeru/426331 to your computer and use it in GitHub Desktop.

Select an option

Save takeru/426331 to your computer and use it in GitHub Desktop.
require 'appengine-rack'
AppEngine::Rack.configure_app(
:application => "gae151pre2test",
:precompilation_enabled => true,
:version => "1")
class HelloApp
def call(env)
::Rack::Response.new("Hello").finish
end
end
case 1 # 1,2,3
when 1
s = File.lstat("/Users") ## <<<<<<<<<<<<<<<<<<<<<<
p ["A: lstat=", s]
class DeferredDispatcher2
def initialize args
@args = args
p ["DeferredDispatcher2#initialize: @args", @args]
@args
end
def call env
p ["DeferredDispatcher2#call: @runtime", @runtime]
p ["DeferredDispatcher2#call: @rack_app", @rack_app]
if @runtime.nil?
@runtime = true
# 1: redirect with runtime and jruby-rack loaded
redirect_or_error(env)
elsif @rack_app.nil?
p "[@rack_app.nil?==true]"
s = nil
begin
s = File.lstat("/Users") ## <<<<<<<<<<<<<<<<<<<<<<
rescue => e
p "<<<<ERROR>>>> e=#{e.inspect}"
raise e
end
p ["B: lstat=", s]
require @args[:require] if @args[:require]
@rack_app = Object.module_eval(@args[:dispatch]).new
# 2: redirect with framework required & dispatched
redirect_or_error(env)
else
# 3: process all other requests
@rack_app.call(env)
end
end
def redirect_or_error(env)
if env['REQUEST_METHOD'].eql?('GET')
redir_url = env['REQUEST_URI'] +
(env['QUERY_STRING'].eql?('') ? '?' : '&') + Time.now.to_i.to_s
res = ::Rack::Response.new('*', 302)
res['Location'] = redir_url
res.finish
else
::Rack::Response.new('Service Unavailable', 503).finish
end
end
end
deferred_dispatcher = DeferredDispatcher2.new(
:require => nil,
:dispatch => 'HelloApp')
run deferred_dispatcher
when 2
deferred_dispatcher = AppEngine::Rack::DeferredDispatcher.new(
:require => "time", # dummy!!
:dispatch => 'HelloApp')
run deferred_dispatcher
when 3
run HelloApp.new
#lambda { ::Rack::Response.new("Hello").finish }
end
# Critical default settings:
disable_system_gems
disable_rubygems
bundle_path ".gems/bundler_gems"
# List gems to bundle here:
gem 'appengine-rack', '0.0.10.pre'
gem 'jruby-openssl', '0.7'
gem 'jruby-jars', '1.5.1.pre2'
tkrmb:~/demo/gae151pre2test% ls -l .gems/bundler_gems/jruby/1.8/cache
total 21912
-rw-r--r-- 1 takeru takeru 15360 6 5 12:51 appengine-rack-0.0.10.pre.gem
-rw-r--r-- 1 takeru takeru 15360 6 5 12:50 appengine-rack-0.0.9.gem
-rw-r--r-- 1 takeru takeru 9982976 6 5 12:50 jruby-jars-1.4.1.gem
-rw-r--r-- 1 takeru takeru 9984000 6 5 12:51 jruby-jars-1.5.1.pre2.gem
-rw-r--r-- 1 takeru takeru 2174976 6 5 12:51 jruby-openssl-0.7.gem
-rw-r--r-- 1 takeru takeru 148992 6 5 12:50 jruby-rack-1.0.1.gem
-rw-r--r-- 1 takeru takeru 104448 6 5 12:50 rack-1.1.0.gem
tkrmb:~/demo/gae151pre2testls -l .gems/bundler_gems/jruby/1.8/gems
total 0
drwxr-xr-x 5 takeru takeru 170 6 5 12:51 appengine-rack-0.0.10.pre
drwxr-xr-x 6 takeru takeru 204 6 5 12:51 jruby-jars-1.5.1.pre2
drwxr-xr-x 9 takeru takeru 306 6 5 12:51 jruby-openssl-0.7
drwxr-xr-x 6 takeru takeru 204 6 5 12:50 jruby-rack-1.0.1
drwxr-xr-x 13 takeru takeru 442 6 5 12:50 rack-1.1.0
tkrmb:~/demo/gae151pre2test% ls -l WEB-INF/lib
total 24944
-rw-r--r-- 1 takeru takeru 9993366 6 5 12:50 appengine-api-1.0-sdk-1.3.4.jar
-rw-r--r-- 1 takeru takeru 1216274 6 5 12:50 appengine-api-labs-1.3.4.jar
-rw-r--r-- 1 takeru takeru 4294 6 5 13:09 appengine-rack.jar
-rw-r--r-- 1 takeru takeru 225425 6 5 13:09 bcmail-jdk15-144.jar
-rw-r--r-- 1 takeru takeru 1643601 6 5 13:09 bcprov-jdk15-144.jar
-rw------- 1 takeru takeru 395421 6 5 13:09 gems.jar
-rw-r--r-- 1 takeru takeru 417605 6 5 13:09 jopenssl.jar
-rw-r--r-- 1 takeru takeru 8176368 6 5 13:09 jruby-core-1.5.1.pre2.jar
-rw-r--r-- 1 takeru takeru 157793 6 5 13:09 jruby-rack-1.0.1.jar
-rw-r--r-- 1 takeru takeru 3291087 6 5 13:09 jruby-stdlib-1.5.1.pre2.jar
% LANG=C dev_appserver.rb .
=> Booting DevAppServer
=> Press Ctrl-C to shutdown server
Warning: The Mac OS -XstartOnFirstThread: is currently unsupported
Jun 5, 2010 5:32:04 AM com.google.apphosting.utils.jetty.JettyLogger info
INFO: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
Jun 5, 2010 5:32:04 AM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
INFO: Successfully processed /Users/takeru/demo/gae151pre2test/WEB-INF/appengine-web.xml
Jun 5, 2010 5:32:04 AM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
INFO: Successfully processed /Users/takeru/demo/gae151pre2test/WEB-INF/web.xml
Jun 5, 2010 5:32:04 AM com.google.apphosting.utils.jetty.JettyLogger info
INFO: jetty-6.1.x
["A: lstat=", #<File::Stat dev=0xino=0, mode=040644, nlink=uid=-1, gid=rdev=0xsize=306, blksize=4096, blocks=atime=Sun Apr 18 08:21:50 UTC 2010, mtime=Sun Apr 18 08:21:50 UTC 2010, ctime=Mon May 31 16:01:47 UTC 2010>]
["DeferredDispatcher2#initialize: @args", {:require=>nil, :dispatch=>"HelloApp"}]
Jun 5, 2010 5:32:15 AM com.google.apphosting.utils.jetty.JettyLogger info
INFO: Started SelectChannelConnector@127.0.0.1:8080
Jun 5, 2010 5:32:15 AM com.google.appengine.tools.development.DevAppServerImpl start
INFO: The server is running at http://localhost:8080/
["DeferredDispatcher2#call: @runtime", nil]
["DeferredDispatcher2#call: @rack_app", nil]
["DeferredDispatcher2#call: @runtime", true]
["DeferredDispatcher2#call: @rack_app", nil]
"[@rack_app.nil?==true]"
"<<<<ERROR>>>> e=#<Errno::ENOENT: No such file or directory - /Users>"
Jun 5, 2010 5:32:22 AM com.google.appengine.tools.development.ApiProxyLocalImpl log
SEVERE: [1275715942889000] javax.servlet.ServletContext log: Application Error
config.ru:36:in `call': No such file or directory - /Users (Errno::ENOENT)
from file:/Users/takeru/demo/gae151pre2test/WEB-INF/lib/jruby-rack-1.0.1.jar!/rack/handler/servlet.rb:19:in `call'
from :1
...internal jruby stack elided...
from DeferredDispatcher2.call(file:/Users/takeru/demo/gae151pre2test/WEB-INF/lib/jruby-rack-1.0.1.jar!/rack/handler/servlet.rb:19)
from Rack::Handler::Servlet.call(:1)
from (unknown).(unknown)(:1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment