Module: RailsEmailPreview

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

Overview

simply require this file to enable Comfortable Mexican Sofa integration read more github.com/glebm/rails_email_preview/wiki/Edit-Emails-with-Comfortable-Mexican-Sofa

Defined Under Namespace

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

Constant Summary collapse

VERSION =
'2.2.3'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.view_hooksRailsEmailPreview::ViewHooks (readonly)



48
49
50
# File 'lib/rails_email_preview.rb', line 48

def view_hooks
  @view_hooks
end

Class Method Details

.before_render(&block) ⇒ Object



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

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

.find_preview_classes(dir) ⇒ Object



55
56
57
58
# File 'lib/rails_email_preview.rb', line 55

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/rails_email_preview.rb', line 78

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

.layout=(layout) ⇒ Object



60
61
62
63
64
65
66
# File 'lib/rails_email_preview.rb', line 60

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

.preview_classes=(classes) ⇒ Object



50
51
52
53
# File 'lib/rails_email_preview.rb', line 50

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

.rails_supports_csp_nonce?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


90
91
92
93
# File 'lib/rails_email_preview.rb', line 90

def rails_supports_csp_nonce?
  @rails_supports_csp_nonce = (Rails.gem_version >= Gem::Version.new('5.2.0')) if @rails_supports_csp_nonce.nil?
  @rails_supports_csp_nonce
end

.run_before_render(mail, preview) ⇒ Object



68
69
70
71
72
# File 'lib/rails_email_preview.rb', line 68

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/rails_email_preview.rb', line 85

def setup
  yield self
end