Skip to content

Instantly share code, notes, and snippets.

@yitsushi
Created September 8, 2010 12:34
Show Gist options
  • Save yitsushi/570065 to your computer and use it in GitHub Desktop.
Save yitsushi/570065 to your computer and use it in GitHub Desktop.
class Queue
@@list = []
def self.add(entry)
@@list << entry
end
def self.list
@@list
end
end
module Online
def self.send_queue
puts " send queue [#{::Queue.list.length}]" unless ::Queue.list.empty?
::Queue.list.each do |msg|
puts " #{msg[:to]} => #{msg[:subject]}"
end
end
def self.send_message(to, subject, msg)
puts "Send message via Email"
self.send_queue
puts "#{to} => #{subject}"
end
end
module Offline
def self.send_queue
end
def self.send_message(to, subject, msg)
puts "Store message into queue"
::Queue.add({:to => to, :subject => subject, :msg => msg})
end
end
$status = Online
$status.send_message('[email protected]', 'Message I.', 'body')
$status = Offline
$status.send_message('[email protected]', 'Message II.', 'body')
$status.send_message('[email protected]', 'Message III.', 'body')
$status.send_message('[email protected]', 'Message IV.', 'body')
$status.send_message('[email protected]', 'Message V.', 'body')
$status = Online
$status.send_message('[email protected]', 'Message VI.', 'body')
=begin
# Output:
Send message via Email
[email protected] => Message I.
Store message into queue
Store message into queue
Store message into queue
Store message into queue
Send message via Email
send queue [4]
[email protected] => Message II.
[email protected] => Message III.
[email protected] => Message IV.
[email protected] => Message V.
[email protected] => Message VI.
=end
@yitsushi
Copy link
Author

yitsushi commented Sep 8, 2010

It's a very stupid example but understandable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment