Sha256: 0c31a5ce58fcddb27a54eff52475ea8fd8d6b970be366b764811bb2b81251a8a

Contents?: true

Size: 998 Bytes

Versions: 1

Compression:

Stored size: 998 Bytes

Contents

module LetsCert

  # Mixin for IOPmugin subclasses that handle files
  # @author Sylvain Daubert
  module FileIOPluginMixin

    # Load data from file named +#name+
    # @return [Hash]
    def load
      logger.debug { "Loading #{@name}" }

      begin
        content = File.read(@name)
      rescue Errno::ENOENT => ex
        logger.info { "no #{@name} file" }
        return self.class.empty_data
      end

      load_from_content(content)
    end

    # @abstract
    # @param [String] _content
    # @return [Hash]
    def load_from_content(_content)
      raise NotImplementedError
    end

    # Save data to file +#name+
    # @param [Hash] data
    # @return [void]
    def save_to_file(data)
      return if data.nil?

      logger.info { "saving #{@name}" }
      begin
        File.open(name, 'w') do |f|
          f.write(data)
        end
      rescue Errno => ex
        @logger.error { ex.message }
        raise Error, "Error when saving #{@name}"
      end
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
letscert-0.4.2 lib/letscert/io_plugins/file_io_plugin_mixin.rb