Skip to content

Commit

Permalink
Tradução do tópico - Extensions to File da página Active Support Core…
Browse files Browse the repository at this point in the history
… Extensions. campuscode#798
  • Loading branch information
rohan-techfreak committed Oct 23, 2022
1 parent 103d3dd commit 912c6a8
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions pt-BR/active_support_core_extensions.md
Original file line number Diff line number Diff line change
Expand Up @@ -3981,27 +3981,27 @@ Extensions to `File`

### `atomic_write`

With the class method [`File.atomic_write`][File.atomic_write] you can write to a file in a way that will prevent any reader from seeing half-written content.
Com o método de classe [`File.atomic_write`][File.atomic_write] você pode gravar em um arquivo de uma maneira que impeça qualquer leitor de ver o conteúdo semi-escrito.

The name of the file is passed as an argument, and the method yields a file handle opened for writing. Once the block is done `atomic_write` closes the file handle and completes its job.
O nome do arquivo é passado como um argumento, e o método produz um identificador de arquivo aberto para gravação. Uma vez que o bloco é feito `atomic_write` fecha o identificador de arquivo e conclui seu trabalho.

For example, Action Pack uses this method to write asset cache files like `all.css`:
Por exemplo, O Action Pack usa esse método para gravar arquivos de cache de ativos como `all.css`:

```ruby
File.atomic_write(joined_asset_path) do |cache|
cache.write(join_asset_file_contents(asset_paths))
end
```

To accomplish this `atomic_write` creates a temporary file. That's the file the code in the block actually writes to. On completion, the temporary file is renamed, which is an atomic operation on POSIX systems. If the target file exists `atomic_write` overwrites it and keeps owners and permissions. However there are a few cases where `atomic_write` cannot change the file ownership or permissions, this error is caught and skipped over trusting in the user/filesystem to ensure the file is accessible to the processes that need it.
Para realizar isso `atomic_write` cria um arquivo temporário. Esse é o arquivo em que o código no bloco realmente grava. Após a conclusão, o arquivo temporário é renomeado, que é uma operação atômica em sistemas POSIX. Se o arquivo de destino existir `atomic_write` sobrescreve e mantém proprietários e permissões. No entanto, existem alguns casos em que `atomic_write` não pode alterar a propriedade ou as permissões do arquivo, este erro é detectado e ignorado confiando no usuário/sistema de arquivos para garantir que o arquivo esteja acessível aos processos que precisam dele.

NOTE. Due to the chmod operation `atomic_write` performs, if the target file has an ACL set on it this ACL will be recalculated/modified.
NOTE. Devido à operação chmod `atomic_write` executa, se o arquivo de destino tiver uma ACL definida, esta ACL será recalculada/modificada.

WARNING. Note you can't append with `atomic_write`.
WARNING. Observe que você não pode anexar com `atomic_write`.

The auxiliary file is written in a standard directory for temporary files, but you can pass a directory of your choice as second argument.
O arquivo auxiliar é escrito em um diretório padrão para arquivos temporários, mas você pode passar um diretório de sua escolha como segundo argumento.

NOTE: Defined in `active_support/core_ext/file/atomic.rb`.
NOTE: Definido em `active_support/core_ext/file/atomic.rb`.

[File.atomic_write]: https://api.rubyonrails.org/classes/File.html#method-c-atomic_write

Expand Down

0 comments on commit 912c6a8

Please sign in to comment.