使用rails 3.2从生产模式的访问者获取城市,国家和IP

时间:2012-05-21 17:17:41

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 rails-geocoder

我在生产服务器的项目轨道中安装了http://www.rubygeocoder.com/,但我的生产服务器中的这个gem对我来说效果不好......

我正在使用mongoid。

我在开发环境中的视图中编写这些方法并且工作正常:

<%= request.ip %>   
<%= request.location.city %>    
<%= request.location.country %>

我得到:127.0.0.1 Reserved

这个结果通常是因为我在localhost工作。

然而,在linode的生产服务器中使用capistrano进行部署后,我得到了这些方法的错误,我可以在生产日志中看到下一个错误:

Completed 500 Internal Server Error in 909ms

ActionView::Template::Error (undefined method `location' for #<ActionDispatch::Request:0x00000005aa8570>):

为什么我在生产服务器中为这些方法出现此错误?

谢谢!

2 个答案:

答案 0 :(得分:6)

问题得到解决。感谢alexreisner https://github.com/alexreisner/geocoder/issues/239

安装此gem后,必须重新启动生产服务器。如果你想让地理编码器工作正常。

重新启动我的linode服务器之后,这个gem对我来说很好用:D。

非常感谢!

答案 1 :(得分:0)

如果您正在开发中尝试使用

  request.remote_ip

而不是:

  request.ip

我不确定它是否会起作用