Sha256: 7058cae42d9f4a40ff1fd5c2d18b2a122f251ec92233bbf5616209e740cd5ef7

Contents?: true

Size: 1.34 KB

Versions: 28

Compression:

Stored size: 1.34 KB

Contents

module RailsEmailPreview
  module Generators
    class UpdatePreviewsGenerator < Rails::Generators::Base
      desc "creates app/mailer_previews/NEW_MAILER_preview.rb for each new mailer"
      def generate_mailer_previews
        previews_dir = 'app/mailer_previews/'
        empty_directory previews_dir
        Dir['app/mailers/*.rb'].each do |p|
          basename = File.basename(p, '.rb')
          if basename == 'application_mailer' || File.read(p) !~ /\bdef\s/
            shell.say_status :skip, basename, :blue
            next
          end
          preview_path = File.join(previews_dir, "#{basename}_preview.rb")
          if File.exists?(preview_path)
            shell.say_status :exist, preview_path, :blue
            next
          end
          create_file preview_path, mailer_class_body(basename.camelize)
        end
      end

      private

      def mailer_class_body(mailer_class_name)
<<-RUBY
class #{mailer_class_name}Preview
#{(mailer_methods(mailer_class_name) * "\n\n").chomp}
end
RUBY
      end

      def mailer_methods(mailer_class_name)
        mailer_class = mailer_class_name.constantize
        ::RailsEmailPreview::Preview.mail_methods(mailer_class).map do |m|
<<-RUBY
  def #{m}
    #{mailer_class_name}.#{m.to_s} #{mailer_class.instance_method(m).parameters.map(&:second) * ', '}
  end
RUBY
        end
      end

    end
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
rails_email_preview-2.2.2 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-2.2.1 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-2.2.0 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-2.1.0 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-2.0.6 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-2.0.4 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-2.0.3 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-2.0.2 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-2.0.1 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-1.0.3 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-1.0.2 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-1.0.1 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-1.0.0 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.31 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.30 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.29 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.28 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.27 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.26 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.25 lib/generators/rails_email_preview/update_previews_generator.rb