Sha256: 5128d6eb216f682c0b899f4f3fa4abd57fc53e85d06d5ac8594e66118cc8dc84

Contents?: true

Size: 804 Bytes

Versions: 51

Compression:

Stored size: 804 Bytes

Contents

# frozen_string_literal: true

module Motor
  module Configs
    module WriteToFile
      THREAD_POOL = Concurrent::FixedThreadPool.new(1)
      FILE_PATH = Motor::Configs::FILE_PATH

      module_function

      def call
        return if Rails.env.test?
        return if THREAD_POOL.queue_length.positive?

        THREAD_POOL.post do
          ActiveRecord::Base.logger.silence do
            write_with_lock
          end
        rescue StandardError => e
          Rails.logger.error(e)
        end
      end

      def write_with_lock
        File.open(Rails.root.join(FILE_PATH), 'w') do |file|
          file.flock(File::LOCK_EX)

          YAML.dump(Motor::Configs::BuildConfigsHash.call, file)

          file.flock(File::LOCK_UN)

          file
        end.close
      end
    end
  end
end

Version data entries

51 entries across 51 versions & 1 rubygems

Version Path
motor-admin-0.1.104 lib/motor/configs/write_to_file.rb
motor-admin-0.1.103 lib/motor/configs/write_to_file.rb
motor-admin-0.1.102 lib/motor/configs/write_to_file.rb
motor-admin-0.1.101 lib/motor/configs/write_to_file.rb
motor-admin-0.1.100 lib/motor/configs/write_to_file.rb
motor-admin-0.1.99 lib/motor/configs/write_to_file.rb
motor-admin-0.1.98 lib/motor/configs/write_to_file.rb
motor-admin-0.1.97 lib/motor/configs/write_to_file.rb
motor-admin-0.1.96 lib/motor/configs/write_to_file.rb
motor-admin-0.1.93 lib/motor/configs/write_to_file.rb
motor-admin-0.1.92 lib/motor/configs/write_to_file.rb
motor-admin-0.1.91 lib/motor/configs/write_to_file.rb
motor-admin-0.1.90 lib/motor/configs/write_to_file.rb
motor-admin-0.1.89 lib/motor/configs/write_to_file.rb
motor-admin-0.1.88 lib/motor/configs/write_to_file.rb
motor-admin-0.1.87 lib/motor/configs/write_to_file.rb
motor-admin-0.1.86 lib/motor/configs/write_to_file.rb
motor-admin-0.1.85 lib/motor/configs/write_to_file.rb
motor-admin-0.1.84 lib/motor/configs/write_to_file.rb
motor-admin-0.1.83 lib/motor/configs/write_to_file.rb