DefaultUrlOptions = Hash.new
def DefaultUrlOptions.configure!(request = {})
default_url_options = DefaultUrlOptions
return if configured?
if request.is_a?(Hash)
host = request[:host] || request['host']
port = request[:port] || request['port']
protocol = request[:protocol] || request['protocol']
else
host = request.host
port = request.port
protocol = DefaultUrlOptions.protocol
end
host.gsub!(/^www\./, '') if host
default_url_options[:protocol] = protocol
default_url_options[:host] = host
default_url_options[:port] = port unless(port==80 or port=='80')
default_url_options.keys.each{|key| default_url_options.delete(key) unless default_url_options[key]}
Rails.configuration.action_mailer.default_url_options = default_url_options
ActionMailer::Base.default_url_options = default_url_options
default_url_options
ensure
Rails.logger.info("DefaultUrlOptions = #{ DefaultUrlOptions.inspect }")
configured!
end
def DefaultUrlOptions.initialize!(options = {})
DefaultUrlOptions.configure!(options)
DefaultUrlOptions.configured = 0
end
def DefaultUrlOptions.configured=(boolean)
@configured = !!boolean
end
def DefaultUrlOptions.configured!
@configured ||= 0
@configured += 1
end
def DefaultUrlOptions.configured
@configured ||= 0
end
def DefaultUrlOptions.configured=(value)
@configured = Integer(value)
end
def DefaultUrlOptions.configured?
@configured ||= 0
@configured != 0
end
def DefaultUrlOptions.protocol
DefaultUrlOptions[:protocol]
end
def DefaultUrlOptions.host
DefaultUrlOptions[:host]
end
def DefaultUrlOptions.port
DefaultUrlOptions[:port]
end
DefaultUrlOptions.initialize!(
:protocol => 'http',
:host => 'your.app.domain'
)