• Stars
    star
    11
  • Rank 1,641,799 (Top 34 %)
  • Language
    Crystal
  • License
    ISC License
  • Created almost 6 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Extends `File` to provide `atomic_write()`.

atomic_write.cr

Docs GitHub release Crystal CI

Extends File to provide atomic_write(), atomic_replace().

An atomic write creates a new file at a temporary path. It then writes the new file contents to that file. Lastly it renames it to the original path. This dramatically reduces the opportunity for file corruption.

Installation

Add this to your application's shard.yml:

dependencies:
  atomic_write:
    github: chris-huxtable/atomic_write.cr

Usage

require "atomic_write"

Atomic write:

File.atomic_write("some/path") { |fd| fd << "hello world" }

Atomic append:

File.atomic_write("some/path", append: true) { |fd| fd << "hello world" }

Atomic copy:

File.atomic_copy("some/src/path", "some/dst/path")

Atomic replace:

File.atomic_replace("some/src/path") { |src_fd, dst_fd| dst_fd << "hello" << src_fd.gets_to_end }

Contributing

  1. Fork it ( https://github.com/chris-huxtable/atomic_write.cr/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors