I am editing my earlier post, I can get around this problem by changing the config file:
environment_path '/var/chef/environments'
However, that leads to other issues - with cookbook version constraints in the environment:
Chef::Exceptions::IllegalVersionConstraint: Environment cookbook version constraints not allowed in chef-solo
So I will answer my post with: "One cannot use environments with chef-shell (v12, standalone or solo sessions).
…
I am trying to use an environment with chef-shell, and wondering if I am doing this correctly.
Adding “environment ‘default’” to the configuration seems to work with chef-client, but not with chef-shell - I get an exception
/opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/chef-12.12.15/lib/chef/environment.rb:255:in `directory?': no implicit conversion of Array into String (TypeError)
I took a look at this using pry, clearly it is getting a list of paths for the environment, and the ruby method expects a string type (not the array type),
255: def self.load_from_file(name)
256: binding.pry
=> 257: unless File.directory?(Chef::Config[:environment_path])
258: raise Chef::Exceptions::InvalidEnvironmentPath, "Environment path '#{Chef::Config[:environment_path]}' is invalid"
259: end
....edit....
[1] pry(Chef::Environment)> name
=> "default"
[2] pry(Chef::Environment)> Chef::Config[:environment_path]
=> ["/var/chef/environments", "/root/setup/environments"]
[3] pry(Chef::Environment)> File.directory?(Chef::Config[:environment_path])
TypeError: no implicit conversion of Array into String
from (pry):3:in `directory?'