【发布时间】:2010-08-04 03:12:39
【问题描述】:
我正在尝试创建一个 gem,我想在其中添加一个功能,在使用它时获取客户端 IP 地址。基本上它就像 rails ActionController request.remote_ip,但在 gem 中我不想依赖/依赖 rails。
有没有什么方法可以纯粹使用 Ruby 来实现这样的功能?
我找到了this,但是当部署到生产服务器时,它只获得服务器ip地址而不是客户端地址。
任何帮助将不胜感激
非常感谢
【问题讨论】:
-
我自己也遇到了同样的问题,并一直跟踪到机架级别。我从来没有找到任何访问当前请求对象的方法。似乎它与 ApplicationController 相关联,似乎没有任何方法可以从 gem/plugin 范围访问它。似乎唯一的解决方案是让 IP 从控制器传递给您的 gem。
-
aNoble 是正确的,Rails 应用程序中包含的任意 gem 没有任何路径“向上”到具有客户端请求上下文的对象。如果您的 gem 需要此数据来实现其预期目的,则必须更改您的 API 以要求将信息“向下”传递到您的 gem。这可以是显式的(作为 IP 地址/字符串)或隐式的(作为对可以从中获取请求数据的对象的引用)
标签: ruby-on-rails rubygems client dependencies ip-address