我想在本地主机上测试地址解析器。
当我尝试执行以下操作时:request.remote_ip
或request.location.ip
,它会回报我::1
。
request.location.longitude
-它不会返回任何内容。
我尝试了许多在Internet上找到的解决方案,但其中大多数已过时或根本无法使用。
答案 0 :(得分:1)
我遵循@max的建议。 使用ngrok非常方便,可以解决许多困难。
答案 1 :(得分:0)
这是“来自本地主机的地理编码器”在 Google 上的第一个结果,所以这是@max 建议的扩展版本。
转到 ngrok.com 并注册一个免费帐户。
下载并安装二进制文件。您可以按照他们提供的说明进行操作,或者如果您使用的是 MacOS 并安装了 Homebrew,请运行:
brew install ngrok
ngrok authtoken <your-authtoken>
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。