Module: RailsMaint::MaintenancePageHelper

Included in:
CLI, Middleware
Defined in:
lib/rails_maint/helpers/maintenance_page_helper.rb

Constant Summary collapse

ALLOWED_LOCALE_PATTERN =
/\A[a-z]{2}(-[A-Z]{2})?\z/

Instance Method Summary collapse

Instance Method Details

#available_localesObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/rails_maint/helpers/maintenance_page_helper.rb', line 21

def available_locales
  base_path = File.expand_path('..', __dir__)
  locale_dir = File.join(base_path, 'assets/locales')
  app_locale_dir = 'config/locales'

  gem_locales = Dir.glob("#{locale_dir}/*.yml").map { |f| File.basename(f, '.yml') }
  app_locales = if Dir.exist?(app_locale_dir)
                  Dir.glob("#{app_locale_dir}/rails_maint.*.yml")
                     .map { |f| File.basename(f, '.yml').split('.').last }
                else
                  []
                end

  (gem_locales + app_locales).uniq
end

#default_maintenance_page_content(locale = 'en') ⇒ Object

Raises:

  • (ArgumentError)


10
11
12
13
14
15
16
17
18
19
# File 'lib/rails_maint/helpers/maintenance_page_helper.rb', line 10

def default_maintenance_page_content(locale = 'en')
  raise ArgumentError, "Invalid locale format: #{locale.inspect}" unless locale.to_s.match?(ALLOWED_LOCALE_PATTERN)

  base_path = File.expand_path('..', __dir__)
  css_content = File.read(File.join(base_path, 'assets/default.css'))
  html_template = File.read(File.join(base_path, 'assets/maintenance.html'))
  translations = load_translations(base_path, locale)

  apply_template(html_template, css_content, locale, translations)
end