    # File lib/chef/provider/template.rb, line 49
          def action_create
            render_with_context(template_location) do |rendered_template|
              rendered(rendered_template)
              update = ::File.exist?(@new_resource.path)
              if update && content_matches?
                Chef::Log.debug("#{@new_resource} content has not changed.")
                set_all_access_controls
              else
                description = []
                action_message = update ? "update #{@current_resource} from #{short_cksum(@current_resource.checksum)} to #{short_cksum(@new_resource.checksum)}" :
                  "create #{@new_resource}"
                description << action_message
                description << diff_current(rendered_template.path)
                converge_by(description) do
                  backup
                  FileUtils.cp(rendered_template.path, @new_resource.path)
                  Chef::Log.info("#{@new_resource} updated content")
                  access_controls.set_all!
                  stat = ::File.stat(@new_resource.path)

                  # template depends on the checksum not changing, and updates it
                  # itself later in the code, so we cannot set it here, as we do with
                  # all other < File child provider classes
                  @new_resource.owner(stat.uid)
                  @new_resource.mode(stat.mode & 07777)
                  @new_resource.group(stat.gid)
                end
              end
            end
          end