Sha256: 6bfa4ec77ec157551eef3a2a3a8c77f12529a0972d58c894e4ccb3e41551ccd2

Contents?: true

Size: 1.8 KB

Versions: 17

Compression:

Stored size: 1.8 KB

Contents

# frozen_string_literal: true

module ComfortableMexicanSofa::Seeds::File
  class Importer < ComfortableMexicanSofa::Seeds::Importer

    def initialize(from, to = from)
      super
      self.path = ::File.join(ComfortableMexicanSofa.config.seeds_path, from, "files/")
    end

    def import!
      Dir["#{path}[^_]*"].each do |file_path|
        filename = ::File.basename(file_path)

        file = site.files.with_attached_attachment
          .where("active_storage_blobs.filename" => filename).references(:blob).first ||
          site.files.new

        # We need to track actual file and its attributes
        fresh_file = false

        if File.exist?(attrs_path = File.join(path, "_#{filename}.yml"))
          if fresh_seed?(file, attrs_path)
            fresh_file = true

            attrs = YAML.safe_load(File.read(attrs_path))
            category_ids = category_names_to_ids(file, attrs.delete("categories"))
            file.attributes = attrs.merge(
              category_ids: category_ids
            )
          end
        end

        if fresh_seed?(file, file_path)
          fresh_file = true

          file_handler = File.open(file_path)
          file.file = {
            io:           file_handler,
            filename:     filename,
            content_type: MimeMagic.by_magic(file_handler)
          }
        end

        if fresh_file
          if file.save
            message = "[CMS SEEDS] Imported File \t #{file_path}"
            ComfortableMexicanSofa.logger.info(message)
          else
            message = "[CMS SEEDS] Failed to import File \n#{file.errors.inspect}"
            ComfortableMexicanSofa.logger.warn(message)
          end
        end

        seed_ids << file.id
      end

      # cleaning up
      site.files.where("id NOT IN (?)", seed_ids).destroy_all
    end

  end
end

Version data entries

17 entries across 17 versions & 6 rubygems

Version Path
comfortable_mexican_sofa-2.0.19 lib/comfortable_mexican_sofa/seeds/file/importer.rb
PixelForce_ETS-0.0.2 lib/comfortable_mexican_sofa/seeds/file/importer.rb
PixelForce_ETS-0.0.1 lib/comfortable_mexican_sofa/seeds/file/importer.rb
kcyEtsTest2-0.0.4 lib/comfortable_mexican_sofa/seeds/file/importer.rb
kcyEtsTest2-0.0.3 lib/comfortable_mexican_sofa/seeds/file/importer.rb
kcyEtsTest2-0.0.2 lib/comfortable_mexican_sofa/seeds/file/importer.rb
kcyEtsTest2-0.0.1 lib/comfortable_mexican_sofa/seeds/file/importer.rb
kcyEtsTest-0.0.1 lib/comfortable_mexican_sofa/seeds/file/importer.rb
kcyEtsTest-2.2.19 lib/comfortable_mexican_sofa/seeds/file/importer.rb
ComfortableMexicanSofa-2.0.18 lib/comfortable_mexican_sofa/seeds/file/importer.rb
kcy1-1.0 lib/comfortable_mexican_sofa/seeds/file/importer.rb
comfortable_mexican_sofa-2.0.18 lib/comfortable_mexican_sofa/seeds/file/importer.rb
comfortable_mexican_sofa-2.0.17 lib/comfortable_mexican_sofa/seeds/file/importer.rb
comfortable_mexican_sofa-2.0.16 lib/comfortable_mexican_sofa/seeds/file/importer.rb
comfortable_mexican_sofa-2.0.15 lib/comfortable_mexican_sofa/seeds/file/importer.rb
comfortable_mexican_sofa-2.0.14 lib/comfortable_mexican_sofa/seeds/file/importer.rb
comfortable_mexican_sofa-2.0.13 lib/comfortable_mexican_sofa/seeds/file/importer.rb