【发布时间】:2013-09-09 17:01:07
【问题描述】:
当我在浏览器中加载我的操作 CarsController#show 时,我收到以下错误消息:
Timeout::Error in CarsController#show
execution expired
以及这一行指出的错误:
country = GeoIp.geolocation(ip, :precision => :country)
整个动作:
def show
@car = Item.find_by_car_key(params[:car_key])
ip = request.remote_ip
geo_key = 'my geo key'
GeoIp.api_key = geo_key
country = GeoIp.geolocation(ip, :precision => :country)
puts country.inspect
respond_to do |format|
format.html # show.html.erb
format.json { render json: @item }
end
end
如何避免此错误消息并在加载此操作时始终使用它?
谢谢
【问题讨论】:
-
GeoIp.geolocation是做什么的?也许它正在运行一个很长的过程导致您的请求超时? -
GeoIp.geolocation(ip, :precision => :country)只是找出浏览该网站的用户的当前位置。 “也许它正在运行一个很长的过程导致您的请求超时?” -> 不,因为我在输入 URL 1 秒后看到错误。该 gem 名为 geo_ip。 -
Ruby 调试器可以帮助解决此类问题。放入调试语句并逐行检查以查看失败的原因和原因。 github.com/cldwalker/debugger
-
如果您提出问题,请花时间给我们反馈,您有几个问题,请查看
标签: ruby-on-rails ruby geoip