Class: Apartment::Railtie

Inherits:
Rails::Railtie
  • Object
show all
Defined in:
lib/apartment/railtie.rb

Class Method Summary collapse

Class Method Details

.header_trust_warning?(elevator_class, opts) ⇒ Boolean

Whether the Header elevator trust warning should fire. Class method for testability.

Returns:

  • (Boolean)


70
71
72
# File 'lib/apartment/railtie.rb', line 70

def self.header_trust_warning?(elevator_class, opts)
  elevator_class <= Apartment::Elevators::Header && !opts[:trusted]
end

.resolve_elevator_class(elevator) ⇒ Object

Resolve an elevator symbol/string to its class. Class method for testability. Accepts a Class directly (pass-through) or a symbol/string for lookup.



76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/apartment/railtie.rb', line 76

def self.resolve_elevator_class(elevator)
  return elevator if elevator.is_a?(Class)

  class_name = "Apartment::Elevators::#{elevator.to_s.camelize}"
  require("apartment/elevators/#{elevator}")
  class_name.constantize
rescue NameError, LoadError => e
  available = Dir[File.join(__dir__, 'elevators', '*.rb')]
    .filter_map { |f| File.basename(f, '.rb').then { |name| name unless name == 'generic' } }
  raise(Apartment::ConfigurationError,
        "Unknown elevator '#{elevator}': #{e.message}. " \
        "Available elevators: #{available.join(', ')}")
end