Search code examples
ruby-on-railsip-addressgeocoding

Get real IP address in local Rails development environment


I have Rails 2.3.8, Ruby 1.8.7, Mongrel Web Server and MySQL database.

I am in the development mode and I need to find the real IP address

When I use request.remote_ip I am getting the IP as 127.0.0.1

I know I am getting 127.0.0.1 because I am developing on the local machine.. but is there a way to get the real ip-address even if I am on the local machine?

I am using these mentioned below in my controller and all I get is 127.0.0.1 with all of them in the view.

request.remote_ip
request.env["HTTP_X_FORWARDED_FOR"]
request.remote_addr
request.env['REMOTE_ADDR']

Solution

  • As far as I can see there is no standard method for getting the remote address of your local machine. If you need the remote address for (testing) your geocoding, I suggest adding 127.0.0.1 to your database table that matches IP addresses with locations.

    As a last resort you could also hard code your remote address. E.g. like this:

    class ApplicationController < ActionController::Base
      def remote_ip
        if request.remote_ip == '127.0.0.1'
          # Hard coded remote address
          '123.45.67.89'
        else
          request.remote_ip
        end
      end
    end
    
    class MyController < ApplicationController
      def index
        @client_ip = remote_ip()
      end
    end