mlins (owner)

Forks

Revisions

gist: 109485 Download_button fork
public
Public Clone URL: git://gist.github.com/109485.git
Embed All Files: show embed
geolocation.rb #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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
location.rb #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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
Text only #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
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