I’m working on a Rails app and am looking to include some functionality from ‘Getting the Hostname or IP in Ruby on Rails‘ that I asked.
I’m having problems getting it to work. I was under the impression that I should just make a file in the lib directory, so I named it ‘get_ip.rb’, with the contents:
require 'socket' module GetIP def local_ip orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true # turn off reverse DNS resolution temporarily UDPSocket.open do |s| s.connect '64.233.187.99', 1 s.addr.last end ensure Socket.do_not_reverse_lookup = orig end end
I had also tried defining GetIP as a class but when I do the usual ruby script/console, I’m not able to use the local_ip method at all. Any ideas?
You haven’t described how you’re trying to use the method, so I apologize in advance if this is stuff you already know.
The methods on a module never come into use unless the module is included into a class. Instance methods on a class require there to be an instance of the class. You probably want a class method instead. And the file itself should be loaded, generally through the require statement.
If the following code is in the file getip.rb,
Then you should be able to run it by saying,