Sha256: 020bff34ce11edec751be7ee723a3ca1429385d8cc1b42a9e097efe86c10e21d

Contents?: true

Size: 1.48 KB

Versions: 10

Compression:

Stored size: 1.48 KB

Contents

module EffectiveEmailTemplates
  class Importer
    def self.import(quiet: false)
      new().execute(overwrite: false, quiet: quiet)
    end

    def self.overwrite(quiet: false)
      new().execute(overwrite: true, quiet: quiet)
    end

    def execute(overwrite:, quiet: false)
      Dir[Rails.root.join('app', 'views', '**', '*.liquid')].each do |filepath|
        name = File.basename(filepath, '.liquid')
        email_template = Effective::EmailTemplate.find_or_initialize_by(template_name: name)

        if email_template.persisted? && !overwrite
          puts("SKIPPED #{filename(filepath)}") unless quiet
          next
        end

        save(email_template, filepath, quiet: quiet)
      end
    end

    private

    def save(email_template, filepath, quiet:)
      file = File.new(filepath, 'r')

      attributes = begin
        content = YAML.load(file)
        content.kind_of?(Hash) ? content : {}
      end

      body = File.open(file) do |f|
        content = f.read
        match = content.match(/(---+(.|\n)+---+)/)
        content.gsub(match[1], '').strip if match
      end

      email_template.assign_attributes(attributes)
      email_template.assign_attributes(body: body)

      if email_template.save
        puts("SUCCESS #{filename(filepath)}") unless quiet
      else
        puts "ERROR #{filename(filepath)}: #{email_template.errors.full_messages.to_sentence}"
      end
    end

    def filename(filepath)
      filepath.sub(Rails.root.to_s + '/app/', '')
    end

  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
effective_email_templates-1.0.11 lib/effective_email_templates/importer.rb
effective_email_templates-1.0.10 lib/effective_email_templates/importer.rb
effective_email_templates-1.0.9 lib/effective_email_templates/importer.rb
effective_email_templates-1.0.8 lib/effective_email_templates/importer.rb
effective_email_templates-1.0.7 lib/effective_email_templates/importer.rb
effective_email_templates-1.0.6 lib/effective_email_templates/importer.rb
effective_email_templates-1.0.5 lib/effective_email_templates/importer.rb
effective_email_templates-1.0.4 lib/effective_email_templates/importer.rb
effective_email_templates-1.0.3 lib/effective_email_templates/importer.rb
effective_email_templates-1.0.2 lib/effective_email_templates/importer.rb