ob_start for ruby

ob_start是PHP中非常重要的一个函数,实现缓存,生成静态页面等等,都离不开ob_start
我发现在ruby中没有对应的这个功能,但我利用ruby的block特性实现了它.若有什么问题或建议,欢迎提出。
#title:ob_start for ruby 
#author:axgle (2006-10-25) 
#version:1.0 
#see:http://php.net/ob_start 
  
class Ob 
  require 'stringio'  
  def self.start(&block) 
   $stdout=@buffer=StringIO.new  
   block.call  
 end
 
 def self.get_contents 
  $stdout = STDOUT 
  @buffer.rewind 
  @buffer.read 
 end 
 
end 
  
def ob_start(&block) 
 Ob.start(&block) 
end 
  
def ob_get_contents 
 Ob.get_contents 
end 
  
  
#使用举例(example): 
ob_start do 
  
 #输出缓冲开始 
 p "aaa" #输出缓冲1 
 puts "bbb" #输出缓冲2 
 print File.open(__FILE__).read #输出缓冲3,文件本身的内容(也可以是其他文件,来自数据库的数据等等) 
 #require "other" 
  
 data=ob_get_contents #获取所有的输出缓冲内容,输出缓冲结束 
  
 #以下是标准输出 
 puts data.size 
 puts data.include?("aaa")  
 puts data.include?("bbb") 
 puts data  
  
end 

你可能感兴趣的:(PHP,.net,Ruby)