code: func (h *Helper) BundleInstallCommand(gemfileContent, gemfileLockContent string) (*command.Model, error) {
  	tmpDir, err := h.ensureTmpDir()
  	if err != nil {
  		return nil, err
  	}
  
  	gemfilePth := path.Join(tmpDir, "Gemfile")
  	if err := fileutil.WriteStringToFile(gemfilePth, gemfileContent); err != nil {
  		return nil, err
  	}
  
  	if gemfileLockContent != "" {
  		gemfileLockPth := path.Join(tmpDir, "Gemfile.lock")
  		if err := fileutil.WriteStringToFile(gemfileLockPth, gemfileLockContent); err != nil {
  			return nil, err
  		}
  	}
  
  	h.gemfilePth = gemfilePth
  
  	// use '--gemfile=<gemfile>' flag to specify Gemfile path
  	// ... In general, bundler will assume that the location of the Gemfile(5) is also the project root,
  	// and will look for the Gemfile.lock and vendor/cache relative to it. ...
  	return command.New("bundle", "install", "--gemfile="+gemfilePth), nil
  }
docs: // BundleInstallCommand ...