After lots of experimentation I have landed on this as my proposal for how we have our Go binary find its Ruby counterpart: just have it grab it from the $PATH! @evanphx showed me this neat trick where by borrowing a couple of helper methods from `exec` and tweaking them we can get logic that will do a $PATH lookup that excludes "ourself". This allows us to have both `vagrant` executables on the path... and means that switching between Gogo-by-default or Legacy-by-default is just a matter of tweaking $PATH order. It _also_ means that we don't need any different lookup logic for "release mode" vs "development mode" which is what I was looking at before this solution. In order to continue to facilitate development, I've generated a binstub for vagrant using `bundle binstubs vagrant --standalone --path ./binstubs`, and I've updated the Nix development setup to prepend this directory to the $PATH. NOTE: Non-Nix users will need to modify their $PATH in the same way to get the same behavior in development.
Vagrant
- Website: https://www.vagrantup.com/
- Source: https://github.com/hashicorp/vagrant
- HashiCorp Discuss: https://discuss.hashicorp.com/c/vagrant/24
Vagrant is a tool for building and distributing development environments.
Development environments managed by Vagrant can run on local virtualized platforms such as VirtualBox or VMware, in the cloud via AWS or OpenStack, or in containers such as with Docker or raw LXC.
Vagrant provides the framework and configuration format to create and manage complete portable development environments. These development environments can live on your computer or in the cloud, and are portable between Windows, Mac OS X, and Linux.
Quick Start
Package dependencies: Vagrant requires bsdtar and curl to be available on
your system PATH to run successfully.
For the quick-start, we'll bring up a development machine on VirtualBox because it is free and works on all major platforms. Vagrant can, however, work with almost any system such as OpenStack, VMware, Docker, etc.
First, make sure your development machine has VirtualBox installed. After this, download and install the appropriate Vagrant package for your OS.
To build your first virtual environment:
vagrant init hashicorp/bionic64
vagrant up
Note: The above vagrant up command will also trigger Vagrant to download the
bionic64 box via the specified URL. Vagrant only does this if it detects that
the box doesn't already exist on your system.
Getting Started Guide
To learn how to build a fully functional development environment, follow the getting started guide.
Installing from Source
If you want the bleeding edge version of Vagrant, we try to keep main pretty stable and you're welcome to give it a shot. Please review the installation page here.
Contributing to Vagrant
Please take time to read the HashiCorp Community Guidelines and the Vagrant Contributing Guide.
Then you're good to go!