Sha256: 7651a6922b6cd95122803b9812219ddbeed623e66f8c600ac0ac650a4194d99a

Contents?: true

Size: 1.3 KB

Versions: 34

Compression:

Stored size: 1.3 KB

Contents

module Picky

  module Backends

    class Memory
      
      def json *args
        JSON.new *args
      end

      # Memory-based index files dumped in the JSON format.
      #
      class JSON < Basic

        # Uses the extension "json".
        #
        def extension
          :json
        end

        # Loads the index hash from json format.
        #
        def load
          MultiJson.decode ::File.open(cache_path, 'r') # , symbolize_keys: true # SYMBOLS.
        end

        # Dumps the index internal backend in json format.
        #
        def dump internal
          create_directory cache_path
          dump_json internal
        end

        # Dump JSON into the cache file.
        #
        # TODO Add IO option:
        # MultiJson.encode(object, io: out_file)
        #
        def dump_json internal
          ::File.open(cache_path, 'w') do |out_file|
            # If using Yajl, this will stream write to out_file.
            # Note: But it fails on oj.
            #
            # MultiJson.dump internal, [out_file]
            out_file.write MultiJson.encode internal
          end
        end

        # A json file does not provide retrieve functionality.
        #
        def retrieve
          raise "Can't retrieve from JSON file. Use text file."
        end

      end

    end

  end

end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
picky-4.19.7 lib/picky/backends/memory/json.rb
picky-4.19.6 lib/picky/backends/memory/json.rb
picky-4.19.5 lib/picky/backends/memory/json.rb
picky-4.19.4 lib/picky/backends/memory/json.rb
picky-4.19.3 lib/picky/backends/memory/json.rb
picky-4.19.2 lib/picky/backends/memory/json.rb
picky-4.19.1 lib/picky/backends/memory/json.rb
picky-4.19.0 lib/picky/backends/memory/json.rb
picky-4.18.0 lib/picky/backends/memory/json.rb
picky-4.17.1 lib/picky/backends/memory/json.rb
picky-4.17.0 lib/picky/backends/memory/json.rb
picky-4.16.0 lib/picky/backends/memory/json.rb
picky-4.15.1 lib/picky/backends/memory/json.rb
picky-4.15.0 lib/picky/backends/memory/json.rb
picky-4.14.0 lib/picky/backends/memory/json.rb
picky-4.13.1 lib/picky/backends/memory/json.rb
picky-4.13.0 lib/picky/backends/memory/json.rb
picky-4.12.13 lib/picky/backends/memory/json.rb
picky-4.12.12 lib/picky/backends/memory/json.rb
picky-4.12.11 lib/picky/backends/memory/json.rb