Module: SimpleEmailPreview

Defined in:
lib/simple_email_preview.rb,
lib/simple_email_preview/engine.rb,
lib/simple_email_preview/version.rb,
lib/simple_email_preview/view_hooks.rb,
app/models/simple_email_preview/preview.rb,
lib/simple_email_preview/delivery_handler.rb,
lib/generators/simple_email_preview/install_generator.rb,
app/controllers/simple_email_preview/emails_controller.rb,
app/presenters/simple_email_preview/preview_list_presenter.rb,
app/controllers/simple_email_preview/application_controller.rb,
lib/generators/simple_email_preview/update_previews_generator.rb

Defined Under Namespace

Modules: EmailsHelper, Generators, MainAppRouteDelegator Classes: ApplicationController, DeliveryHandler, EmailsController, Engine, Preview, PreviewListPresenter, ViewHooks

Constant Summary collapse

VERSION =
'1.0.0'.freeze

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.view_hooksSimpleEmailPreview::ViewHooks (readonly)

Returns:



47
48
49
# File 'lib/simple_email_preview.rb', line 47

def view_hooks
  @view_hooks
end

Class Method Details

.before_render(&block) ⇒ Object



73
74
75
76
# File 'lib/simple_email_preview.rb', line 73

def before_render(&block)
  inline_main_app_routes!
  ((@hooks ||= {})[:before_render] ||= []) << block
end

.find_preview_classes(dir) ⇒ Object



54
55
56
57
# File 'lib/simple_email_preview.rb', line 54

def find_preview_classes(dir)
  return [] unless File.directory?(dir)
  Dir.chdir(dir) { Dir['**/*_preview.rb'].map { |p| p.sub(/\.rb$/, '').camelize } }
end

.inline_main_app_routes!Object



78
79
80
81
82
83
# File 'lib/simple_email_preview.rb', line 78

def inline_main_app_routes!
  unless ::SimpleEmailPreview::EmailsController.instance_variable_get(:@inlined_routes)
    ::SimpleEmailPreview::EmailsController.helper ::SimpleEmailPreview::MainAppRouteDelegator
    ::SimpleEmailPreview::EmailsController.instance_variable_set(:@inlined_routes, true)
  end
end

.layout=(layout) ⇒ Object



59
60
61
62
63
64
65
# File 'lib/simple_email_preview.rb', line 59

def layout=(layout)
  [::SimpleEmailPreview::ApplicationController, ::SimpleEmailPreview::EmailsController].each { |ctrl| ctrl.layout layout }
  if layout && layout !~ %r{^simple_email_preview/}
    # inline application routes if using an app layout
    inline_main_app_routes!
  end
end

.preview_classes=(classes) ⇒ Object



49
50
51
52
# File 'lib/simple_email_preview.rb', line 49

def preview_classes=(classes)
  @preview_classes = classes
  SimpleEmailPreview::Preview.load_all(classes)
end

.run_before_render(mail, preview) ⇒ Object



67
68
69
70
71
# File 'lib/simple_email_preview.rb', line 67

def run_before_render(mail, preview)
  (defined?(@hooks) && @hooks[:before_render] || []).each do |block|
    block.call(mail, preview)
  end
end

.setup {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:



85
86
87
# File 'lib/simple_email_preview.rb', line 85

def setup
  yield self
end