如何在本地主机上测试Geocoder?

时间:2020-02-17 20:30:55

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

我想在本地主机上测试地址解析器。 当我尝试执行以下操作时:request.remote_iprequest.location.ip,它会回报我::1

request.location.longitude-它不会返回任何内容。

我尝试了许多在Internet上找到的解决方案,但其中大多数已过时或根本无法使用。

3 个答案:

答案 0 :(得分:1)

我遵循@max的建议。 使用ngrok非常方便,可以解决许多困难。

答案 1 :(得分:0)

这是“来自本地主机的地理编码器”在 Google 上的第一个结果,所以这是@max 建议的扩展版本。

  • 转到 ngrok.com 并注册一个免费帐户。

  • 下载并安装二进制文件。您可以按照他们提供的说明进行操作,或者如果您使用的是 MacOS 并安装了 Homebrew,请运行:

brew install ngrok
  • 使用您的身份验证令牌连接您的帐户(您应该在登录 ngrok.com 后立即看到它):
ngrok authtoken <your-authtoken>
  • 运行 ngrok:
ngrok http 80

(您可能希望将 80 替换为不同的端口,例如 8080 或 8081。)

您应该会看到如下所示的内容:

ngrok by @inconshreveable                                                                                                                                            (Ctrl+C to quit)
                                                                                                                                                                                     
Session Status                online                                                                                                                                                 
Account                       <your-name> (Plan: Free)                                                                                                                                   
Version                       2.3.40                                                                                                                                                 
Region                        United States (us)                                                                                                                                     
Web Interface                 http://127.0.0.1:4040                                                                                                                                  
Forwarding                    http://<subdomain>.ngrok.io -> http://localhost:80                                                                                                    
Forwarding                    https://<subdomain>.ngrok.io -> http://localhost:80                                                                                                   
                                                                                                                                                                                     
Connections                   ttl     opn     rt1     rt5     p50     p90                                                                                                            
                              0       0       0.00    0.00    0.00    0.00 

(如果您在路由器后面,则需要将其配置为将端口 80 转发到您的 LAN IP。)

现在您可以通过提供的链接访问您的本地主机(上例中的 http://<subdomain>.ngrok.io)。

请注意,出于地理编码的目的,您还需要获取地理编码服务的 API 密钥(nominatim.openstreetmap.org 在撰写本文时给了我一个 CORS 错误),因此这可能不是必需的,具体取决于服务你用。

答案 2 :(得分:0)

虽然我在聚会上迟到了,但对于未来的观众,您可以覆盖 request.remote_ip 方法以返回有效的开发 IP。

为此,请覆盖 /config/environments/development.rb

中的以下方法
Rails.application.configure do
  # Set a random IP for testing
  class ActionDispatch::Request
    def remote_ip
     'ANY VALID IP ADDRESS'
    end
  end
end

用有效的 IP 地址替换 ANY VALID IP ADDRESS。现在,当您调用 request.remote_ip 时,它将从被覆盖的方法中获取返回值。

如果需要,您还可以从 ENV 返回所需的 IP,甚至每次在方法内部生成一个随机 IP。