fork download
  1. class Log
  2. def output(s)
  3. puts s
  4. end
  5. end
  6.  
  7. module Decoratable
  8. def decos
  9. @decos ||= []
  10. end
  11.  
  12. def output(s)
  13. puts decos.inject(s){ |acc, deco| deco[acc] }
  14. end
  15. end
  16.  
  17.  
  18. #usage example
  19.  
  20. class Log; prepend Decoratable end
  21. timeStamp = ->s{ "#{Time.now} #{s}" }
  22. pid = ->s{ "[#{Process.pid}] #{s}" }
  23.  
  24. log = Log.new
  25. log.decos << timeStamp << pid
  26. log.output 'aaa'
  27. log.output 'bbb'
  28.  
  29. log2 = Log.new
  30. log2.decos << pid << timeStamp
  31. log2.output 'aaa'
  32. log2.output 'bbb'
Success #stdin #stdout 0.05s 9656KB
stdin
Standard input is empty
stdout
[26880] 2016-08-04 07:18:23 +0000 aaa
[26880] 2016-08-04 07:18:23 +0000 bbb
2016-08-04 07:18:23 +0000 [26880] aaa
2016-08-04 07:18:23 +0000 [26880] bbb