Sha256: b2a39545686149467a80ede832ca3f6f9f76c87f36eb06994cca6c627fd267a3

Contents?: true

Size: 1.58 KB

Versions: 3

Compression:

Stored size: 1.58 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)
      ActionController::Base.view_paths.map(&:path).each do |path|
        Dir[Rails.root.join(path, '**', '*_mailer/', '*.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
    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

3 entries across 3 versions & 1 rubygems

Version Path
effective_email_templates-1.1.0 lib/effective_email_templates/importer.rb
effective_email_templates-1.0.13 lib/effective_email_templates/importer.rb
effective_email_templates-1.0.12 lib/effective_email_templates/importer.rb