Chef Console: avoid multiple ruby problem on Windows
The Chef installer for Windows adds ruby.exe and to PATH. If you have installed ruby environment, which ruby is used when you enter ruby to your MS-DOS prompt?
To avoid such problem, I created a Chef console with a simple bat file.
Chef adds two folders to PATH
When you install Chef client (http://www.getchef.com/chef/install/), many files are deployed to C:\opscode\chef and the following 2 folders are added to PATH:
C:\opscode\chef\binChef related programs such as
chef-solo,knife.C:\opscode\chef\embedded\binUNIX related programs such as
ruby.exe,perl.exe,ls.exe,cat.exe.
Conflicts with existing Ruby environment
I have ruby.exe in C:\Ruby200-x64\bin which is added to PATH.
Which ruby is used when I run ruby or gem install xxxx from my MS-DOS prompt?
If we first install Ruby and then install Chef, C:\Ruby200-x64\bin\gem is executed.
If we first install Chef and then install Ruby, C:\opscode\chef\embedded\bin\gem is executed.
It's very confusing.
Let's use Chef console
To solve this problem, I created a "Chef console".
1. Create a bat file
Save following file as C:\opscode\chefenv.bat.
@ECHO OFF
SET PATH=c:\opscode\chef\bin;c:\opscode\chef\embedded\bin
SET PATH=%PATH%;c:\windows\system32;c:\windows
title Chef Env
chef-solo -v
2. Create a shortcut file
Create a shortcut file to this bat.
- Target:
C:\Windows\System32\cmd.exe /K C:\opscode\chefenv.bat - Start in: Anywhere. (My document, path to chef repository and so on)
(/K means "Carries out the command specified by string and continues.")
How to use
When you double click the shortcut file, a command prompt appears with restricted PATH.

You can execute chef-solo and knife.
Now, you can safely remove c:\opscode\chef\bin and C:\opscode\chef\embedded\bin from PATH.
Let's enjoy!