Why on earth would I want to run a Facebook application on my laptop? Surely these apps are meant to be used by lots of users and they shouldn’t stop running when I turn my computer off!
The only reason you’ll need to do this is during development. I run my apps on my laptop, behind a firewall, either at home, or on the road – so my IP address isn’t static. This allows me to make changes locally and immediately test them out without needing to copy to a server.
For this technique, you do need to have access to a unix server of some sort that does have a static IP address (or a fixed DNS name) that allows you to create SSH tunnels. With SSH client access, this should be possible with the low end hosting providers. Dreamhost costs less than $10 per month.
Now we setup to get the remote server machine to listen on port 15000 and forward requests to this machine on port 5000.
1 ssh -p 22 -NT -g -R *:15000:127.0.0.1:5000 <user>@<server> -v
I add the -v parameter so I can see a verbose output. Sometimes it takes Facebook a few seconds to connect to the tunnel, and the verbose option will allow you to see that when it works.
I add this command to a tunnel script I have and anytime I want to test out my app, I fire up the tunnel, then my application code, then access it on Facebook to try it out. If I have internet access, I can work on my Facebook applications.
If you can run a web server on your laptop, you can use this technique. This is not a Rails specific solution. I’ve seen information on the web for forwarding SMTP ports for email servers.
I run this on Windows using a copy of SSH that comes with cwRsync