Hey guys,
I’m a Rails developer (guy behind the back-end side of Cart66) and I was wondering if anyone knew of a quick way to get a site in Local talking to a local Rails app running in macOS. I know Local uses VirtualBox and Docker behind the scenes, so I’m thinking it might just be some tweaks to the network settings somewhere in there.
Here is the scenario, we have a WordPress plugin that connects to our Rails app and I’d like to be able to use Local to do my local testing of all of this (instead of MAMP, which I’ve used up until now). So if I have a site in Local with a URL of http://cart66-site.local, it’d be cool if I could have it communicate with my local Rails app running at http://api.cart66.test. I haven’t dipped my toe too far into the Docker pool yet, so I’m not entirely sure if some network settings can be changed in there and/or VirtualBox to make this happen. If so, that would be cool.
I’ve been looking into this a while and I’ve run into some blockers so it’s only half of a solution for now.
Here’s what you can do:
You need the IP that every container will see your computer as (what’s traditional 127.0.0.1). See IP of HOST available within site container? for instructions on how to get that. It’s as simple as running one command in Terminal.
Open Local and right-click on the site you want to connect to your Rails app
Click “Open Site SSH”
Enter nano /etc/hosts
Add a new hosts entry for the Rails app. It should look something like:
10.0.2.2 my-local-rails-app.localhost
Once you do that, you should be good.
The one major caveat is the fact that this will not persist the next time the site is restarted in Local. We’d like to add the ability to run scripts on certain site events like stop, start, restart, etc.
Dude! That totally worked! Thanks man, this is great! I keep Local running pretty much all the time, so yeah, I’ll just have to keep in mind that I’ll need to do this whenever I do end up restarting or creating a new site. As you said, it’d be great to run scripts whenever a new container is spun up to make this even easier in the future.