Rails: Singleton: Message of the Day
A simple Ruby Singleton
class that provides a mechanism for app wide messaging.
module MessageOfTheDay
extend self
@motd_active = ENV['MOTD_ACTIVE'] rescue nil
@motd_start = (ActiveSupport::TimeZone.new 'Eastern Time (US & Canada)').parse(ENV['MOTD_START']).to_datetime.strftime("%Y-%m-%d %H:%M %Z") rescue nil
@motd_stop = (ActiveSupport::TimeZone.new 'Eastern Time (US & Canada)').parse(ENV['MOTD_STOP']).to_datetime.strftime("%Y-%m-%d %H:%M %Z") rescue nil
@motd_description = ENV['MOTD_DESCRIPTION'] rescue nil
@motd_footer = ENV['MOTD_FOOTER'] rescue nil
def motd_active
@motd_active
end
def turn_on
@motd_active = "true"
end
def turn_off
@motd_active = "false"
end
def switch
if @motd_active.eql?("true")
turn_off
else
turn_off
end
end
def motd_start
@motd_start
end
def set_motd_start(start)
@motd_start = start
end
def motd_stop
@motd_stop
end
def set_motd_stop(stop)
@motd_stop = stop
end
def motd_description
@motd_description
end
def set_motd_description(description)
@motd_description = description
end
def motd_footer
@motd_footer
end
def set_motd_footer(footer)
@motd_footer = footer
end
def content
I18n.t("session.motd", :start=> @motd_start,:stop=> @motd_stop,:description=> @motd_description,:footer=> @motd_footer).html_safe
end
def active?
return false if @motd_active.nil?
return false unless @motd_active.downcase.eql?("true")
start_time = DateTime.strptime(@motd_start, "%Y-%m-%d %H:%M %Z") rescue nil?
stop_time = DateTime.strptime(@motd_stop, "%Y-%m-%d %H:%M %Z") rescue nil?
return false if start_time.nil?
return false if stop_time.nil?
return false if start_time > stop_time
return false if Time.now > stop_time
return true
end
end
Comment