OBstart for ruby
OBstartはPHPにおいて非常に重要な関数であり、キャッシュを実現したり、静的なページを生成したりと、ob_を離れられません。start
ルビーにはこの機能がないことを発見しましたが、ルビーのblock特性を利用して実現しました。
ルビーにはこの機能がないことを発見しましたが、ルビーの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