Class: RailsMail::FrontendsController

Inherits:
ActionController::Base
  • Object
show all
Defined in:
app/controllers/rails_mail/frontends_controller.rb

Overview

rubocop:disable Rails/ApplicationController

Constant Summary collapse

STATIC_ASSETS =
{
  css: {
    # tailwind: RailsMail::Engine.root.join("app", "frontend", "rails_mail", "vendor", "tailwind", "tailwind.min.css"),
    style: RailsMail::Engine.root.join("app", "frontend", "rails_mail", "style.css")
  },
  js: {
    tailwind: RailsMail::Engine.root.join("app", "frontend", "rails_mail", "vendor", "tailwind", "tailwind.min.js")
  },
  png: {
    rails_mail_logo: RailsMail::Engine.root.join("app", "assets", "images", "rails_mail", "rails-mail.png")
  }
}.freeze
MODULE_OVERRIDES =

Additional JS modules that don’t live in app/frontend/rails_mail/modules

{
  application: RailsMail::Engine.root.join("app", "frontend", "rails_mail", "application.js"),
  stimulus: RailsMail::Engine.root.join("app", "frontend", "rails_mail", "vendor", "stimulus.js"),
  turbo: RailsMail::Engine.root.join("app", "frontend", "rails_mail", "vendor", "turbo.js"),
  action_cable: RailsMail::Engine.root.join("app", "frontend", "rails_mail", "vendor", "action_cable.js"),
  "date-fns": RailsMail::Engine.root.join("app", "frontend", "rails_mail", "vendor", "date-fns.js")
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.js_modulesObject



25
26
27
28
29
30
31
# File 'app/controllers/rails_mail/frontends_controller.rb', line 25

def self.js_modules
  if Rails.env.production?
    @_js_modules ||= load_js_modules
  else
    load_js_modules
  end
end

.load_js_modulesObject



33
34
35
36
37
38
# File 'app/controllers/rails_mail/frontends_controller.rb', line 33

def self.load_js_modules
  RailsMail::Engine.root.join("app", "frontend", "rails_mail", "modules").children.select(&:file?).each_with_object({}) do |file, modules|
    key = File.basename(file.basename.to_s, ".js").to_sym
    modules[key] = file
  end.merge(MODULE_OVERRIDES)
end

Instance Method Details

#moduleObject

Raises:

  • (ActionController::RoutingError)


48
49
50
51
52
# File 'app/controllers/rails_mail/frontends_controller.rb', line 48

def module
  raise(ActionController::RoutingError, "Not Found") if params[:format] != "js"

  render file: self.class.js_modules[params[:name].to_sym] || raise(ActionController::RoutingError, "Not Found")
end

#staticObject



44
45
46
# File 'app/controllers/rails_mail/frontends_controller.rb', line 44

def static
  render file: STATIC_ASSETS.dig(params[:format].to_sym, params[:name].to_sym) || raise(ActionController::RoutingError, "Not Found")
end