Skip to content

Instantly share code, notes, and snippets.

@mlins
Created May 10, 2009 03:05
Show Gist options
  • Save mlins/109485 to your computer and use it in GitHub Desktop.
Save mlins/109485 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'sinatra'
require 'lib/dm-appengine/dm-appengine'
require 'dm-core/core_ext/symbol'
require 'models/location'
DataMapper.setup(:default, {
:host => 'localhost',
:adapter => 'appengine'
})
get '/' do
haml :form
end
post '/admin/data' do
if Location.new(params).save
status 200
else
status 500
end
end
get '/html' do
@location = Location.find_by_ip(params[:ip])
if @location
haml :results
else
status 404
haml :error
end
end
get '/xml' do
content_type 'text/xml', :charset => 'utf-8'
@location = Location.find_by_ip(params[:ip])
if @location
builder :results
else
throw :halt, 404
end
end
NativeException - java.lang.IllegalArgumentException: Name may not start with a digit.
com/google/appengine/api/datastore/Key.java:92:in `<init>'
com/google/appengine/api/datastore/Key.java:75:in `<init>'
com/google/appengine/api/datastore/KeyFactory.java:72:in `createKey'
com/google/appengine/api/datastore/KeyFactory.java:57:in `createKey'
sun/reflect/NativeMethodAccessorImpl.java:-2:in `invoke0'
sun/reflect/NativeMethodAccessorImpl.java:39:in `invoke'
sun/reflect/DelegatingMethodAccessorImpl.java:25:in `invoke'
java/lang/reflect/Method.java:585:in `invoke'
org/jruby/javasupport/JavaMethod.java:298:in `invokeWithExceptionHandling'
org/jruby/javasupport/JavaMethod.java:278:in `invoke_static'
org/jruby/java/invokers/StaticMethodInvoker.java:57:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:300:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:159:in `call'
org/jruby/ast/CallTwoArgNode.java:59:in `interpret'
org/jruby/ast/LocalAsgnNode.java:123:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/IfNode.java:114:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/runtime/InterpretedBlock.java:192:in `evalBlockBody'
org/jruby/runtime/InterpretedBlock.java:143:in `yield'
org/jruby/runtime/Block.java:194:in `yield'
org/jruby/RubyRange.java:479:in `fixnumStep'
org/jruby/RubyRange.java:453:in `stepCommon'
org/jruby/RubyRange.java:438:in `step'
org/jruby/org/jruby/RubyRange$i_method_multi$RUBYFRAMEDINVOKER$step.gen:-1:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:290:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:128:in `callBlock'
org/jruby/runtime/callsite/CachingCallSite.java:133:in `call'
org/jruby/ast/CallOneArgBlockNode.java:60:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:207:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:167:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:300:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:159:in `call'
org/jruby/ast/CallTwoArgNode.java:59:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/WhenOneArgNode.java:36:in `whenSlowTest'
org/jruby/ast/WhenOneArgNode.java:46:in `when'
org/jruby/ast/CaseNode.java:129:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:207:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:167:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:300:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:159:in `call'
org/jruby/ast/FCallTwoArgNode.java:38:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/IfNode.java:112:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:207:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:167:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:300:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:159:in `call'
org/jruby/ast/FCallTwoArgNode.java:38:in `interpret'
org/jruby/ast/LocalAsgnNode.java:123:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/ast/IfNode.java:114:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:170:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:151:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:280:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:119:in `call'
org/jruby/ast/FCallOneArgNode.java:36:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/WhenOneArgNode.java:36:in `whenSlowTest'
org/jruby/ast/WhenOneArgNode.java:46:in `when'
org/jruby/ast/CaseNode.java:129:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:170:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:151:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:280:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:119:in `call'
org/jruby/ast/FCallOneArgNode.java:36:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/runtime/InterpretedBlock.java:192:in `evalBlockBody'
org/jruby/runtime/InterpretedBlock.java:143:in `yield'
org/jruby/runtime/Block.java:194:in `yield'
org/jruby/RubyArray.java:1565:in `each'
org/jruby/org/jruby/RubyArray$i_method_0_0$RUBYFRAMEDINVOKER$each.gen:-1:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:270:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:88:in `callBlock'
org/jruby/runtime/callsite/CachingCallSite.java:93:in `call'
org/jruby/ast/CallNoArgBlockNode.java:64:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:170:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:151:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:280:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:119:in `call'
org/jruby/ast/FCallOneArgNode.java:36:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/WhenOneArgNode.java:36:in `whenSlowTest'
org/jruby/ast/WhenOneArgNode.java:46:in `when'
org/jruby/ast/CaseNode.java:129:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:170:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:151:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:280:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:119:in `call'
org/jruby/ast/FCallOneArgNode.java:36:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:263:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:191:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:330:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:208:in `callBlock'
org/jruby/runtime/callsite/CachingCallSite.java:213:in `call'
org/jruby/RubyClass.java:628:in `call'
org/jruby/internal/runtime/methods/DynamicMethod.java:180:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:320:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:199:in `call'
org/jruby/ast/CallThreeArgNode.java:61:in `interpret'
org/jruby/ast/LocalAsgnNode.java:123:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:170:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:151:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:280:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:119:in `call'
org/jruby/ast/CallOneArgNode.java:57:in `interpret'
org/jruby/ast/CallTwoArgNode.java:59:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:170:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:151:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:280:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:119:in `call'
org/jruby/ast/CallOneArgNode.java:57:in `interpret'
org/jruby/ast/CallNoArgNode.java:61:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/IfNode.java:114:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:170:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:151:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:280:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:119:in `call'
org/jruby/ast/FCallOneArgNode.java:36:in `interpret'
org/jruby/ast/LocalAsgnNode.java:123:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:170:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:151:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:280:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:119:in `call'
org/jruby/ast/CallOneArgNode.java:57:in `interpret'
org/jruby/ast/InstAsgnNode.java:95:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/runtime/InterpretedBlock.java:192:in `evalBlockBody'
org/jruby/runtime/InterpretedBlock.java:180:in `yield'
org/jruby/runtime/BlockBody.java:72:in `call'
org/jruby/runtime/BlockBody.java:78:in `call'
org/jruby/runtime/Block.java:89:in `call'
org/jruby/RubyProc.java:204:in `call'
org/jruby/internal/runtime/methods/ProcMethod.java:64:in `call'
org/jruby/internal/runtime/methods/DynamicMethod.java:160:in `call'
org/jruby/RubyMethod.java:106:in `call'
org/jruby/org/jruby/RubyMethod$i_method_multi$RUBYINVOKER$call.gen:-1:in `call'
org/jruby/internal/runtime/methods/JavaMethod.java:242:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:77:in `call'
org/jruby/ast/CallSpecialArgNode.java:65:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/runtime/InterpretedBlock.java:192:in `evalBlockBody'
org/jruby/runtime/InterpretedBlock.java:180:in `yield'
org/jruby/runtime/Block.java:199:in `yield'
org/jruby/RubyObject.java:488:in `yieldUnder'
org/jruby/RubyObject.java:310:in `specificEval'
org/jruby/RubyObject.java:1254:in `instance_eval'
org/jruby/org/jruby/RubyObject$i_method_multi$RUBYFRAMEDINVOKER$instance_eval.gen:-1:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:86:in `callBlock'
org/jruby/runtime/callsite/CachingCallSite.java:93:in `call'
org/jruby/ast/FCallNoArgBlockPassNode.java:27:in `interpret'
org/jruby/ast/FCallTwoArgNode.java:38:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/runtime/InterpretedBlock.java:192:in `evalBlockBody'
org/jruby/runtime/InterpretedBlock.java:143:in `yield'
org/jruby/runtime/Block.java:194:in `yield'
org/jruby/RubyKernel.java:1004:in `rbCatch'
org/jruby/org/jruby/RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER$rbCatch.gen:-1:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:126:in `callBlock'
org/jruby/runtime/callsite/CachingCallSite.java:143:in `callIter'
org/jruby/ast/FCallOneArgBlockNode.java:34:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/ast/IfNode.java:112:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/runtime/InterpretedBlock.java:192:in `evalBlockBody'
org/jruby/runtime/InterpretedBlock.java:143:in `yield'
org/jruby/runtime/Block.java:194:in `yield'
org/jruby/RubyArray.java:1565:in `each'
org/jruby/org/jruby/RubyArray$i_method_0_0$RUBYFRAMEDINVOKER$each.gen:-1:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:270:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:88:in `callBlock'
org/jruby/runtime/callsite/CachingCallSite.java:93:in `call'
org/jruby/ast/CallNoArgBlockNode.java:64:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/ast/IfNode.java:112:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:133:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:135:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:260:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:79:in `call'
org/jruby/ast/FCallNoArgNode.java:31:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/RescueNode.java:225:in `executeBody'
org/jruby/ast/RescueNode.java:147:in `interpretWithJavaExceptions'
org/jruby/ast/RescueNode.java:110:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:133:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:135:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:260:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:79:in `call'
org/jruby/ast/FCallNoArgNode.java:31:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/runtime/InterpretedBlock.java:192:in `evalBlockBody'
org/jruby/runtime/InterpretedBlock.java:180:in `yield'
org/jruby/runtime/Block.java:199:in `yield'
org/jruby/RubyObject.java:488:in `yieldUnder'
org/jruby/RubyObject.java:310:in `specificEval'
org/jruby/RubyObject.java:1254:in `instance_eval'
org/jruby/org/jruby/RubyObject$i_method_multi$RUBYFRAMEDINVOKER$instance_eval.gen:-1:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:270:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:88:in `callBlock'
org/jruby/runtime/callsite/CachingCallSite.java:93:in `call'
org/jruby/ast/FCallNoArgBlockPassNode.java:27:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/runtime/InterpretedBlock.java:192:in `evalBlockBody'
org/jruby/runtime/InterpretedBlock.java:143:in `yield'
org/jruby/runtime/Block.java:194:in `yield'
org/jruby/RubyKernel.java:1004:in `rbCatch'
org/jruby/org/jruby/RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER$rbCatch.gen:-1:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:290:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:128:in `callBlock'
org/jruby/runtime/callsite/CachingCallSite.java:143:in `callIter'
org/jruby/ast/FCallOneArgBlockNode.java:34:in `interpret'
org/jruby/ast/LocalAsgnNode.java:123:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:109:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:117:in `call'
org/jruby/runtime/callsite/SuperCallSite.java:268:in `cacheAndCall'
org/jruby/runtime/callsite/SuperCallSite.java:52:in `callBlock'
org/jruby/runtime/callsite/SuperCallSite.java:57:in `call'
org/jruby/ast/ZSuperNode.java:100:in `interpret'
org/jruby/ast/LocalAsgnNode.java:123:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:152:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:143:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:270:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:88:in `callBlock'
org/jruby/runtime/callsite/CachingCallSite.java:103:in `callIter'
org/jruby/ast/FCallNoArgBlockNode.java:32:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:170:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:151:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:280:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:119:in `call'
org/jruby/ast/CallOneArgNode.java:57:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:170:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:151:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:280:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:119:in `call'
org/jruby/ast/CallOneArgNode.java:57:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:170:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:151:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:280:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:119:in `call'
org/jruby/ast/CallOneArgNode.java:57:in `interpret'
org/jruby/ast/ToAryNode.java:69:in `interpret'
org/jruby/ast/MultipleAsgnNode.java:116:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:170:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:151:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:280:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:119:in `call'
org/jruby/ast/CallOneArgNode.java:57:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:170:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:151:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:280:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:119:in `call'
org/jruby/ast/CallOneArgNode.java:57:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/BlockNode.java:71:in `interpret'
org/jruby/runtime/InterpretedBlock.java:192:in `evalBlockBody'
org/jruby/runtime/InterpretedBlock.java:143:in `yield'
org/jruby/runtime/Block.java:194:in `yield'
org/jruby/ast/YieldNode.java:115:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/ast/IfNode.java:114:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:152:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:143:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:270:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:88:in `callBlock'
org/jruby/runtime/callsite/CachingCallSite.java:103:in `callIter'
org/jruby/ast/FCallNoArgBlockNode.java:32:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:170:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:151:in `call'
org/jruby/runtime/callsite/CachingCallSite.java:280:in `cacheAndCall'
org/jruby/runtime/callsite/CachingCallSite.java:119:in `call'
org/jruby/ast/CallOneArgNode.java:57:in `interpret'
org/jruby/ast/CallOneArgNode.java:57:in `interpret'
org/jruby/ast/NewlineNode.java:104:in `interpret'
org/jruby/internal/runtime/methods/InterpretedMethod.java:170:in `call'
org/jruby/internal/runtime/methods/DefaultMethod.java:151:in `call'
org/jruby/RubyClass.java:530:in `finvoke'
org/jruby/javasupport/util/RuntimeHelpers.java:415:in `invoke'
org/jruby/RubyBasicObject.java:308:in `callMethod'
org/jruby/javasupport/JavaEmbedUtils.java:143:in `callMethod'
org/jruby/rack/DefaultRackApplication.java:70:in `__call'
org/jruby/rack/DefaultRackApplication.java:40:in `call'
org/jruby/rack/servlet/DefaultServletDispatcher.java:33:in `process'
org/jruby/rack/RackFilter.java:53:in `doFilter'
org/mortbay/jetty/servlet/ServletHandler.java:1084:in `doFilter'
com/google/apphosting/utils/servlet/TransactionCleanupFilter.java:43:in `doFilter'
org/mortbay/jetty/servlet/ServletHandler.java:1084:in `doFilter'
org/mortbay/jetty/servlet/ServletHandler.java:360:in `handle'
org/mortbay/jetty/security/SecurityHandler.java:216:in `handle'
org/mortbay/jetty/servlet/SessionHandler.java:181:in `handle'
org/mortbay/jetty/handler/ContextHandler.java:712:in `handle'
org/mortbay/jetty/webapp/WebAppContext.java:405:in `handle'
com/google/apphosting/utils/jetty/DevAppEngineWebAppContext.java:54:in `handle'
org/mortbay/jetty/handler/HandlerWrapper.java:139:in `handle'
com/google/appengine/tools/development/JettyContainerService.java:306:in `handle'
org/mortbay/jetty/handler/HandlerWrapper.java:139:in `handle'
org/mortbay/jetty/Server.java:313:in `handle'
org/mortbay/jetty/HttpConnection.java:506:in `handleRequest'
org/mortbay/jetty/HttpConnection.java:830:in `headerComplete'
org/mortbay/jetty/HttpParser.java:514:in `parseNext'
org/mortbay/jetty/HttpParser.java:211:in `parseAvailable'
org/mortbay/jetty/HttpConnection.java:381:in `handle'
org/mortbay/io/nio/SelectChannelEndPoint.java:396:in `run'
org/mortbay/thread/BoundedThreadPool.java:442:in `run'
/Users/mlins/Projects/active/geo.bitmacro.com/tmp/war/WEB-INF/gems/gems/appengine-apis-0.0.3/lib/appengine-apis/datastore_types.rb:207:in `step'
/Users/mlins/Projects/active/geo.bitmacro.com/tmp/war/WEB-INF/gems/gems/appengine-apis-0.0.3/lib/appengine-apis/datastore_types.rb:207:in `from_path'
lib/dm-appengine/dm-appengine.rb:218:in `parse_key'
lib/dm-appengine/dm-appengine.rb:168:in `property_value'
lib/dm-appengine/dm-appengine.rb:291:in `parse_comparison'
lib/dm-appengine/dm-appengine.rb:202:in `parse_conditions'
lib/dm-appengine/dm-appengine.rb:259:in `parse_and'
lib/dm-appengine/dm-appengine.rb:258:in `each'
lib/dm-appengine/dm-appengine.rb:258:in `parse_and'
lib/dm-appengine/dm-appengine.rb:206:in `parse_conditions'
lib/dm-appengine/dm-appengine.rb:154:in `initialize'
lib/dm-appengine/dm-appengine.rb:97:in `read'
/Users/mlins/Projects/active/geo.bitmacro.com/tmp/war/WEB-INF/gems/gems/dm-core-0.10.0/lib/dm-core/repository.rb:145:in `read'
/Users/mlins/Projects/active/geo.bitmacro.com/tmp/war/WEB-INF/gems/gems/dm-core-0.10.0/lib/dm-core/model.rb:396:in `first'
models/location.rb:19:in `find_by_ip'
geolocation.rb:25:in `GET /html'
/Users/mlins/Projects/active/geo.bitmacro.com/tmp/war/WEB-INF/gems/gems/rack-0.9.1/lib/rack/methodoverride.rb:24:in `call'
/Users/mlins/Projects/active/geo.bitmacro.com/tmp/war/WEB-INF/gems/gems/rack-0.9.1/lib/rack/commonlogger.rb:20:in `_call'
/Users/mlins/Projects/active/geo.bitmacro.com/tmp/war/WEB-INF/gems/gems/rack-0.9.1/lib/rack/commonlogger.rb:13:in `call'
file:/Users/mlins/Projects/active/geo.bitmacro.com/tmp/war/WEB-INF/lib/jruby-rack-0.9.4-SNAPSHOT.jar!/rack/handler/servlet.rb:17:in `call'
:1
class Location
include DataMapper::Resource
property :ip_start, Integer, :key => true
property :country_code, String, :length => 2
property :region_code, String, :length => 2
property :city, String, :length => 64
property :zipcode, String, :length => 6
property :latitude, Float
property :longitude, Float
attr_accessor :ip
def self.find_by_ip(ip)
return unless valid_ip?(ip)
o = ip.split('.').collect {|i| i.to_i }
i = (o[0] * 256 + o[1]) * 256 + o[2]
r = first(:ip_start.lte => ip, :order => [:ip_start.desc])
r.ip = ip if r
r
end
def self.valid_ip?(ip)
ip =~ /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})?$/
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment