2012-03-06 7 views
0

Request.remote_ipにパッチを当てたり、オーバーロードしたりする必要があります(または、Request.ipはremote_ipの代わりに使用する必要があると言われています)、通常のように動作しますが、CF-Connecting-IPがヘッダにあればこのIPアドレスは通常は検出されずに返されます。Request.remote_ipまたはRequest.ipをオーバーロードまたはmonkeypatchする方法

このパッチは、クラスとメソッドの定義に関して適切に設定するにはどうすればよいですか?

は基本的に私は単に各要求に対して次のことを返すようにしようとしている:

headers["CF-Connecting-IP"] || remote_ip 

答えて

1

私は猿がリクエストに応じてメソッドにパッチを適用しません。代わりに、私はあなただけ掲載まさに行い、アプリケーションのコントローラでヘルパーメソッド作ると思います。

class ApplicationController < ActionController::Base 
    ... 

    def connecting_ip 
    headers["CF-Connecting-IP"] || request.remote_ip 
    end 
end 

をそして、ちょうどこれが重要であるどこconnecting_ip使用しています。

+0

実際には、「ヘルパー:すべて」などを入れずにapplication_helperを使用する方法を理解することができなかったので、コントローラーに入れなければなりませんでした。それは正直ですか?または、アプリケーションの中で、そしておそらくはレーキのタスクで 'connecting_ip'が見えるようにする必要があるとき、私は何をすべきですか? – ylluminate