I've just setup a workstation on windows, and I'm getting the following error when I try to edit a data bag;
$ knife data bag edit tomhodder tomhodder
ERROR: RuntimeError: Please set EDITOR environment variable
tldr; SOLUTION: use a text editor that understands windows paths ("C:/Users/whatever/file"), rather than unix ("/C/Users/whatever/file"), e.g. export EDITOR=notepad
I've tried various combinations of vi, vim, /bin/vim and /bin/vi like so;
$ export EDITOR=/bin/vim
but its still rather stubbornly returning;
$ knife data bag edit tomhodder tomhodder
ERROR: RuntimeError: Please set EDITOR environment variable
Interestingly, I can't get it to bite on any of the options versions of providing the EDITOR, using "-e" or "--editor";
$ knife data bag edit tomhodder tomhodder -e vim
ERROR: RuntimeError: Please set EDITOR environment variable
$ knife data bag edit tomhodder tomhodder --editor /bin/vim
ERROR: RuntimeError: Please set EDITOR environment variable
just for the record, "/bin/vim" exists and is executable, and /bin is on the path.
So the relevant code is on line 161 of the file;
lib/chef/knife/core/ui.rb
$ knife data bag edit tomhodder tomhodder -VV
DEBUG: Signing the request as tomhodder
DEBUG: Sending HTTP Request via GET to api.opscode.com:443/organizations/class01
/data/tomhodder/tomhodder
DEBUG: ---- HTTP Status and Header Data: ----
DEBUG: HTTP 1.1 200 OK
DEBUG: server: ngx_openresty
DEBUG: date: Mon, 20 May 2013 11:59:13 GMT
DEBUG: content-type: application/json; charset=utf-8
DEBUG: transfer-encoding: chunked
DEBUG: connection: close
DEBUG: status: 200 OK
DEBUG: content-encoding: gzip
DEBUG: ---- End HTTP Status/Header Data ----
DEBUG: decompressing gzip response
/gems/1.9.1/gems/chef-11.4.0/lib/chef/knife/cor e/ui.rb:161:in `edit_data': Please set EDITOR environment variable (RuntimeError ) from ...
So adding a debugging line;
msg("#{config[:editor]} #{tf.path}")
raise "Please set EDITOR environment variable" unless system("#{config[:editor]}
produces this;
$ knife data bag edit tomhodder tomhodder
vim C:/Users/hodder/AppData/Local/Temp/knife-edit-110618731114210157125.js
ERROR: RuntimeError: Please set EDITOR environment variable
So that is indicating that the EDITOR requires a text editor that understands windoze paths.
Doh! notepad it is then;
echo "export EDITOR=notepad" >> ~/.bashrc
and then...
source ~/.bashrc
knife data bag edit tomhodder tomhodder
woo! success. (or as much success as 2 hours using windows 7 can be considered to be)
No comments:
Post a Comment
Don't be nasty. Being rude is fine.