Created
May 10, 2009 03:05
-
-
Save mlins/109485 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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