Sha256: 648d9196f55ed300aa39c1f08db076b1b25ae59eac2a4647e5516586b588a163

Contents?: true

Size: 1.13 KB

Versions: 22

Compression:

Stored size: 1.13 KB

Contents

# frozen_string_literal: true

#
# Copyright 2013 whiteleaf. All rights reserved.
#

require "open-uri"
require "openssl"

# open-uri で http → https へのリダイレクトを有効にする
require "open_uri_redirections"

# open-uri に渡すオプションを生成(必要に応じて extensions/*.rb でオーバーライドする)
def make_open_uri_options(add)
  add.merge(ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE)
end

#
# 安全なファイルの書き込み
#
# ファイルに直接上書きしないで、一旦別名で作成してからファイル名変更をすることで、
# ファイル書き込み中のPCクラッシュ等でデータが飛ばない様にする
#
require "securerandom"

def File.write(path, string, *options, mode: nil)
  return super if mode

  dirpath = File.dirname(path)
  temp_path = File.join(dirpath, SecureRandom.hex(15))
  if File.extname(path) == ".yaml" && File.basename(dirpath) != Downloader::SECTION_SAVE_DIR_NAME
    backup = "#{path}.backup"
  end

  res = super(temp_path, string, *options)
  if backup
    super(backup, string, *options)
  end
  File.rename(temp_path, path)
  res
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
narou-3.8.1 lib/extension.rb
narou-3.8.0 lib/extension.rb
narou-3.7.2 lib/extension.rb
narou-3.7.1 lib/extension.rb
narou-3.7.0 lib/extension.rb
narou-3.6.0 lib/extension.rb
narou-3.5.1 lib/extension.rb
narou-3.5.0.1 lib/extension.rb
narou-3.5.0 lib/extension.rb
narou-3.4.8 lib/extension.rb
narou-3.4.7.1 lib/extension.rb
narou-3.4.7 lib/extension.rb
narou-3.4.6.1 lib/extension.rb
narou-3.4.6 lib/extension.rb
narou-3.4.5 lib/extension.rb
narou-3.4.3 lib/extension.rb
narou-3.4.2 lib/extension.rb
narou-3.4.1 lib/extension.rb
narou-3.4.0 lib/extension.rb
narou-3.3.2 lib/extension.rb