docs: function _from_file (fname_tmpl, opts, cfg_so_far, cb) {
    var vals = {
      env: process.env.NODE_ENV || 'development'
    };
  
    _.merge (vals, cfg_so_far);
    
    var fname = interpolator.parse (fname_tmpl, vals);
  
    // check existence
    fs.access (fname, function (err) {
      if (err) {
        if (opts.ignore_missing) {
          return cb (null, {});
        }
        else {
          return cb (err);
        }
      }
  
      var obj = {};
    
      try {
        obj = importFresh (fname);
      } 
      catch (e) {
        return cb (e);
      }
  
      // expand variables in loaded object
      _expand (obj, vals, cb);
    });
  }