Sha256: 16a589a25718452ea726cc1fbab612e2a3336d014db1b374bd3adf889bf7830a

Contents?: true

Size: 1.32 KB

Versions: 18

Compression:

Stored size: 1.32 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"}
end
RUBY
      end

      def mailer_methods(mailer_class_name)
        mailer_class = mailer_class_name.constantize
        mailer_class.instance_methods(false).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

18 entries across 18 versions & 1 rubygems

Version Path
rails_email_preview-0.2.15 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.14 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.13 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.12 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.11 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.10 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.9 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.8 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.7 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.6 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.5 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.4 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.3 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.2 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.1 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.2.0 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.1.7 lib/generators/rails_email_preview/update_previews_generator.rb
rails_email_preview-0.1.6 lib/generators/rails_email_preview/update_previews_generator.rb