Sha256: 5de408d15ba98d4d8f1aeaeecfd65f9311c0fb389b9b53e8259f87d71ff5aac0

Contents?: true

Size: 1.54 KB

Versions: 14

Compression:

Stored size: 1.54 KB

Contents

module EffectiveEmailTemplates
  class TemplateImporter
    def self.invoke(importer = new, overwrite: false)
      importer.invoke(overwrite)
    end

    def invoke(overwrite = false)
      Dir[Rails.root.join('app', 'views', '**', '*.liquid')].each do |liquid_template_filepath|
        slug = File.basename(liquid_template_filepath, '.liquid')
        template = Effective::EmailTemplate.find_or_initialize_by(slug: slug)

        update_template(template, liquid_template_filepath) if (template.persisted? && overwrite) || template.new_record?
      end
    end

  private

    def add_template_meta(file, template)
      template.attributes = File.open(file) do |f|
        attr = YAML.load(f)
        attr.is_a?(Hash) ? attr : {}
      end
      template
    end

    def extract_template_body(file)
      contents = file.read
      match = contents.match(/(---+(.|\n)+---+)/)

      contents.gsub(match[1], '').strip if match
    end

    def print_errors(template, liquid_template_filepath)
      puts 'ERROR -- There was one or more validation errors while uploading:'
      puts "  Email Template: #{liquid_template_filepath}"
      template.errors.each do |attribute, error|
        puts "  -> #{attribute} #{error}"
      end
    end

    def update_template(template, liquid_template_filepath)
      file = File.new(liquid_template_filepath, 'r')

      template = add_template_meta(file, template)
      template.body = extract_template_body(file)
      template.save

      print_errors(template, liquid_template_filepath) unless template.valid?
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
effective_email_templates-0.6.1 lib/effective_email_templates/template_importer.rb
effective_email_templates-0.6.0 lib/effective_email_templates/template_importer.rb
effective_email_templates-0.5.1 lib/effective_email_templates/template_importer.rb
effective_email_templates-0.5.0 lib/effective_email_templates/template_importer.rb
effective_email_templates-0.4.6 lib/effective_email_templates/template_importer.rb
effective_email_templates-0.4.5 lib/effective_email_templates/template_importer.rb
effective_email_templates-0.4.4 lib/effective_email_templates/template_importer.rb
effective_email_templates-0.4.3 lib/effective_email_templates/template_importer.rb
effective_email_templates-0.4.2 lib/effective_email_templates/template_importer.rb
effective_email_templates-0.4.1 lib/effective_email_templates/template_importer.rb
effective_email_templates-0.4.0 lib/effective_email_templates/template_importer.rb
effective_email_templates-0.3.5 lib/effective_email_templates/template_importer.rb
effective_email_templates-0.3.4 lib/effective_email_templates/template_importer.rb
effective_email_templates-0.3.3 lib/effective_email_templates/template_importer.rb